.html Caching in HTML



我有一个在IIS上发布的Web应用程序。我所有的JS文件均来自我的静态HTML文件,称为" index.html"。在该HTML文件中,我将每个JS文件调用<script>标签,并且为了管理我们的版本并执行无用户的历史记录和缓存删除的更新,我在每个JS文件的末尾添加了?v = {version}URL如下:

<script src="./app.js?v=20161226.1" />

在多个版本更新后,我注意到用户仍然需要刷新页面才能获取最新的index.html文件。在搜索Chrome的开发人员工具并在开发人员工具中的网络部分中查看后,我设法注意到index.html文件是从缓存加载的(显示了网络中的"(来自Cache)"符号)。

在搜索网络以获取任何解决方案以获取uncaching .html文件(因为我的.html文件没有?

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />

没有解决问题,我的index.html文件仍在缓存中加载。

我每隔两周更新我的Web应用程序,而我负担不起让自己删除缓存和历史记录每个版本更新的用户,因为加载了新的和最新的.html文件,因为它被加载了。

唯一有帮助的是刷新(F5),然后重新加载index.html文件(未从缓存中加载,最新版本的index.html文件显示)。但是,如果某人键入URL并将其输入URL bar,则index.html仍会从缓存加载。

我做错了什么,应该添加其他任何东西?是否有其他事情可以解决此问题?

谢谢!

将查询字符串放在URL的末端是一个(好)hack,可以让您将HTTP CACHE控制标头设置为 cache长时间对于不经常更改资源,并且仍在更改它的情况下加载新版本。

如果您经常更新HTML,则只需设置缓存控制标头即可告诉浏览器更频繁地检查更新。利用ETAG或if-if-since,而不是依赖于将来的到期标头。

nb:您必须使用真正的HTTP标头。<meta http-equiv>是个坏笑话。

最新更新