Symfony 4 HTTP缓存头在分析器和浏览器中不相同



对于网站开发,我尝试使用文档中描述的Symfony 4 HTTP缓存。

我在index.php中创建了一个CacheKernel:

namespace App;
use SymfonyBundleFrameworkBundleHttpCacheHttpCache;
class CacheKernel extends HttpCache
{
}
// index.php
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$kernel = new CacheKernel($kernel);
$request = Request::createFromGlobals();

在主页动作:

$response->setPublic();
$response->setMaxAge(3600);
$response->headers->addCacheControlDirective('must-revalidate', true);
return $response;

在profiler中,头文件是集合:

cache-control "max-age=3600, must-revalidate, public">

但是在浏览器中,头是不一样的,我认为缓存不存储:

Cache-Control: max-age=0, must-revalidate, private

你有一些想法来理解为什么头是不一样的,为什么缓存不工作请?

我如何确保缓存工作,是否有一些日志?

谢谢你的帮助

我可能是错的,因为它涉及到你的实现,但是,如果你在dev环境中缓存被禁用。这样您就可以立即看到更改,而不必像以前的Symfony版本那样在每次编辑后手动清除缓存。事实上,分析器显示了您在prod中所期望的内容,这告诉我它正在工作,只是由于在dev中而被覆盖。

尝试切换到prod

查看X-Symfony-Cache报头的调试信息缓存命中和未命中

——https://symfony.com/doc/4.4/http_cache.html expiration-caching

还有一个日志:

缓存内核有一个特殊的getLog()方法返回一个字符串表示缓存层中发生的事情。在发展中环境,使用它来调试和验证缓存策略:

error_log($kernel->getLog());

——https://symfony.com/doc/4.4/http_cache.html symfony-reverse-proxy

最新更新