chrome 加载旧 html 文件

chrome loads old html file

我有一个 angular 应用程序,当我打开路由时,在发布后,我会看到一个损坏的页面。 这是因为 html 主页面将从缓存中检索出来,而它期望的 JS 包将不存在。服务器将传送 not-found html 导致应用程序无休止地等待。

我检查了我们为 html 返回的 headers,我预计它会在 5 分钟后过期。

电子标签:“5f2d6f5b-1b5f” 到期时间:2020 年 8 月 9 日,星期日 16:18:40 GMT cache-control: max-age=300

当我刷新页面时,一切都会开始工作。此外,如果我打开开发人员工具,我将永远无法重现此问题。有什么方法可以检查浏览器缓存中的内容以及为什么它不会过期吗?我在 ubuntu.

我在 firefox 中没有看到这个问题(可能我使用它的频率较低)。我希望我的用户也会受到影响。因此试图更详细地理解这一点。

此问题与 Chrome 无关!!是用nginx的。

Nginx 没有将相同的到期时间设置为 200 与 304 响应。当我们强制 chrome 刷​​新时,它会发送常规 get 并获得 200 ok 响应。但是,当它使用 if-modified-since 或 If-None-Match 启动 get 时,304 响应会返回一个默认的大型缓存过期设置,因为这些响应中没有内容类型。

对于遇到这个问题的小伙伴,我把nginx的解决方案留在这里。

https://github.com/h5bp/server-configs-nginx/issues/230

向 nginx 报告了问题并在那里建议了解决方法。这是最终推荐的基于内容类型的缓存。

https://github.com/h5bp/server-configs-nginx/blob/533d401ea211e074a92048dc53da63f4e8d8ad9d/h5bp/web_performance/cache_expiration.conf

注意内容类型为空的条目映射到关闭的方式。

#暂无内容

""关闭;

这是304响应经过的路径,现在不会造成任何问题。