【问题标题】:How to tell web-browser client to always check for latest version of website code如何告诉网络浏览器客户端始终检查最新版本的网站代码
【发布时间】: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


【解决方案1】:

Web 服务器应设置标头 'cache-control' 值。正如@pastaleg 所说,您可以看到大多数网络服务器的问题How do we control web page caching, across all browsers?。你可以在网上找到关于 nginx 的答案。

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 2013-10-06
    • 2019-11-25
    相关资源
    最近更新 更多