我正在尝试整理我的网站在 IIS 中的缓存。
基本上,除了 .png、.js 和 .css 文件之外,我不需要缓存任何东西。
在我的网站级别,我打开了 HTTP 响应标头并使用“设置常见标头...”将内容设置为立即过期。
我没有在 IIS 的任何级别设置输出缓存配置文件。
我清除了浏览器缓存,然后尝试访问我的网站。当我的网站请求 PNG 文件时,我看到了如下响应:
Accept-Ranges bytes
Age 0
Connection Keep-Alive
Content-Type image/png
Date Thu, 12 Apr 2012 21:55:15 GMT
Etag "83b7322de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
对于 JS 和 CSS 文件,我看到如下响应:
Accept-Ranges bytes
Cache-Control no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 597
Content-Type text/css
Date Thu, 12 Apr 2012 21:55:15 GMT
Etag "06e45ede15bca1:0"
Last-Modified Mon, 02 Nov 2009 17:28:44 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Accept-Ranges bytes
Cache-Control no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 42060
Content-Type application/x-javascript
Date Thu, 12 Apr 2012 21:55:14 GMT
Etag "2356302de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
那么,为什么我的 PNG 可以被缓存,但 JS 和 CSS 文件却不可以?
然后,我进入 IIS 中的输出缓存功能,并为 .png、.css 和 .js 文件设置配置文件。这将更新 web.config 文件,如下所示:
<caching>
<profiles>
<add extension=".png" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".css" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
<add extension=".js" policy="CacheUntilChange" kernelCachePolicy="DontCache" />
</profiles>
</caching>
我进行了“预防性” IISReset,然后尝试再次访问我的网站。
对于 PNG 文件,我看到以下响应:
Accept-Ranges bytes
Age 0
Connection Keep-Alive
Content-Length 3833
Content-Type image/png
Date Thu, 12 Apr 2012 22:02:30 GMT
Etag "0548c9e2c5dc81:0"
Last-Modified Tue, 22 Jan 2008 19:26:00 GMT
Server Microsoft-IIS/7.5
X-Powered-By ASP.NET
对于 CSS 和 JS 文件,我看到以下响应:
Accept-Ranges bytes
Cache-Control no-cache,no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 2680
Content-Type application/x-javascript
Date Thu, 12 Apr 2012 22:02:29 GMT
Etag "0f743af9015c81:0"
Last-Modified Tue, 23 Oct 2007 16:20:54 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
Accept-Ranges bytes
Cache-Control no-cache,no-cache
Connection Keep-Alive
Content-Encoding gzip
Content-Length 3831
Content-Type text/css
Date Thu, 12 Apr 2012 22:02:29 GMT
Etag "c3f42d2de318cd1:0"
Last-Modified Thu, 12 Apr 2012 19:33:45 GMT
Server Microsoft-IIS/7.5
Vary Accept-Encoding
X-Powered-By ASP.NET
我做错了什么?我是否完全误解了 IIS 的功能,或者是否存在错误。
最重要的是,我如何实现我想要的 - 让浏览器只缓存 PNG、JS 和 CSS 文件?