我有一个可用的Web应用程序,包含index.html
文件,多个html页面,一个js
文件和一些css
。
这是一个全新的应用程序,正如预期的那样,有一些小错误可以用于生产。
我的问题是:在我纠正错误并替换相关文件后,很有可能用户'浏览器仍然会加载替换文件的缓冲版本,因此这些用户不会看到。
我找到了一些关于使用版本标记的建议(类似...?version=x.y...
),但我不清楚如何使用它。
此外,如果我更改(例如)更新文件的名称(例如从ABC_001.html
到ABC_002.html
),我还需要更改引用它的文件,这意味着我需要也改变它的版本,...并重复这个直到应用程序的引导点(即index.html
)。
那么,任何人都可以与我分享(详情/示例将受到高度赞赏),一旦部署新版本文件,有哪些标准方法可以保证使用?
提前感谢任何有用的建议。
答案 0 :(得分:0)
如果要更改文件名,则需要在引用它们的任何位置更改它。没有办法解决这个问题。
为了确保您的用户始终能够看到更新版本的文件,使用链接末尾的版本号是单向的。另一种方法是您可以在HTML页面中使用元标记标题,如下所示:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
将此设置为&#34; no-cache&#34;确保浏览器始终向服务器发送请求&amp;不加载缓存的内容。
您可以使用.js&amp;的版本号技术。 .css文件。
答案 1 :(得分:0)
两个基本假设:
要确保第2点,您将要显示您的文件版本,如您所示。简单地添加foo.js?v=2
之类的内容会使URL不同,这会使浏览器认为它是一个不同的文件,并确保它从服务器获取它。 理想情况下您的服务器实际上可以提供所请求的版本;即如果浏览器请求v=2
它将实际收到文件的第2版,v=3
将提供文件的第3版等。虽然效果不大,但实施起来可能相当复杂。
所以你想要的是对你的资产进行自动版本控制。这意味着您要么拥有像PHP这样的服务器端语言,它包含模板中的所有JS文件,并自动向它们添加...?v=...
;或者您有一个构建系统,在您将文件上传到服务器之前执行此操作。有很多不同的方法可以做到这一点,具体的建议有点超出了这个答案的范围。
一旦你有了这个,你有两种情况之一:
虽然有一个不幸的第三个案例:
同样,如果您的服务器具有版本控制的实际概念,则可以修复此问题,但实现起来可能相当复杂,并且可能不值得这样做。
避免这种情况最实用的方法是为HTML文件选择合理的缓存策略,这样缓存就不会过时,并且可能出现这种不匹配的时间窗口会降低到最小可能时间。
基本上不需要自己对HTML文件进行版本控制。最重要的是它引用的HTML + Javascript / CSS资产一致,要么全部在同一旧版本,要么全部在最新版本上。 HTML本身的版本并不重要,只会影响您的网站的最新状态,无论如何,您必须使用合理的缓存策略来控制这些内容。
底线:自动版本化您的资产+合理地缩短引用HTML文件的到期时间在99%的情况下都可以实现。在不放弃缓存的情况下压缩剩余的1%可能会非常耗费工作量。