定义的客户端缓存似乎被忽略了

时间:2011-12-05 14:58:38

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

我不确定我做错了什么但是尽管我尝试了一切,我似乎无法让客户端缓存我的静态资源。

在我的web.config中,我添加了以下条目:

  <staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
  </staticContent>

根据文档,这应该向客户端浏览器发送响应标头,让它知道我们希望将静态内容缓存30天。

如果我使用fiddler来查看客户端正在接收的内容,看起来我的web.config添加将被完全忽略。

以下是小提琴手的报道:

Cache-Control: no-cache
Date: Mon, 05 Dec 2011 14:09:44 GMT
Expires: -1
Pragma: no-cache
Vary: Accept-Encoding

我在IIS中没有任何标题覆盖这个,所以我不确定我错过了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:6)

我破解了这个但是花了一段时间。你试图从服务器强制304s(没有变化)。它与IIS版本不同。

最好通过在一个目录中拥有所有静态内容来实现 (例如content,因此您有/content/css /content/js etc

然后你必须确保该目录下的所有内容都不会过期,比如30天。

<强> IIS7

更容易。最简单的方法 - 将web.config添加到上面提到的内容目录中。这个web.config只有expires指令:

<system.webServer>
    <staticContent>
        <clientCache
            cacheControlMaxAge="30.00:00:00" 
            cacheControlMode="UseMaxAge" />
    </staticContent>
</system.webServer>

<强> IIS6

您需要操作元数据库。它不是IIS6中的XML,请按照此处的说明操作:IIS6 ETags metabase commands

我们使用了以上和简单的观看萤火虫节目304s。