对于网站开发,我尝试使用文档中描述的Symfony 4 HTTP缓存。
我创建了一个名为CacheKernel的index.php,如下所示:
namespace App;
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
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;在分析器中,头是设置:
缓存控制"max-age=3600,必须重新验证,公共的“
但是在浏览器中,头文件是不一样的,我认为缓存没有存储:
缓存-控制:最大值=0,必须重新验证,私有
您是否有一些ides来理解为什么头是不一样的,为什么缓存不工作请?
如何确保缓存正常工作,是否有一些日志?
非常感谢你的帮助
发布于 2021-08-28 18:57:12
我可能错了,因为它涉及到您的实现,但是,如果您是在dev环境中,缓存是禁用的。这样您就可以立即看到更改,而不必在每次编辑后手动清除缓存,就像以前的Symfony版本一样。分析器显示了您在prod中所期望的内容,这一事实告诉我,它正在工作,只是因为在dev中而被覆盖。
尝试切换到prod和
查看
X-Symfony-Cache头以获得有关缓存命中和丢失的调试信息。 --Cache.html#期满-缓存
还有一个日志:
缓存内核有一个特殊的getLog()方法,它返回缓存层中发生的事情的字符串表示形式。在开发环境中,使用它来调试和验证缓存策略: Error_log($内核->getLog()); --Cache.html#symfony-反向代理
https://stackoverflow.com/questions/68963729
复制相似问题