API 平台和 AWS CloudFront 的 HTTP 缓存失效
HTTP cache invalidation with API Platform and AWS CloudFront
我正在尝试使用 API 平台和 AWS CloudFront 实现 HTTP 缓存失效,正如我在 API Platform documentation:
中看到的那样
Support for reverse proxies other than Varnish can easily be added by implementing the ApiPlatform\Core\HttpCache\PurgerInterface
我已经编写了一个实现代码,但现在我无法制作内置缓存失效系统 - 应该是事件侦听器 ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener
- 它只是继续注入 ApiPlatform\Core\HttpCache\VarnishPurger
。
我基本上做了什么,在 config/services.yml
- 启用了自动装配:
ApiPlatform\Core\HttpCache\PurgerInterface: '@App\ApiPlatform\HttpCache\CloudFrontPurger'
ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener:
arguments:
$purger: '@App\ApiPlatform\HttpCache\CloudFrontPurger'
有什么想法吗?
好的!发现了问题。 PurgeHttpCacheListener
正在使用服务 ID,因此无法自动装配 according to the Symfony docs。
来自vendor/api-platform/core/src/Bridge/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.xml
:
<service id="api_platform.doctrine.listener.http_cache.purge" class="ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener">
<argument type="service" id="api_platform.http_cache.purger" />
<argument type="service" id="api_platform.iri_converter" />
<argument type="service" id="api_platform.resource_class_resolver" />
<tag name="doctrine.event_listener" event="preUpdate" />
<tag name="doctrine.event_listener" event="onFlush" />
<tag name="doctrine.event_listener" event="postFlush" />
</service>
解决方法很简单。在您的 service.yml
中,只需使用其服务 ID 注入它,如下所示:
api_platform.http_cache.purger:
class: App\ApiPlatform\HttpCache\CloudFrontPurger
我正在尝试使用 API 平台和 AWS CloudFront 实现 HTTP 缓存失效,正如我在 API Platform documentation:
中看到的那样Support for reverse proxies other than Varnish can easily be added by implementing the
ApiPlatform\Core\HttpCache\PurgerInterface
我已经编写了一个实现代码,但现在我无法制作内置缓存失效系统 - 应该是事件侦听器 ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener
- 它只是继续注入 ApiPlatform\Core\HttpCache\VarnishPurger
。
我基本上做了什么,在 config/services.yml
- 启用了自动装配:
ApiPlatform\Core\HttpCache\PurgerInterface: '@App\ApiPlatform\HttpCache\CloudFrontPurger'
ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener:
arguments:
$purger: '@App\ApiPlatform\HttpCache\CloudFrontPurger'
有什么想法吗?
好的!发现了问题。 PurgeHttpCacheListener
正在使用服务 ID,因此无法自动装配 according to the Symfony docs。
来自vendor/api-platform/core/src/Bridge/Symfony/Bundle/Resources/config/doctrine_orm_http_cache_purger.xml
:
<service id="api_platform.doctrine.listener.http_cache.purge" class="ApiPlatform\Core\Bridge\Doctrine\EventListener\PurgeHttpCacheListener">
<argument type="service" id="api_platform.http_cache.purger" />
<argument type="service" id="api_platform.iri_converter" />
<argument type="service" id="api_platform.resource_class_resolver" />
<tag name="doctrine.event_listener" event="preUpdate" />
<tag name="doctrine.event_listener" event="onFlush" />
<tag name="doctrine.event_listener" event="postFlush" />
</service>
解决方法很简单。在您的 service.yml
中,只需使用其服务 ID 注入它,如下所示:
api_platform.http_cache.purger:
class: App\ApiPlatform\HttpCache\CloudFrontPurger