我正在使用Symfony 2.6 HTTP缓存,我正在遵循Symfony cook book here
中的所有说明但是,为什么响应总是X-Symfony-Cache:MISS。我尝试修改privates标头上的AppModification.php擦除数组。响应头是X-Symfony-Cache:GET / page:fresh。
我修改了数组后,我遇到了新问题,而我正在尝试登录我的网页时收到错误或消息页面无效。
这里是擦除数组私有头之前的代码:
protected function getOptions()
{
return array(
'debug' => true,
'default_ttl' => 60,
'private_headers' => array('Authorization', 'Cookie'),
'allow_reload' => false,
'allow_revalidate' => false,
'stale_while_revalidate' => 2,
'stale_if_error' => 60,
);
}
响应标题:
缓存控制:私人 连接:保持活动 内容类型:text / html的;字符集= UTF-8 日期:2016年6月29日星期三03:37:56 GMT Keep-Alive:超时= 5,最大= 100 服务器:Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.5.30 传输编码:分块 X-已启动方式:PHP / 30年5月5日 X-Symfony-Cache:GET / page:陈旧,无效
我尝试删除数组私有标头
protected function getOptions()
{
return array(
'debug' => true,
'default_ttl' => 60,
'private_headers' => array(),
'allow_reload' => false,
'allow_revalidate' => false,
'stale_while_revalidate' => 2,
'stale_if_error' => 60,
);
}
响应标题:
年龄:2 Cache-Control:public,s-maxage = 62 连接:保持活动 内容长度:366990 内容类型:text / html的;字符集= UTF-8 日期:2016年6月29日星期三03:41:56 GMT Keep-Alive:超时= 5,最大= 100 服务器:Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.5.30 X-内容摘要:en5ea0d5af1ee851007583987e8dfb3a8207874e303363f3d33c412b7f3fe6c12c X-已启动方式:PHP / 30年5月5日 X-Symfony-Cache:GET / page:陈旧,无效,存储
任何人都可以帮助我,建议解决这个问题?我不知道了,在任何Symfony文档中都找不到。这是我的控制器:
public function showDetailsAction( $pageSlug,request $request)
{
$productManager = $this->get('my.core.manager.product');
$product = $productManager->findOneProduct();
$options = $cmsManager->getSlugType($pageSlug);
$memcacheKey = 'prodrelated_'.$productNumber;
if($this->get('memcache.default')->get($memcacheKey)){
$result = $this->get('memcache.default')->get($memcacheKey);
}else{
$cloudSearchManager = $this->get('my.core.manager.cloudsearch');
$result = $cloudSearchManager->findRelatedProductBy($options);
$this->get('memcache.default')->set($memcacheKey, $result, 0, 300);
}
$view = $this
->view()
->setTemplate("MyBundle:Product:detail.html.twig")
->setData(array(
'product' => $product
));
return $this->handleView($view);
}
答案 0 :(得分:2)
Symfony Cache层就像一个中间HTTP缓存,就像Varnish那样的反向代理。
这意味着对于可缓存的响应,它需要是公共的(任何缓存都可以存储它)而不是私有的(只有浏览器缓存可以存储它)。此外,必须使用适当的缓存策略,例如Cache-Control标头中的max-age
或Expires标头。