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

发布于 2024-08-18 06:00:29 字数 478 浏览 12 评论 0原文

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

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

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

(我访问的网址是此处此处。 com/images/logo-trans.png?1264051801" rel="nofollow noreferrer">这里如果有人想自己检查的话。我不介意进行健全性检查,看看是否只是我的浏览器感到困惑。 )

When I run YSlow against my site, I get an "F" on the "Configure ETags" item; it claims that there are no etags for many (all?) of my images, stylesheets, etc.

However, if I run the test on one of those images directly, I get an A on the etag test. Furthermore, on the Firebug Net panel's Response headers I can see the etag on this item for both the full-page and direct-url versions.

Is there something that I might be doing to cause this weird behavior?

(The URLs I'm hitting are here and here if anyone wants to check for themselves. I wouldn't mind a sanity check to see if it's just my browser that's confused.)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

或十年 2024-08-25 06:00:29

对于 IIS 7,我的答案是忽略 YSlow 的建议。

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

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

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

如果 YSlow 仍使用正则表达式规则 iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$"); 那么他们错了,应该重写它以接受 etag 在结束时有效与 :0

My answer, in regards to IIS 7, is to ignore YSlow's recommendation.

IIS 7 uses a metabase change number of zero when generating the ETag. That's the part after the colon... so the etag will always be something like "5321116d3585ce1:0", where the first part is generated from the last modified file time, and then a colon and the metabase change number.

Starting with IIS 7, Microsoft set that change number to zero all the time, so it will be the same even across multiple web servers. For IIS 5 and 6, you can set it to zero if you want to achieve the same end result:

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

If YSlow is still using a regex rule of iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$"); then they're wrong, and it should be rewritten to accept the etag as valid if it ends with :0

给妤﹃绝世温柔 2024-08-25 06:00:29

刚刚在本地使用 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]+$");

just tried this locally with FF 3.6 and YSlow 2.0.3 (newly released version) and the standalone image Gives a score of "B", citing misconfigured ETags.

The ETag is showing in the header, bith in the FireBug net panel and in the YSlow components panel.

But, this is by design. If you look at http://developer.yahoo.com/performance/rules.html#etags you will see that the default ETags generated by IIS and Apache are not optimal.

For reference, the actual lint rule in YSlow checks the following two regexes:

  apache_re = new RegExp("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$");
  iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文