2011-12-05 49 views
6

我不知道我在做什么错,但尽管我已经尝试了一切,但我似乎无法让客户端缓存我的静态资源。定义的客户端缓存似乎被忽略

在我的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任何头重写此所以我不知道它是什么,我的思念。任何帮助将不胜感激。

回答

6

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

它具有所有你在一个目录 静态内容最好地实现(例如content所以你必须/content/css/content/js etc

然后你只需要确保目录不会过期下的一切,比如说,30天。

IIS7

容易得多。最简单的方法 - 将web.config添加到上面提到的内容目录。这web.config将刚才的到期指令:

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

IIS6

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

我们使用上述和简单查看萤火虫显示304s。

+0

首先,感谢您的帮助。我确实在上面指出了304s,但在内容文件夹中添加web.config并没有什么不同。我已经尝试将新的web.config添加到/ Content文件夹,并最终得到500个错误(_正在寻找资源,并且无法显示_)。我也将它移动到资源所在的文件夹:/ Content/css,现在成功检索了css文件,但是再次使用no-cache标头。 – Yag

+0

看起来像这可能会帮助http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error路由也许.... – penderi