创建etag的最佳方法是什么?

Ric*_*haw 25 etag caching

以编程方式为网页生成etag的好方法是什么,这是推荐的做法吗?有些网站建议关闭etags,其他网站建议手动生成etags,有些网站建议保留默认设置 - 这里最好的方法是什么?

blu*_*yed 5

我建议生成内容的哈希,例如md5($content).
此外,为了防止散列冲突,您可能希望向其中添加例如内容元素的 ID(如果合适的话)。

  • 是不是很慢?您需要读取文件的内容,该文件可能有几 MB 长。添加并发访问,您就拥有了一个爬行网站。 (2认同)

Geo*_*rgi -5

当您在网站生成器前面使用某种缓存机制时,ETag 确实会有所帮助。浏览器本身不使用它们,它们监听“(如果)修改自”或“年龄”标头结构,据我所知。

无论如何,由于其简单的性质,提供带有 ETag 的 http 标头是没有问题的。我听说许多 Web 服务器只是获取文件的位置和文件的时间戳,并对这些数据进行 md5 哈希。

例如,我们使用我们的软件构建了一个简单但有效的 etag。我们软件中的每个“内容单元”(即 html、jpeg、gif...)都有一个唯一的 id 和版本号(即 jpeg 的 id 为“17”,版本为“2”,这意味着它被更改过一次) 。因此 ETag 只是字符串“id-version”,此处:“17-2”。下一次更改将是“17-3”,以便缓存器识别更改,完全加载新内容部分(一次)并将其存储在自己的缓存中。

但您也可以使用 URL 和时间戳(即文件的时间戳)。

  • 浏览器确实使用它们,否则它们将毫无意义。例如,请参阅 RFC 2068:<http://www.freesoft.org/CIE/RFC/2068/187.htm>。正如您所说,实体标签只需足够详细即可告诉浏览器实体本身已被修改。 (13认同)