确保用户在更新后获取最新版网站的正确方法

问题描述 投票:0回答:1

每次我向我们的Web应用程序部署更新时,客户都会遇到浏览器未检测到index.html已发生更改的问题,并且由于.js文件的名称已更改,因此会出现错误。大概是因为他们的index.html仍然指向不再存在的旧javascript文件。

确保用户在系统更新时始终获得最新版本的正确方法是什么。

我们有一个HTML5 + AngularJS Web应用程序。它使用WebPack将供应商和应用程序javascript捆绑到两个js文件中。这些文件包含一个hashname,以确保它们在发布后不同。

其他一些信息

  • 我永远不能在本地复制这个问题(我的意思是在调试中,在我们的临时站点或我们的生产站点上)
  • 我们使用CloudFlare但在发布后清除整个缓存
  • 我们在JS中有一个机制来检查页面加载或每5分钟查看我们的API版本是否已更改,如果是,则显示“请刷新浏览器”消息。点击此按钮运行window.location.reload(true);
  • 我们的后端是IIS
javascript browser-cache devops
1个回答
1
投票

如果您需要用户在更新文件后立即加载您的站点时获取最新的index.html,请使index.html不可缓存。这意味着浏览器,CloudFlare和任何中间代理都不允许缓存它,并且一个文件将始终从您的规范服务器提供。

当然,这会对您和他们产生流量和延迟影响,但如果这确实是您的要求,我看不到任何其他选择。

这有很多旋转。它可能不是index.html本身不可缓存,你可以插入另一个资源(一个小的JavaScript文件写出正确的script标签),如果index.html真的很大,重要的是缓存它,等等。但如果你需要改变立即获取,您将需要一个标识更改的不可缓存资源。

© www.soinside.com 2019 - 2024. All rights reserved.