我使用https开发了一个在IIS 8.5中托管的ASP.NET Web应用程序。我使用fiddler来跟踪请求和响应,并发现浏览器没有缓存css和js文件(IE 11)。对于网站的每个页面,将再次下载这些文件。这是请求和响应。我的问题是为什么响应说“Cache-Control:no-cache”,我是否需要在IIS中设置任何内容?
GET https://***.com/Scripts/jquery-ui-1.8.20.js HTTP/1.1
Accept: application/javascript, */*;q=0.8
Referer: https://***.com/
Accept-Language: en-US
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: ***.com
Connection: Keep-Alive
Cookie: __AntiXsrfToken=000b8dfbde4b40a68a19a2ee3fc1195a; ASP.NET_SessionId=qdhotusxrcchnaowhagzol1y
HTTP/1.1 200 OK
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: application/javascript
Content-Encoding: gzip
Last-Modified: Tue, 16 Jul 2013 09:41:03 GMT
Accept-Ranges: bytes
ETag: "e74a9b96882ce1:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/8.5
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Date: Fri, 24 Jan 2014 02:28:24 GMT
答案 0 :(得分:0)
根据我的理解,Cache-Control: no-cache
并不意味着浏览器没有完全缓存,但它告诉浏览器缓存内容,浏览器应该通过使用Etag或Date标头来查询缓存内容是否有任何变化。< / p>
答案 1 :(得分:0)
在web.config中或通过IIS中的UI为静态文件设置缓存,对于要缓存的静态文件夹,将其添加到配置文件中并且可以正常工作。
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1000.00:00:00" />
</staticContent>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="public" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>