我不确定我做错了什么但是尽管我尝试了一切,我似乎无法让客户端缓存我的静态资源。
在我的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中没有任何标题覆盖这个,所以我不确定我错过了什么。任何帮助将不胜感激。
答案 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。