YSlow在ETag上给出不一致的结果

时间:2010-01-21 06:11:20

标签: yslow etag

当我对我的网站运行YSlow时,我在“配置ETAG”项目上得到一个“F”;它声称很多(全部?)我的图像,样式表等没有标签。

但是,如果我直接在其中一个图像上运行测试,我会在etag测试中得到A.此外,在Firebug Net面板的Response标题中,我可以在整个页面和direct-url版本上看到此项目的etag。

我可能会做些什么导致这种奇怪的行为吗?

(如果有人想检查自己,我正在点击的网址是herehere。我不介意进行健全性检查,看看是否只是我的浏览器感到困惑。)< / p>

2 个答案:

答案 0 :(得分:5)

关于IIS 7,我的回答是忽略YSlow的建议。

IIS 7在生成ETag时使用元数据库更改编号为零。这是冒号之后的部分...所以etag总是类似于&#34; 5321116d3585ce1:0&#34;,其中第一部分是从上次修改的文件时间生成的,然后是冒号和元数据库更改号。

从IIS 7开始,Microsoft始终将更改编号设置为零,因此即使在多个Web服务器上也是如此。对于IIS 5和6,如果要获得相同的最终结果,可以将其设置为零:

http://technet.microsoft.com/en-us/library/ee619764(WS.10).aspx

如果YSlow仍在使用正确的规则 iis_re = new RegExp(&#34; ^ [0-9a-z] +:[0-9a-z] + $&#34;); < / strong>然后他们出错了,如果etag以:0

结尾,则应该重写它以接受etag为有效

答案 1 :(得分:2)

刚刚尝试使用FF 3.6和YSlow 2.0.3(新发布的版本),独立图像得分为“B”,引用了错误配置的ETag。

ETag显示在FireBug网络面板和YSlow组件面板的标题中,bith。

但是,这是设计的。如果查看http://developer.yahoo.com/performance/rules.html#etags,您将看到IIS和Apache生成的默认ETag不是最佳的。

作为参考,YSlow中的实际lint规则检查以下两个正则表达式:

  apache_re = new RegExp("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$");
  iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$");