if-modified-since和if-none-match之间有什么区别?我觉得if-none-match用于文件,而if-modified-since用于页面吗?

最佳答案

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

两者可以互换使用。但是,根据资源的类型及其在服务器上的生成方式,一个或另一个问题(“因为...?是否已对其进行了修改?” /“此标记是否仍与此ETag匹配?”)可能更容易回答。 。

例子:

  • 如果要提供文件,则使用文件的mtime作为Last-Modified日期是最简单的解决方案。
  • 如果您要提供由多个SQL查询构建的动态网页,则检查由这些查询中的任何一个返回的数据是否已更改可能是不切实际的(除非所有查询都具有某种“上次修改”列)。在这种情况下,请使用页面内容的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
  • 关于http - if-modified-since与if-none-match,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/998791/

    10-12 04:28