2

有谁知道是否值得在托管在单个 Web 服务器上的 Web 应用程序上禁用 ETags?目前我们没有在我们的应用程序中使用 ETags。

如果值得禁用它们 - 为什么?

非常感谢。

4

2 回答 2

8

我不知道这是否有帮助,但您可以在这里阅读有关 etags 的信息:http: //developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html

以下是Jeff Atwood对 ETags 的看法:

ETag 是每个服务器文件提供的校验和字段,因此客户端可以判断服务器资源是否与客户端在本地保存的缓存版本不同。雅虎建议关闭 ETag,因为它们是使用特定于机器的标记生成的,因此会导致服务器场出现问题。因此,除非您运行服务器场,否则您应该忽略此指南。它只会让您的网站性能更差,因为客户端将更难以确定其缓存是陈旧的还是新鲜的。客户端可以使用现有的 last-modified 日期字段来确定缓存是否过时,但 last-modified 是一个弱验证器,而 Entity Tag (ETag) 是一个强验证器。为什么要以强换弱?

采访.NET Rocks 的 Steve Souders 可能会有所帮助:

史蒂夫·苏德斯: ... IIS 和 Apache 的默认实现,他们放置了这两个服务器,在 e-tag 中放置了一些东西,如果用户必须检查该资源的有效性,浏览器就会运行被错误地告知资源不再有效。因此,在 Apache 的情况下,他们在电子标签中放入的是该 Web 服务器上文件的 INO 编号,因此,如果您有多个 Web 服务器托管您的网站,而大多数大型网站都有,那么该 INO 编号永远不会跨两台服务器匹配,所以如果昨天用户去服务器一,今天他们试图验证该资源,他们去服务器 2,电子标签将不匹配,电子标签覆盖上次修改日期,而不是仅仅返回一个 200 字节的 304 响应,

于 2009-01-14T12:14:28.667 回答
0

“如果您在一台服务器上托管您的网站,则无需删除 ETag。每次都将使用相同的 ETag,并且验证检查将有效且正确地进行。”

资料来源:迪恩休谟

于 2013-11-08T19:21:38.330 回答