From fe885ec88eccd683643e611222fee70b1a8812c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mu=CC=88ller?= Date: Wed, 18 May 2022 16:33:47 +0200 Subject: [PATCH 1/5] FEATURE: Runtime cache for `src` method of `AssetImageSource` This will make multiple calls/uses in fusion a noop after the first use, preventing unnecessary database queries. --- Classes/Domain/AssetImageSource.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Classes/Domain/AssetImageSource.php b/Classes/Domain/AssetImageSource.php index e37ab75..b07680e 100644 --- a/Classes/Domain/AssetImageSource.php +++ b/Classes/Domain/AssetImageSource.php @@ -45,6 +45,13 @@ class AssetImageSource extends AbstractScalableImageSource */ protected $request; + /** + * Runtime cache for the src uri for the asset + * + * @var string|null + */ + protected $srcCache = null; + /** * @param ImageInterface $asset * @param string|null $title @@ -112,6 +119,10 @@ public function src(): string return ''; } + if ($this->srcCache !== null) { + return $this->srcCache; + } + $width = $this->getCurrentWidth(); $height = $this->getCurrentHeight(); @@ -136,10 +147,7 @@ public function src(): string $this->request ); - if ($thumbnailData === null) { - return ''; - } - - return $thumbnailData['src']; + $this->srcCache = ($thumbnailData === null) ? '' : $thumbnailData['src']; + return $this->srcCache; } } From ec652edd3e7083ea46f9c6ec2a8dbe742df98c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mu=CC=88ller?= Date: Wed, 18 May 2022 16:39:33 +0200 Subject: [PATCH 2/5] Add missing end of sentence marker for styleCI --- Classes/Domain/AssetImageSource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Domain/AssetImageSource.php b/Classes/Domain/AssetImageSource.php index b07680e..efe61ba 100644 --- a/Classes/Domain/AssetImageSource.php +++ b/Classes/Domain/AssetImageSource.php @@ -46,7 +46,7 @@ class AssetImageSource extends AbstractScalableImageSource protected $request; /** - * Runtime cache for the src uri for the asset + * Runtime cache for the src uri for the asset. * * @var string|null */ From 19b9dbd4322348550b77b230cd3aa036715e2537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mu=CC=88ller?= Date: Wed, 18 May 2022 16:40:35 +0200 Subject: [PATCH 3/5] Add new line for styleCI --- Classes/Domain/AssetImageSource.php | 1 + 1 file changed, 1 insertion(+) diff --git a/Classes/Domain/AssetImageSource.php b/Classes/Domain/AssetImageSource.php index efe61ba..bdc3288 100644 --- a/Classes/Domain/AssetImageSource.php +++ b/Classes/Domain/AssetImageSource.php @@ -148,6 +148,7 @@ public function src(): string ); $this->srcCache = ($thumbnailData === null) ? '' : $thumbnailData['src']; + return $this->srcCache; } } From 71aab4924b5a56623bf5970435d1f52ffe3196aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mu=CC=88ller?= Date: Wed, 18 May 2022 16:43:53 +0200 Subject: [PATCH 4/5] Remove superfluous spaces --- Classes/Domain/AssetImageSource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Domain/AssetImageSource.php b/Classes/Domain/AssetImageSource.php index bdc3288..e904ed3 100644 --- a/Classes/Domain/AssetImageSource.php +++ b/Classes/Domain/AssetImageSource.php @@ -148,7 +148,7 @@ public function src(): string ); $this->srcCache = ($thumbnailData === null) ? '' : $thumbnailData['src']; - + return $this->srcCache; } } From 7444ea85430071613ea6703de60d6cc33572aeb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mu=CC=88ller?= Date: Thu, 2 Nov 2023 22:43:49 +0100 Subject: [PATCH 5/5] Empty srcCache on cloning --- Classes/Domain/AssetImageSource.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Classes/Domain/AssetImageSource.php b/Classes/Domain/AssetImageSource.php index e904ed3..9d13b2c 100644 --- a/Classes/Domain/AssetImageSource.php +++ b/Classes/Domain/AssetImageSource.php @@ -50,7 +50,7 @@ class AssetImageSource extends AbstractScalableImageSource * * @var string|null */ - protected $srcCache = null; + private $srcCache = null; /** * @param ImageInterface $asset @@ -151,4 +151,9 @@ public function src(): string return $this->srcCache; } + + public function __clone(): void + { + $this->srcCache = null; + } }