我知道很多次都会问这个问题,但大多数问题都发生在2009-2010.
我很肯定一段时间我正在努力删除它们,但是我现在找不到任何方法将它们删除.
那么这个领域有没有进步?微软让IIS无法轻松配置这些标头似乎很疯狂.
目前已经尝试过:
我听说有一个ISAPI过滤器可以删除它们,但是我无法在任何地方找到它,并且没有从头开始编写的经验,但可能最终成为唯一的方法.
这就是为什么我想删除所有内容的Etags的原因.我让客户端缓存所有内容(过期和最后修改),所以一旦从服务器获取静态文件,它就永远不需要再次查询服务器,直到它过期.就像使用Etags一样,您仍然需要向服务器请求每个文件,以确定标记是否仍然匹配.因此,使用客户端缓存只会请求您需要的内容.
我还有一个版本控制系统,所以当发生变化时,静态内容会被引用为my.js?12345而不是my.js?12344.无论如何,重点是我目前认为删除Etags将大大改善我当前项目的一个瓶颈.
我不确定这是否是服务器问题,或者我是否无法理解HTTP缓存是如何工作的.
我有一个在IIS7上运行的ASP MVC应用程序.作为网站的一部分,有很多静态内容,包括大量的CSS,Javascript和图像文件.
对于这些文件,我希望浏览器将它们缓存至少一天 - 我们的.css,.js,.gif和.png文件很少更改.
我的web.config是这样的:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge"
cacheControlMaxAge="1.00:00:00" />
</staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是浏览器(经过测试的Chrome,IE8和FX)似乎没有像我期望的那样缓存文件.我有默认设置(在IE中自动检查新页面).
首次访问内容时按预期下载
HTTP/1.1 200 OK
Cache-Control: max-age=86400
Content-Type: image/gif
Last-Modified: Fri, 07 Aug 2009 09:55:15 GMT
Accept-Ranges: bytes
ETag: "3efeb2294517ca1:0"
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 07 Jun 2010 14:29:16 GMT
Content-Length: 918
<content>
Run Code Online (Sandbox Code Playgroud)
我认为Cache-Control: max-age=86400应该告诉浏览器不要再次请求页面一天.
好的,现在重新加载页面,浏览器再次请求图像.这次它使用这些标题获得空响应:
HTTP/1.1 304 Not Modified
Cache-Control: max-age=86400
Last-Modified: Fri, 07 Aug 2009 09:55:15 GMT
Accept-Ranges: bytes
ETag: "3efeb2294517ca1:0"
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
Date: Mon, 07 Jun 2010 …Run Code Online (Sandbox Code Playgroud)