Answers:
Farseeker接受的答案无效。我已经在Windows Server 2008 Standard SP 2的IIS 7.0.6000.16386中对此进行了测试。
有关相同问题,请参见Jeff Atwood 对Stack Overflow的评论。
只要您不从多个服务器提供内容,Etag就可以。如果仅从一台服务器提供服务,则将其保留在那里。他们没有受伤。如果您不希望YSlow抱怨它们,请单击“ 规则集”选择元素附近的“ 编辑”按钮,然后编辑YSlow(V2)配置文件。只需取消选中“配置实体标签(Etags)”选项。
YSlow并不是在抱怨他们错了(即使这就是它的意思),而是在抱怨不需要它们。使YSlow关闭的唯一方法是禁用它们。
好消息是,我今天早些时候自己做了!
打开IIS管理器,单击服务器,然后转到HTTP响应标头。单击“添加...”按钮,然后在名称下输入:
ETag
(区分大小写)。在值下,输入
""
(即两个双引号)
和ETags在一起!
参见类似的StackOverflow问题。
在iis 6中,您可以为'ETag'=“”添加自定义标头
在iis 7中,添加出站重写规则,如下所示:
<outboundRules>
<rule name="Remove ETag">
<match serverVariable="RESPONSE_ETag" pattern=".+" />
<action type="Rewrite" value="" />
</rule>
</outboundRules>
IIS 7将覆盖自定义标头,以及有关同一问题的各种其他答案中提出的所有其他解决方案。出站规则是唯一可行的项目,因为它会覆盖返回给用户之前设置的所有内容。提议的出站规则匹配任何命名的服务器变量RESPONSE_ETag
,只要的值RESPONSE_ETag
具有一个或多个字符并将该值重写为空字符串即可。
请参阅IIS7中“设置服务器响应标头”的答案以获取部分解决方案。是的,一个完整的解决方案会非常不错,但是我会尽力而为。
最好使用这个:
<outboundRules>
<rule name="Remove ETag">
<match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
<action type="Rewrite" value="{R:1}" />
</rule>
</outboundRules>