【发布时间】:2019-02-12 12:49:09
【问题描述】:
每次我向我们的 Web 应用程序部署更新时,客户都会遇到问题,因为他们的浏览器没有发现 index.html 已更改,并且由于 .js 文件的名称已更改,因此他们会遇到错误。大概是因为他们的 index.html 仍然指向不再存在的旧 javascript 文件。
什么是确保用户在系统更新时始终获得最新版本的正确方法。
我们有一个 HTML5 + AngularJS 网络应用程序。它使用 WebPack 将供应商和应用程序 javascript 捆绑到两个 js 文件中。这些文件包含一个哈希名称,以确保它们在发布后是不同的。
其他一些信息
- 我永远无法在本地复制此问题(我的意思是在调试中,在我们的暂存站点或生产站点上)
- 我们使用 CloudFlare,但在发布后清除整个缓存
- 我们在 JS 中有一种机制,可以检查页面加载或每 5 分钟检查一次我们的 API 版本是否已更改,如果是,则显示“请刷新您的浏览器”消息。单击此运行
window.location.reload(true); - 我们的后端是 IIS
【问题讨论】:
-
仅清除 CloudFlare 缓存并不能绕过浏览器缓存。使用页面规则禁用它,或者告诉您的客户在加载您的网站时使用 CTRL+Shift+R
-
您可以尝试将时间戳附加到您的 javascript 文件中,这将导致浏览器始终获取最新版本,请查看 add a timestamp to javascript filename 了解更多信息
-
@vikscool - OP 已经在文件名中使用了哈希。问题是过时的
index.html,而不是过时的 JavaScript 文件。
标签: javascript browser-cache devops