当前位置: 首页 > 知识库问答 >
问题:

X-Symfony-Cache总是未命中

苏法
2023-03-14

我正在使用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);
}

共有1个答案

凤经武
2023-03-14

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。我试图创建的是一个命令,匿名你的消息,例如在假选举期间。它基本上接受您编写的消息,并将其匿名发送给服务器中的每个人。 下面是处理该行为的命令类的代码:

  • 我的build.sbt(casbah)添加了一个依赖项。我做了一个sbt更新,我检查了我的~/.ivy2/cache目录,所有的JAR都在那里。我必须将这个~/.ivy/cache目录添加到我的构建路径中,并将casbah作为外部Jar添加到我的项目中吗?如果没有,可能没有,因为我确实尝试了它,那么我应该怎么做才能在我的scala项目中使用这个jar呢? > 在“.ivy2/cache”文件夹中建