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 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 path="Assets">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
</staticContent>
</system.webServer>
</location>
以下是我在 IIS 8.5 管理器中尝试过的操作。在默认网站/TestApp下
- HTTP 请求标头,设置通用 HTTP 标头,勾选“Web 内容过期”“365 天后”。
- 将相同的设置应用于“资产”文件夹
我已经单独尝试过这些步骤,也尝试过一起尝试过这些步骤,也尝试过其他所有步骤。无论如何,它都不会添加max-age
缓存控制的值。
对于其中每一个,浏览器都会返回 200 个 CSS 和 JS 包的响应。我无法让服务器缓存来自资产文件夹的内容。
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