HTML5显示没有缓存

时间:2016-03-18 09:36:07

标签: html asp.net html5 caching

您好我的.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应用程序的好方法吗?

2 个答案:

答案 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