2016-12-26 57 views
0

我在IIS上发布了一个Web应用程序。我所有的JS文件都是从我的名为“Index.html”的静态html文件中调用的。在这个html文件中,我使用<script>标记调用每个JS文件,为了管理我们的版本并在没有用户历史记录和缓存删除的情况下执行更新,我在每个JS文件的末尾添加了?v = {version}网址如下:.html在HTML中缓存

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

后多次版本更新,我已经注意到,用户仍然需要刷新页面以获取最新的index.html文件。在搜索chrome的开发工具并查看Developer Tools中的Network部分后,我已经注意到Index.html文件是从缓存中加载的(显示Network中的“(from cache)”符号) 。

搜索为中清空.html文件的任何解决方案网站(?因为没有V = {}版本为我的.html文件),我发现后补充道:

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

ISN”解决了这个问题,我的Index.html文件仍然从缓存中加载。

我每隔两周更新我的web应用程序,我无法承受自己让用户删除缓存和历史记录的每个版本更新,因为新的和最新的.html文件因为缓存而被加载。

唯一有用的是刷新(F5),然后重新加载Index.html文件(未从缓存中加载并显示该Index.html文件的最新版本)。但是如果有人输入url并将其输入到URL栏中,Index.html仍然从缓存中加载。

有什么我做错了,应该添加任何东西? 有什么要解决这个问题呢?

谢谢!

+0

按下“Ctrl + Shift + R”是否可以解决它? –

+0

我不希望用户强制高速缓存刷新。换句话说 - 我没有最多的技术用户。这意味着用户只需按下书签/输入url /按链接/将链接保存在桌面上,然后从那里打开。 我需要加载最新的.html文件,不管用户到我的网站如何... –

+0

我理解老板,我问是否有帮助。如果是这样的话,你需要确定你的编译指示... –

回答

0

穿上URL的末尾查询字符串为A(良好)黑客以允许您设置HTTP缓存控制标头缓存很长一段时间不常变化的资源,仍然迫使新版本加载在那些你确实改变它的场合。

如果您经常更新您的HTML,那么只需设置缓存控制标头,告诉浏览器更频繁地检查更新。利用Etags或If-Modified-Since,而不是依赖将来设置的Expires头。

注意:您必须使用真正的HTTP标头。 <meta http-equiv>是个不好的笑话。