From 0b0beba73206ebcbd7ff2bcfe0a560ccda3001f4 Mon Sep 17 00:00:00 2001 From: Kamil Madejski Date: Wed, 4 Jul 2018 16:22:06 +0200 Subject: [PATCH] Changed variation cache to be siteaccess and request context aware (#2382) --- .../Imagine/Cache/AliasGeneratorDecorator.php | 24 +++++++++++++++++-- .../Resources/config/image.yml | 2 ++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/eZ/Bundle/EzPublishCoreBundle/Imagine/Cache/AliasGeneratorDecorator.php b/eZ/Bundle/EzPublishCoreBundle/Imagine/Cache/AliasGeneratorDecorator.php index 7ec945ab068..f3e6533d724 100644 --- a/eZ/Bundle/EzPublishCoreBundle/Imagine/Cache/AliasGeneratorDecorator.php +++ b/eZ/Bundle/EzPublishCoreBundle/Imagine/Cache/AliasGeneratorDecorator.php @@ -8,8 +8,10 @@ use eZ\Publish\API\Repository\Values\Content\Field; use eZ\Publish\API\Repository\Values\Content\VersionInfo; +use eZ\Publish\Core\MVC\Symfony\SiteAccess; use eZ\Publish\SPI\Variation\VariationHandler; use Psr\Cache\CacheItemPoolInterface; +use Symfony\Component\Routing\RequestContext; /** * Persistence Cache layer for AliasGenerator. @@ -26,14 +28,28 @@ class AliasGeneratorDecorator implements VariationHandler */ private $cache; + /** + * @var \eZ\Publish\Core\MVC\Symfony\SiteAccess + */ + private $siteAccess; + + /** + * @var \Symfony\Component\Routing\RequestContext + */ + private $requestContext; + /** * @param \eZ\Publish\SPI\Variation\VariationHandler $aliasGenerator * @param \Psr\Cache\CacheItemPoolInterface $cache + * @param \eZ\Publish\Core\MVC\Symfony\SiteAccess $siteAccess + * @param \Symfony\Component\Routing\RequestContext $requestContext */ - public function __construct(VariationHandler $aliasGenerator, CacheItemPoolInterface $cache) + public function __construct(VariationHandler $aliasGenerator, CacheItemPoolInterface $cache, SiteAccess $siteAccess, RequestContext $requestContext) { $this->aliasGenerator = $aliasGenerator; $this->cache = $cache; + $this->siteAccess = $siteAccess; + $this->requestContext = $requestContext; } /** @@ -68,7 +84,11 @@ public function getVariation(Field $field, VersionInfo $versionInfo, $variationN private function getCacheKey(Field $field, VersionInfo $versionInfo, $variationName) { return sprintf( - 'ez-image-variation-%d-%d-%s-%s', + 'ez-image-variation-%s-%s-%s-%d-%d-%d-%s-%s', + $this->siteAccess->name, + $this->requestContext->getScheme(), + $this->requestContext->getHost(), + $this->requestContext->getScheme() === 'https' ? $this->requestContext->getHttpsPort() : $this->requestContext->getHttpPort(), $versionInfo->getContentInfo()->id, $versionInfo->id, $field->id, diff --git a/eZ/Bundle/EzPublishCoreBundle/Resources/config/image.yml b/eZ/Bundle/EzPublishCoreBundle/Resources/config/image.yml index 1618d19a57b..168d223c480 100644 --- a/eZ/Bundle/EzPublishCoreBundle/Resources/config/image.yml +++ b/eZ/Bundle/EzPublishCoreBundle/Resources/config/image.yml @@ -88,6 +88,8 @@ services: arguments: - '@ezpublish.image_alias.imagine.variation.imagine_alias_generator' - '@ezpublish.cache_pool' + - '@ezpublish.siteaccess' + - '@router.request_context' ezpublish.image_alias.imagine.variation.imagine_alias_generator: class: '%ezpublish.image_alias.imagine.variation.imagine_alias_generator.class%'