TL;DR - 我希望服务器(IIS 8.5)对CSS和JS捆绑包返回304未修改状态码。
我一直无法让IIS 8.5遵守web.config中的clientCache设置。无论我做什么,似乎都不能使其缓存静态内容。这是一个在VS2013中的MVC5应用程序。我把所有静态文件放在一个名为“Assets”的文件夹中。
请求如下: http://someserver/AppName/Assets/mainjs?v=FNj_9ZPAbYVAQsyDo2F8XUnWv5NQpY4iX2RGu4NpJ5g1 尝试#1,在Assets文件夹中放置一个新的web.config,并使用以下设置:
对于每个步骤,浏览器返回CSS和JS捆绑包的200响应。 我无法让服务器缓存来自Assets文件夹的内容。
我一直无法让IIS 8.5遵守web.config中的clientCache设置。无论我做什么,似乎都不能使其缓存静态内容。这是一个在VS2013中的MVC5应用程序。我把所有静态文件放在一个名为“Assets”的文件夹中。
请求如下: http://someserver/AppName/Assets/mainjs?v=FNj_9ZPAbYVAQsyDo2F8XUnWv5NQpY4iX2RGu4NpJ5g1 尝试#1,在Assets文件夹中放置一个新的web.config,并使用以下设置:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
尝试 #2:将以下配置放置在根 Web.config 文件中。
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
尝试 #3:使用 location 标签设置缓存。
<location path="Assets">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
以下是我在IIS 8.5管理器中尝试过的方法。 在默认网站/测试应用程序下:
- HTTP请求标头,设置常见的HTTP标头,勾选“在365天后”“过期Web内容”。
- 将相同的设置应用于“资产”文件夹。
max-age
值添加到Cache-Control中。对于每个步骤,浏览器返回CSS和JS捆绑包的200响应。 我无法让服务器缓存来自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
runAllManagedModulesForAllRequests
设置为 true。 - azymm