Symfony2选择性ESI缓存

时间:2012-07-11 11:46:52

标签: php caching symfony varnish esi

我正在使用Liip Cache Control bundle来处理项目中的缓存。通过使用此捆绑包,您可以像这样配置缓存:

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(内部)路由都没有缓存。但我现在想要缓存一个内部请求。知道如何配置这个吗?我找不到实际用于执行此请求的路由。

亲切的问候,

大安

1 个答案:

答案 0 :(得分:2)

所有ESI调用都通过_internal路由(example from Using ESI in Symfony2)处理:

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

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

  

使用ESI时,[...]生成相应的_internal路线,   将http_kernel注入您的控制器并使用   HttpKernel :: generateInternalUri,其中的参数与树枝中的参数相同   渲染标记。

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