首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if-modified-自vs if-none-match

if-modified-自vs if-none-match
EN

Stack Overflow用户
提问于 2009-06-15 22:36:38
回答 7查看 53.8K关注 0票数 93

if-modified-none和if-none-match之间的区别是什么?我有一种感觉,if-none-match用于文件,而if-modified-since用于页面?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-17 07:06:04

关于Last-Modified/If-Modified-SinceETag/If-None-Match之间的区别

两者都可以互换使用。然而,取决于资源的类型,以及它是如何在服务器上生成的,一个或另一个问题(“这是否自...?”/“这仍然与此ETag匹配吗?”)可能更容易回答。

示例:

  • 如果你在为文件提供服务,使用文件的mtime作为Last-Modified日期是最简单的解决方案。
  • 如果你正在为一个动态网页提供服务,检查其中任何一个查询返回的数据是否发生了变化可能是不切实际的(除非所有这些查询都有某种类型的“上次修改”列)。在这种情况下,使用页面内容的md5散列作为ETag将容易得多。

OTOH,这意味着您仍然需要在服务器上生成整个页面,即使是有条件的GET。弄清楚ETag中到底需要包含哪些内容(主键、修订号……等)在这里可以为您节省大量时间。

有关该主题的更多详细信息,请参阅以下链接:

  • http://www.tbray.org/ongoing/When/200x/2008/08/14/Rails-ETags
  • http://bitworking.org/news/150/REST-Tip-Deep-etags-give-you-more-benefits
票数 115
EN

Stack Overflow用户

发布于 2009-06-15 22:52:55

If-Modified-Since被比作Last-Modified,而If-None-Match被比作ETagModified-SinceETag都可用于标识资源的特定变体。

但是,If-Modified-SinceLast-Modified的比较给出了缓存的变体是旧的还是新的信息,而If-None-MatchETag的比较只给出了两者是否相同的信息。此外,大多数ETag生成器是否包含系统特定inode的信息,因此将文件移动到不同的驱动器可能也会更改ETag

票数 22
EN

Stack Overflow用户

发布于 2011-10-29 00:09:17

在Last-Modified/If-Modified- used中使用的时间戳值的精度有限-一秒,这对于快速变化的内容来说是不够的,例如,Web聊天应用程序,其中在任何给定的一秒内可以发布一条以上的消息。ETag/If-None-Match可以帮助解决这个问题。

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

https://stackoverflow.com/questions/998791

复制
相关文章

相似问题

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