您好我的.net网络应用程序中没有缓存问题。我得到了一个运行以下元标记的XHTML Web应用程序:
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
我想让这个应用程序成为HTML5有效的应用程序。在通过HTML5验证器运行它之后,它将输出那些元标记无效。
我在互联网上做了一些研究,很多人建议使用清单文件,如:
CACHE MANIFEST
# 2016-03-18 time 10:30 UTC v 1.01
NETWORK:
*
这基本上说:对于所有文件,不要从缓存中读取,而是从网络服务器读取。这听起来像浏览器根本没有缓存它。但是这种方法的缺点是,正如在post中所说的那样,每次执行(部分)回发时都需要更新清单文件。这听起来不太合适。
因此,我通过web.config
调整在我的IIS中使用HTTP标头搜索了另一种方法。我找到了一个说明你可以使用以下方法的来源:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="-1" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
不,我想知道这种方法是不是为了不缓存我的web应用程序的好方法吗?
答案 0 :(得分:1)
CACHE MANIFEST适用于离线网络应用,根本不是一件容易使用的东西,据我所知,甚至不推荐制作离线应用的方法。
如果您不希望在浏览器中缓存您的页面,那么配置响应标头将是正确的方法。
要防止浏览器完全缓存页面,您可以设置以下标题:
Cache-Control:no-store
Cache-Control:no-cache
Pragma:no-cache
Expires:Fri, 18 Mar 1999 12:22:21 GMT
请注意 Pragma 标头适用于 HTTP 1.0 , Cache-Control:max-age 相当于 Expires ,但 Cache-Control:max-age 具有更高的优先级,因此没有理由同时使用它们
答案 1 :(得分:0)
按照您的描述使用清单文件,并使用javascript:
进行更新你的清单:
CACHE MANIFEST
# 2016-03-18 time 10:30 UTC v 1.01
NETWORK:
*
使用Javascript:
var appCache = window.applicationCache;
appCache.update();
使用appcache的良好开端:A Beginner's Guide to Application Cache