MikeJ Asked: 2009-08-19 19:58:56 +0800 CST2009-08-19 19:58:56 +0800 CST 2009-08-19 19:58:56 +0800 CST yslow 说 etag 配置错误。如何在 IIS7 上正确配置 etags? 772 在我支持的网站上运行 ySlow 时,我注意到它报告了站点图像的 etag 配置错误(例如 *.jpg、*.png、*.gif)。任何人都可以帮助解释我必须做些什么才能让 IIS7 正确发布这些 etag 吗? iis-7 7 个回答 Voted Ionuț G. Stan 2009-08-25T23:44:25+08:002009-08-25T23:44:25+08:00 只要您不提供来自多个服务器的内容,Etag 就可以。如果您只从一台服务器上提供服务,请将它们留在那里。他们不疼。如果您不想让 YSlow 抱怨它们,请单击规则集选择元素附近的编辑按钮并编辑 YSlow(V2) 配置文件。只需取消选中“配置实体标签(Etags)”选项即可。 Mark Henderson 2009-08-19T20:03:59+08:002009-08-19T20:03:59+08:00 YSlow 并没有抱怨他们错了(即使它是这么说的),而是抱怨他们不需要。让 YSlow 对此闭嘴的唯一方法是禁用它们。 好消息是,我今天早些时候自己做了这个! 打开 IIS 管理器,单击服务器,然后转到 HTTP 响应标头。单击“添加...”按钮,并在名称下输入: ETag (区分大小写)。在值下,输入 "" (那是两个双引号) ETags 开始了! Best Answer nickh 2010-09-18T08:01:58+08:002010-09-18T08:01:58+08:00 Farseeker 接受的答案不起作用。我已经在 Windows Server 2008 Standard SP 2 上的 IIS 7.0.6000.16386 中对此进行了测试。 对于相同的问题,请参阅 Jeff Atwood对 Stack Overflow的评论。 AndrewPK 2013-08-03T11:59:20+08:002013-08-03T11:59:20+08:00 在 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具有一个或多个字符,并将该值重写为空字符串。 SirStan 2009-08-19T20:39:55+08:002009-08-19T20:39:55+08:00 查看类似的StackOverflow问题。 jerhewet 2012-03-03T10:41:39+08:002012-03-03T10:41:39+08:00 请参阅在 IIS7 中设置服务器响应标头的答案以获取部分解决方案。是的,一个完整的解决方案会非常好,但我会尽我所能。 user197693 2013-11-08T23:32:08+08:002013-11-08T23:32:08+08:00 更好地使用这个: <outboundRules> <rule name="Remove ETag"> <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" /> <action type="Rewrite" value="{R:1}" /> </rule> </outboundRules>
只要您不提供来自多个服务器的内容,Etag 就可以。如果您只从一台服务器上提供服务,请将它们留在那里。他们不疼。如果您不想让 YSlow 抱怨它们,请单击规则集选择元素附近的编辑按钮并编辑 YSlow(V2) 配置文件。只需取消选中“配置实体标签(Etags)”选项即可。
YSlow 并没有抱怨他们错了(即使它是这么说的),而是抱怨他们不需要。让 YSlow 对此闭嘴的唯一方法是禁用它们。
好消息是,我今天早些时候自己做了这个!
打开 IIS 管理器,单击服务器,然后转到 HTTP 响应标头。单击“添加...”按钮,并在名称下输入:
(区分大小写)。在值下,输入
(那是两个双引号)
ETags 开始了!
Farseeker 接受的答案不起作用。我已经在 Windows Server 2008 Standard SP 2 上的 IIS 7.0.6000.16386 中对此进行了测试。
对于相同的问题,请参阅 Jeff Atwood对 Stack Overflow的评论。
在 iis 6 中,您可以为 'ETag' = "" 添加自定义标头
在iis 7中,添加出站重写规则如下:
IIS 7 将覆盖自定义标头,以及针对同一问题的各种其他答案中提出的所有其他解决方案。出站规则是唯一似乎有效的项目,因为它会覆盖在返回给用户之前设置的任何内容。此提议的出站规则匹配任何命名的服务器变量
RESPONSE_ETag
,只要 的值RESPONSE_ETag
具有一个或多个字符,并将该值重写为空字符串。查看类似的StackOverflow问题。
请参阅在 IIS7 中设置服务器响应标头的答案以获取部分解决方案。是的,一个完整的解决方案会非常好,但我会尽我所能。
更好地使用这个: