首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建etag的最佳方式是什么?

创建etag的最佳方式是什么?
EN

Stack Overflow用户
提问于 2008-10-02 12:54:28
回答 6查看 19.4K关注 0票数 25

什么是编程生成网页etag的好方法,这种做法值得推荐吗?一些网站建议关闭etags,另一些网站建议手动制作etags,还有一些网站建议保留默认设置--这里最好的方法是什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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和时间戳(即文件的时间戳)。

票数 -5
EN

Stack Overflow用户

发布于 2008-10-02 15:44:50

我建议生成内容的哈希,例如md5($content)

此外,为了防止哈希冲突,您可能想要添加内容元素的ID (如果这是合适的)。

票数 5
EN

Stack Overflow用户

发布于 2008-10-02 14:17:04

当您严重依赖缓存时,ETags是有意义的。它们是资源(例如URL)状态的一个很好的指示器。

例如,假设您使用ajax请求来获取用户的最新评论,并且希望知道是否有新的评论。更改ETag以提醒您的应用程序有新内容是一种成本较低的检查方法。

因为如果ETag是相同的,您可以保留您的缓存,否则将重新构建它。

使用RESTful API,ETags也很有意义。

至于生成它,看看spec,我认为你几乎可以做任何你想做的事情。一个时间戳,一个哈希,任何对你/你的应用有意义的东西。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/162105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档