【发布时间】:2021-01-10 13:57:08
【问题描述】:
我有一个托管在 cloudflare 上的 Angular 网站构建。当我在服务器上推送新版本的应用程序时,我从开发计算机看到浏览器使用旧(来自磁盘缓存)版本的文件。因为它使用了以前版本的 index.html、runtime、pollyfile 和 main js 代码文件。
获取文件时,我没有看到来自 cloudflare 的 any 标头指示浏览器上的缓存停止时间。浏览器缓存 TTL 设置为默认 4h。标题 expect-ct 也有 max-age=604800,但正如我所读到的,这是为了证书。我还在 cloudflare 上使用了清除缓存选项(“清除所有内容”是按钮)。
在我看来,旧版本的 index.html(在 Angular 应用程序中加载的第一个文件)被缓存在本地,因此一切都崩溃了。如何预防?
【问题讨论】:
-
这个答案可能会解决你的问题stackoverflow.com/questions/39647810/…
-
使用 Ctrl + F5 代替 F5 刷新页面并清除缓存。
-
@Anduin 我可以告诉客户按 F5 加载较新版本的应用程序。我需要它的代码。
-
@pastaleg 我使用 build --prod 并且据我所见,它在文件名末尾添加了哈希码。总之,除了 index.html。
-
@usernumber124153 酷。文件名顶部的哈希将向浏览器表明脚本和图像是新的,应该从缓存中获取而不是加载。 index.html 文件不能有这样的散列。要处理缓存的 html,请参阅此标题设置答案并向下滚动到 HTML4 部分以查看元标记 stackoverflow.com/questions/49547/…
标签: angular cloudflare diskcache