首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2: ESI setMaxAge缓存

Symfony2: ESI setMaxAge缓存
EN

Stack Overflow用户
提问于 2015-06-03 08:21:16
回答 1查看 688关注 0票数 2

我有一个控制器,它的动作是在树枝上呈现的

{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}

行动本身看上去如下:

代码语言:javascript
复制
/**
     * @return Response
     */
    public function headerAction()
    {
        $currentLocale = $this->getCurrentLocale();

        $response = $this->render('MyWebsiteBundle:Element:header.html.twig', array(
            'currentLocale' => $currentLocale,
            'myTime' => time()
        ));
        $response->setPublic();
        $response->setSharedMaxAge(3600);

        return $response;
    }

当我重新加载浏览器时,"myTime"每次都会发生变化。

如何使用setShardeMaxAge(),使Twig只在MaxAge过期后才能呈现?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 08:48:43

在Symfony2中,为了激活esi缓存,您需要做一些事情。

1)在app/config/config.yml中,确保使用片段路径激活了esi。

代码语言:javascript
复制
framework:
    esi: { enabled: true }
    fragments: { path: /_proxy }

2)用AppCache对象封装内核

代码语言:javascript
复制
// web/app.php
$kernel = new AppCache($kernel); 

3)设置AppCache配置

代码语言:javascript
复制
// app/AppCache.php
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;

class AppCache extends HttpCache
{
    protected function getOptions()
    {
        return array(
            'debug'                  => false,
            'default_ttl'            => 0,
            'private_headers'        => array('Authorization', 'Cookie'),
            'allow_reload'           => false,
            'allow_revalidate'       => false,
            'stale_while_revalidate' => 2,
            'stale_if_error'         => 60,
        );
    }
}

关于您的问题,如果它缓存您的响应,唯一的问题是每次刷新页面时都会重新加载。确保configuration allow_reload属性设置为false。

你可以在这里读到更多关于它的信息:cache.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30614573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档