php - Symfony2 选择性 ESI 缓存

标签 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(内部)路由都不会被缓存。但是我现在我想缓存一个内部请求。任何想法,我可以如何配置呢?我找不到实际用于执行此请求的路由。

亲切的问候,

大安

最佳答案

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

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

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

When using ESI, [...] To generate the corresponding _internal route, inject the http_kernel into your controller and use HttpKernel::generateInternalUri with the parameters as in the twig render tag.



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

关于php - Symfony2 选择性 ESI 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11431967/

相关文章:

javascript - 从 Javascript|jQuery 和 Symfony2 项目中的 URL 获取值

php - MySQL IN 关键字和 Zend Framework 2 更新查询

php - SF3 [翻译][控制台] 翻译 :update yaml nesting

php - 如何从命令行正确运行 php

python - 使用函数对象作为字典键

java - 使用 spring @Caching 时缓存层的顺序是什么?

drupal - 在 Drupal 中创建定时缓存

php - Prestashop 从 html2pdf 发送邮件附件 pdf

php - 使用 PHP 连接到数据库时出错

php - 单击警报框上的“确定”进入下一页