Web.Config - staticContent - clientCache配置

时间:2015-11-30 12:37:46

标签: asp.net-mvc

我有这个Content文件夹来保存经常不会改变的js / images / css等。所以,我在这个目录中添加了一个配置文件,如下所示 -

<configuration>
    <system.webServer>
        <staticContent>
            <!-- <clientCache cacheControlMode="UseExpires" httpExpires="Mon, 30 Nov 2015 20:45:45 GMT"/>  -->
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00"/>
        </staticContent>
    </system.webServer>
</configuration>    

当我第一次加载页面时,我可以看到请求的js文件的这些响应/请求标头 -

Response Headers
    Accept-Ranges:bytes
    Cache-Control:max-age=86400
    Content-Encoding:gzip
    Content-Length:1730
    Content-Type:application/x-javascript
    Date:Mon, 30 Nov 2015 12:14:31 GMT
    ETag:"038394f8fd11:0"
    Last-Modified:Mon, 26 Oct 2015 14:14:08 GMT
    Server:Microsoft-IIS/7.5
    Vary:Accept-Encoding
    X-Powered-By:ASP.NET
Request Headers
    Accept:*/*
    Accept-Encoding:gzip, deflate, sdch
    Accept-Language:en-US,en;q=0.8
    Cache-Control:no-cache
    Connection:keep-alive
    Host:dev.admin.ccmportal.williamslea.com
    Pragma:no-cache
    Referer:http://dev.admin.ccmportal.williamslea.com/
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36

两个问题 -

  1. 当我使用F5重新加载页面时,我看到相同的响应头 内容长度为1730.即使我已经设置,为什么要重新加载内容 它被缓存了1天?
  2. Cache-Control:请求标头中没有缓存意味着什么?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

  1. Content-Length将始终显示内容长度,即使内容是从缓存中提取的。
  2. Cache-Control: no-cache告诉浏览器它应该将请求转发给源服务器,即使它有一个被请求内容的缓存副本。
  3. 内容长度规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

    缓存控制规范:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

    所以看起来你的clientCache配置工作正常但是看起来你的浏览器没有按照Cache-Control使用缓存:no-cache

    您的开发工具或类似的东西中是否禁用了缓存?