Symfony2:ESI setMaxAge 缓存
Symfony2: ESI setMaxAge Cache
我有一个控制器,其 Action 在树枝中呈现
{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}
操作本身如下所示:
/**
* @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 过期后呈现?
在 Symfony2 中,您需要做一些事情才能激活 esi 缓存。
1) 在 app/config/config.yml
中确保您激活了带有片段路径的 esi。
framework:
esi: { enabled: true }
fragments: { path: /_proxy }
2) 用 AppCache 对象包装内核
// web/app.php
$kernel = new AppCache($kernel);
3) 设置 AppCache 配置
// 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,
);
}
}
关于您的问题,如果它正在缓存您的响应,唯一的问题是每次刷新页面时它都会重新加载。确保配置 allow_reload
属性 设置为 false。
您可以在此处阅读更多相关信息:
http://symfony.com/doc/current/book/http_cache.html
我有一个控制器,其 Action 在树枝中呈现
{{ render_esi(controller('MyWebsiteBundle:Element:header')) }}
操作本身如下所示:
/**
* @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 过期后呈现?
在 Symfony2 中,您需要做一些事情才能激活 esi 缓存。
1) 在 app/config/config.yml
中确保您激活了带有片段路径的 esi。
framework:
esi: { enabled: true }
fragments: { path: /_proxy }
2) 用 AppCache 对象包装内核
// web/app.php
$kernel = new AppCache($kernel);
3) 设置 AppCache 配置
// 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,
);
}
}
关于您的问题,如果它正在缓存您的响应,唯一的问题是每次刷新页面时它都会重新加载。确保配置 allow_reload
属性 设置为 false。
您可以在此处阅读更多相关信息: http://symfony.com/doc/current/book/http_cache.html