IIS 8.5 MVC5客户端缓存被忽略

时间:2015-02-02 22:41:13

标签: asp.net-mvc-5 bundle iis-8.5 clientcache

TL; DR - 我希望服务器(IIS 8.5)返回304,而不是为CSS和JS包修改。

我无法让IIS 8.5兑现web.config中的clientCache设置。无论我做什么,我似乎都无法缓存静态内容。这是VS2013中的MVC5应用程序。我已将所有静态文件放在“Assets”文件夹中。

请求如下: http://someserver/AppName/Assets/mainjs?v=FNj_9ZPAbYVAQsyDo2F8XUnWv5NQpY4iX2RGu4NpJ5g1

  1. 尝试#1,在Assets文件夹中放置一个新的web.config,其中包含以下内容:
  2. <configuration>
      <system.webServer>
        <staticContent>
          <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
        </staticContent>
      </system.webServer>
    </configuration>
    
    1. 尝试#2:将以下配置放在根web.config
    2. <staticContent>   
          <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />    
      </staticContent>
      
      1. 尝试#3:尝试使用位置标记设置缓存
      2. <location path="Assets">
          <system.webServer>
            <staticContent>
              <clientCache  cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
            </staticContent>
          </system.webServer>
        </location>
        

        以下是我在IIS 8.5管理器中尝试过的内容。在默认网站/ TestApp下

        1. HTTP Requeset Headers,设置公共HTTP标头,检查“过期Web内容”“365天之后”。
        2. 将相同的设置应用于“资产”文件夹
        3. 我已经尝试了这些步骤,每个步骤都是自己的,所有这些步骤以及其他方式。无论如何,它都不会将max-age值添加到Cache-Control。

          对于其中的每一个,browswer都会返回200个CSS和JS包的响应。我无法让服务器缓存来自Assets文件夹的内容。

          Cache-Control:private
          Content-Encoding:gzip
          Content-Length:22591
          Content-Type:text/css; charset=utf-8
          Date:Mon, 02 Feb 2015 21:49:49 GMT
          Expires:Tue, 02 Feb 2016 21:49:49 GMT
          Last-Modified:Mon, 02 Feb 2015 21:49:49 GMT
          Persistent-Auth:true
          Server:Microsoft-IIS/8.5
          Vary:Accept-Encoding
          X-AspNet-Version:4.0.30319
          X-Powered-By:ASP.NET
          

1 个答案:

答案 0 :(得分:0)

检查捆绑包的各个文件。关闭优化后文件的样子是什么?注册Bundles后,请致电:

BundleTable.EnableOptimizations = (!HttpContext.Current.IsDebuggingEnabled);

OR

BundleTable.EnableOptimizations = false;

可能是每个文件都返回时未修改。在调试会话中刷新时状态是否会更改?