使用 IIS7,为什么我的 PNG 可以被浏览器缓存,但我的 JS 和 CSS 文件却没有?

使用 IIS7,为什么我的 PNG 可以被浏览器缓存,但我的 JS 和 CSS 文件却没有?

我正在尝试整理我的网站在 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 文件?

相关内容