【问题标题】:magento 2 production mode cache and browser cachemagento 2 生产模式缓存和浏览器缓存
【发布时间】:2020-05-21 09:18:10
【问题描述】:

我有一个用于 magento 2 的 nginx + varnish 设置。该站点处于生产模式。一切都很好,直到我对 css 文件做了一个小改动。无论如何,修改不会加载到客户端。

从浏览器私有模式我可以看到更改,但从“旧”正常浏览器会话中我只能看到旧布局。当我清空浏览器缓存时,我可以看到新的 CSS 布局。但是,我不能去每个客户的计算机为他们清空缓存。

在这种情况下我能做些什么来强制 css 过期?通过标题?重新编译?静态文件编号?以前有人遇到过这个问题吗?

我尝试重新部署静态内容,刷新服务器缓存并刷新清漆缓存。那些没有用。

有什么提示吗?谢谢!

【问题讨论】:

  • 我只是将它留在这里作为一种解决方法:我将站点设置为开发模式,摆弄合并 js/css 的选项,在开发模式下部署。将选项设置回合并和版本 js/css 文件,然后将其设置回生产模式。当然,事先预先擦除生成的静态文件。在生产模式下,重新部署,然后它工作。这绝对不是一个解决方案,只有在您没有如此繁忙的站点并且可以承受一些停机时间和处理程序异常时才使用它。

标签: magento2 browser-cache


【解决方案1】:

检查此 css 文件头中的“过期”。 您应该能够添加 Nginx 选项来控制不同类型文件的缓存到期日期。 将下一个代码粘贴到服务器块中:

#browser caching of static assets
location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 1d;

}

【讨论】:

  • 嗨@sudmak,首先非常感谢。我在 nginx 配置 add_header Cache-Control "max-age=600, public"; expires +1y; 中有以下 sn-p。