我正在使用Symfony 2.6 HTTP缓存,我在这里遵循Symfony cook book中的所有说明
但是,为什么响应总是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,
);
}
我试图擦除数组私有头
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 Connection:Keep-Alive Content-Length:366990 Content-Type:text/html;Charset=UTF-8日期:Wed,2016年6月29日03:41:56 GMT keep-alive:timeout=5,max=100 server:Apache/2.4.17(Win32)OpenSSL/1.0.2d php/5.5.30 x-Content-Digest:en5EA0D5AF1EE851007583987E8DFB3A8207874E303363F3D33C412B7F3F6C12C x-Power-by:php/5.5.30 x-symfony-cache:get/page:stale,无效,存储
谁能帮我,建议解决这个问题?我再也不知道了,在任何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);
}
Symfony缓存层的作用类似于中间HTTP缓存,非常类似于Varnish这样的反向代理。
这意味着要使响应可缓存,它必须是公共的(任何缓存都可以存储它),而不是私有的(只有浏览器缓存可以存储它)。此外,还必须使用适当的缓存策略,比如缓存控制头中的max-age
或Expires头。
当使用near cache时,在缓存操作正在进行时,直到第二个客户端(可能是visor)尝试连接或断开到集群为止,所有的工作都很好。 我的问题是,这是意料之中的行为吗?我们是否可以使近缓存不被绕过,或者至少在坏客户端断开连接后使用近缓存重新建立。
我用的是Chrome40(所以一些漂亮和现代的东西)。 在所有页面上都设置了no-cache-所以我希望浏览器只在首先检查服务器并得到响应时才使用其缓存中的某些内容。 然而,在按下后退按钮时,浏览器会愉快地点击自己的缓存,而无需与服务器进行检查。 我认为我可以使用作为的一个轻量级替代方案,在这里我不希望用户通过后退按钮看到陈旧的数据(但是数据是无价值的,因此可以缓存)。 我对的理解是浏览器必须始终
问题内容: 在Redis 4.0中,有一个新命令UNLINK删除Redis内存中的密钥。 此命令与DEL非常相似:它将删除指定的密钥。与DEL一样,如果密钥不存在,则将其忽略。但是,该 命令在不同的线程中执行实际的内存回收 , 因此当DEL为时 , 它不会阻塞 。这就是命令名称的来源:该命令只是将键与键空间断开链接。实际的删除将在以后异步发生。 因此,可以始终(100%次)使用UNLINK而不是D
问题内容: 我已经寻找了一段时间,但找不到该问题的答案(也许我没有搜索正确的术语或其他内容)。基本上,我有一个数据库,每个日期有任意数量的条目。我需要获取包含条目的最近X天的总和(忽略没有条目的天)。我知道如何找到每一天的总和。 假设我有一个名为“ Yield”的表格: 然后,我使用以下查询: 要获取每天的通过/测量的总数,请执行以下操作: 然后,我需要一个查询,该查询可以调用一个日期(例如我称它
我目前正在尝试为1.15.2开发一个简单的Minecraft mod。我试图创建的是一个命令,匿名你的消息,例如在假选举期间。它基本上接受您编写的消息,并将其匿名发送给服务器中的每个人。 下面是处理该行为的命令类的代码:
垂直。xv3。5.1. 这是我定制的Verticle方法: 我希望我的自定义处理程序将在将来完成时被调用。但事实并非如此!在调试模式下,我看到被调用了两次:一次调用我的自定义处理程序,然后在期间调用的处理程序。因此应用了最新的处理程序。 问题是:是否可以为Verticle start指定自定义回调?如果是,我怎么做? 先谢谢你。