在IIS的Output caching中如果启用了User-mode caching将引起Cache-Control为no-cache,从而造成页面不能被浏览器或代理服务器缓存。
web.config中对应的配置如下:
<configuration> <system.webServer> <caching> <profiles> <add extension=".css" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" /> <add extension=".js" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" /> </profiles> </caching> </system.webServer> </configuration>
浏览器中看到的效果:
解决方法:
1、禁用User-mode caching,只用Kernel-mode caching。
、
2、在web.config中加上cacheControlCustom="public"
<system.webServer> <staticContent> <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="300.00:00:00" /> </staticContent> <caching> <profiles> <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="30:00:30" /> <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="30:00:30" /> </profiles> </caching> </system.webServer> </configuration>