Symfony2选择性ESI缓存


Symfony2 Selective ESI caching

我正在使用Liip缓存控制捆绑包来处理我的项目中的缓存。通过使用这个捆绑包,你可以像这样配置缓存:

liip_cache_control:
    rules:
        - { path: /admin, controls: { private: true}, vary: [Accept-Encoding] }
        - { path: ^/_internal, controls: {private: true, max_age: 0}}
        - { path: ^/([^/]*)/live/time(.*), controls: { public: true, max_age: 1, s_maxage: 1    }, vary: [Accept-Encoding,Cookie] }

现在,每个esi(内部)路由都没有缓存。但我现在想缓存一个内部请求。知道我该如何配置吗?我找不到实际用于执行此请求的路由。

亲切问候,

Daan

所有ESI调用都通过内部路由处理(例如在Symfony2中使用ESI):

# app/config/routing.yml
_internal:
    resource: "@FrameworkBundle/Resources/config/routing/internal.xml"
    prefix:   /_internal

LiipCacheControlBundle的文档提到了如何生成内部路由:

当使用ESI时,[…]为了生成相应的内部路由,将httpkernel注入控制器并使用HttpKernel::generateInternalUri,参数与分支中的参数相同render标记。

您是否尝试将适当的规则添加到liip_cache_control列表中?我想它应该以"/''uinternal"开头(尝试使用generateInternalUri查看实际生成的内容)。