我正在尝试设置缓存Sulu页面。在本地,我已经将环境设置为prod (在dev中尝试,但在出现问题时切换到prod ),但是在打开缓存调试时。
config/packages/sulu_http_cache.yaml如下所示:
sulu_http_cache:
proxy_client:
symfony:
enabled: true
debug:
enabled: trueconfig/packages/prod/cache.yaml如下所示
framework:
cache:
app: cache.adapter.filesystem
system: cache.adapter.system缓存目录存在于我的/var目录中,但它们是空的。
所有响应都有以下标题:

发布于 2021-01-08 14:23:06
如果您的缓存总是遗漏,则提示您正在访问请求中的session。Symfony中的下列内容将自动启动会话,例如:
在路由上使用csrf令牌(csrf_token)
security_website.yaml)
app.flashes)
app.session)
app.user))的
会话访问表明“响应”是特定于用户的,而不是每个访问者的响应相同,symfony会将响应设置为私有的,因此它总是缓存失败。
编辑您的代码,说明您不再访问会话,并且Cache-Control头响应使用“公共”表示,HttpCache组件将缓存此响应。
正如您所提到的,使用以下命令可以禁用symfony的自动行为:
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 1); 我个人会避免这样做,因为它可以缓存特定于安全的数据或示例,在您不想要的html中写入缓存的用户名。
另一种方法是使用基于UserContext的缓存,例如,这意味着每个角色都有自己的缓存。有关这方面的文件可查到:
这主要是当您的应用程序在网站上具有安全性时使用,并且只有特定角色才能查看特定的路由。
https://stackoverflow.com/questions/65630197
复制相似问题