我知道这个问题已被问过很多次,但大多数是在2009-2010。
我非常肯定我正在努力删除它们的项目,但是目前我找不到任何方法将它们删除。
这个领域有没有进步?微软让IIS无法轻松配置这些标题似乎很疯狂。
目前已尝试过:
我听说有一个ISAPI过滤器可以删除它们,但是我无法在任何地方找到它,并且没有从头开始编写的经验,但可能最终成为唯一的方法。
正因为如此,我有理由为所有内容删除Etags。我让客户端缓存所有内容(过期和最后修改),所以一旦从服务器获取静态文件,它就永远不需要再次查询服务器,直到它过期。就像使用Etags一样,您仍然需要向服务器请求每个文件,以确定标记是否仍然匹配。因此,使用客户端缓存只会请求您需要的内容。
我还有一个版本控制系统,所以当发生变化时,静态内容会被引用为 my.js?12345 而不是 my.js?12344 。无论如何,重点是我目前认为删除Etags将大大改善我当前项目的瓶颈之一。
答案 0 :(得分:53)
您可以使用IIS Rewrite Module 2.0删除ETag。以下重写规则应该这样做:
<rewrite>
<outboundRules>
<rule name="Remove ETag">
<match serverVariable="RESPONSE_ETag" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
</rewrite>
You can see an example image of the rule configuration in IIS Manager on my blog
答案 1 :(得分:12)
对于那些在寻找相同解决方案时遇到此答案但对于 IIS 8或IIS 8.5 的人来说,这就是我想出的。感谢this post on blogs.iis.net让我指出了正确的方向。
IIS文档网站上的参考:clientCache。
在您的web.config中,添加:
<configuration>
...
<system.webServer>
...
<staticContent>
<clientCache setEtag="false"/>
</staticContent>
...
</system.webServer>
...
</configuration>