Sulu 缓存总是不命中
Sulu cache always misses
我正在尝试设置缓存 Sulu CMS 页面。在本地,我已将环境设置为 prod(尝试使用 dev 但切换到 prod 以防这是问题所在),但启用了缓存调试。
config/packages/sulu_http_cache.yaml 看起来像这样:
sulu_http_cache:
proxy_client:
symfony:
enabled: true
debug:
enabled: true
config/packages/prod/cache.yaml 看起来像这样
framework:
cache:
app: cache.adapter.filesystem
system: cache.adapter.system
缓存目录存在于我的 /var 目录中,但它们是空的
所有回复都具有以下内容headers:
如果您的缓存始终未命中,则表明您正在请求中访问 session
。 Symfony 中的以下内容将自动启动 session 例如:
- 使用 csrf 令牌 (
csrf_token
)
- 在路由上配置 unlazy 防火墙(检查你的
security_website.yaml
)
- 正在访问即显消息或其他类似内容 (
app.flashes
)
- 正在访问 session 本身 (
app.session
)
- 正在访问当前用户(
app.user
)
作为 session 访问表明“响应”是特定于用户的,并且对于每个访问者来说都不相同 symfony 会将响应设置为私有,因此它总是缓存未命中。
编辑您的代码,您不再访问 session 并且 Cache-Control
Header 响应为“public”,HttpCache 组件将缓存此响应.
正如您所提到的,可以使用以下方法禁用 symfony 自动行为:
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 1);
我个人会避免这种情况,因为它可以缓存特定于安全的数据,或者例如在您的 html 中写入您不想要的缓存用户名。
另一种方法是使用基于 UserContext 的缓存,这意味着例如每个角色都有自己的缓存。可以找到关于此的文档:
- https://docs.sulu.io/en/2.2/cookbook/user-context-caching.html
- https://foshttpcachebundle.readthedocs.io/en/latest/features/user-context.html
这个主要用在你的应用在网站上有安全性,只有特定的角色才能查看特定的路由。
我正在尝试设置缓存 Sulu CMS 页面。在本地,我已将环境设置为 prod(尝试使用 dev 但切换到 prod 以防这是问题所在),但启用了缓存调试。
config/packages/sulu_http_cache.yaml 看起来像这样:
sulu_http_cache:
proxy_client:
symfony:
enabled: true
debug:
enabled: true
config/packages/prod/cache.yaml 看起来像这样
framework:
cache:
app: cache.adapter.filesystem
system: cache.adapter.system
缓存目录存在于我的 /var 目录中,但它们是空的
所有回复都具有以下内容headers:
如果您的缓存始终未命中,则表明您正在请求中访问 session
。 Symfony 中的以下内容将自动启动 session 例如:
- 使用 csrf 令牌 (
csrf_token
) - 在路由上配置 unlazy 防火墙(检查你的
security_website.yaml
) - 正在访问即显消息或其他类似内容 (
app.flashes
) - 正在访问 session 本身 (
app.session
) - 正在访问当前用户(
app.user
)
作为 session 访问表明“响应”是特定于用户的,并且对于每个访问者来说都不相同 symfony 会将响应设置为私有,因此它总是缓存未命中。
编辑您的代码,您不再访问 session 并且 Cache-Control
Header 响应为“public”,HttpCache 组件将缓存此响应.
正如您所提到的,可以使用以下方法禁用 symfony 自动行为:
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 1);
我个人会避免这种情况,因为它可以缓存特定于安全的数据,或者例如在您的 html 中写入您不想要的缓存用户名。
另一种方法是使用基于 UserContext 的缓存,这意味着例如每个角色都有自己的缓存。可以找到关于此的文档:
- https://docs.sulu.io/en/2.2/cookbook/user-context-caching.html
- https://foshttpcachebundle.readthedocs.io/en/latest/features/user-context.html
这个主要用在你的应用在网站上有安全性,只有特定的角色才能查看特定的路由。