什么是编程生成网页etag的好方法,这种做法值得推荐吗?一些网站建议关闭etags,另一些网站建议手动制作etags,还有一些网站建议保留默认设置--这里最好的方法是什么?
发布于 2008-10-02 16:26:53
当你在你的网站生成器前面使用某种缓存机制时,ETags确实会有所帮助。浏览器本身并不使用它们,它们会监听"(if) modified header“或"age”header structs,afaik。
无论如何,由于其简单的性质,提供具有ETag的http报头是不成问题的。我听说许多web服务器只是简单地获取文件的位置和文件的时间戳,然后对这些数据进行MD5哈希。
例如,我们用我们的软件构建了一个简单但有效的etag。每个“内容单元”(即html、jpegs、gifs...)在我们的软件中有一个唯一的id和一个版本号(即一个jpeg有id "17“和版本"2",这意味着它被更改过一次)。所以版本只是字符串“id- ETag”,这里是:"17-2“。对于下一次更改,它将是"17-3“,以便缓存程序识别更改,完全加载新的内容部分(一次),并将其存储在自己的缓存中。
但您也可以使用URL和时间戳(即文件的时间戳)。
发布于 2008-10-02 15:44:50
我建议生成内容的哈希,例如md5($content)。
此外,为了防止哈希冲突,您可能想要添加内容元素的ID (如果这是合适的)。
发布于 2008-10-02 14:17:04
当您严重依赖缓存时,ETags是有意义的。它们是资源(例如URL)状态的一个很好的指示器。
例如,假设您使用ajax请求来获取用户的最新评论,并且希望知道是否有新的评论。更改ETag以提醒您的应用程序有新内容是一种成本较低的检查方法。
因为如果ETag是相同的,您可以保留您的缓存,否则将重新构建它。
使用RESTful API,ETags也很有意义。
至于生成它,看看spec,我认为你几乎可以做任何你想做的事情。一个时间戳,一个哈希,任何对你/你的应用有意义的东西。
https://stackoverflow.com/questions/162105
复制相似问题