当我对我的网站运行 YSlow 时,我在“配置 ETags”项上得到“F”;它声称我的许多(全部?)图像、样式表等都没有 etag。

但是,如果我直接对其中一张图像运行测试,我会在 etag 测试中得到 A。此外,在 Firebug Net 面板的响应标头中,我可以看到该项目的全页版本和直接 url 版本的 etag。

我可能正在做的事情会导致这种奇怪的行为吗?

(我要访问的网址是 这里这里 如果有人想自己检查一下。我不介意进行健全性检查,看看是否只是我的浏览器感到困惑。)

有帮助吗?

解决方案

刚刚在本地使用 FF 3.6 和 YSlow 2.0.3(新发布的版本)进行了尝试,独立映像的得分为“B”,原因是 ETag 配置错误。

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

但是,这是设计使然。如果你看 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]+$");

其他提示

我的答案,关于IIS 7,是无视的YSlow的建议。

,IIS 7次使用生成的ETag时的零元数据库变化数。这是冒号后的部分......这样的eTag总是会像“5321116d3585ce1:0”,其中从最后一次修改文件时所产生的第一部分,然后一个冒号和元数据库更改号码

与IIS 7开始,微软设定变更数量为零所有的时间,所以这将是跨多个Web服务器一样均匀。对于IIS 5和6,可以将其设置为零,如果你想达到相同的最终结果是:

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

如果YSlow的仍在使用的 iis_re =新正则表达式( “^ [0-9A-Z] +:[0-9A-Z] + $”)的一个正则表达式规则; ,然后他们”再错,并且它应该被重写以接受ETAG为有效,如果它与端部的:0

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top