首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sulu缓存总是漏掉

Sulu缓存总是漏掉
EN

Stack Overflow用户
提问于 2021-01-08 13:47:33
回答 1查看 263关注 0票数 1

我正在尝试设置缓存Sulu页面。在本地,我已经将环境设置为prod (在dev中尝试,但在出现问题时切换到prod ),但是在打开缓存调试时。

config/packages/sulu_http_cache.yaml如下所示:

代码语言:javascript
复制
sulu_http_cache:
    proxy_client:
        symfony:
            enabled: true
        debug:
            enabled: true

config/packages/prod/cache.yaml如下所示

代码语言:javascript
复制
framework:
    cache:
        app: cache.adapter.filesystem
        system: cache.adapter.system

缓存目录存在于我的/var目录中,但它们是空的。

所有响应都有以下标题:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-08 14:23:06

如果您的缓存总是遗漏,则提示您正在访问请求中的session。Symfony中的下列内容将自动启动会话,例如:

在路由上使用csrf令牌(csrf_token)

  • configure不懒惰的防火墙(检查security_website.yaml)

  • accessing闪存消息或其他类似于(app.flashes)

  • accessing会话本身的(app.session)

  • accessing当前用户(app.user)

)的

会话访问表明“响应”是特定于用户的,而不是每个访问者的响应相同,symfony会将响应设置为私有的,因此它总是缓存失败。

编辑您的代码,说明您不再访问会话,并且Cache-Control头响应使用“公共”表示,HttpCache组件将缓存此响应。

正如您所提到的,使用以下命令可以禁用symfony的自动行为:

代码语言:javascript
复制
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 1); 

我个人会避免这样做,因为它可以缓存特定于安全的数据或示例,在您不想要的html中写入缓存的用户名。

另一种方法是使用基于UserContext的缓存,例如,这意味着每个角色都有自己的缓存。有关这方面的文件可查到:

这主要是当您的应用程序在网站上具有安全性时使用,并且只有特定角色才能查看特定的路由。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65630197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档