if-modified-since 和 if-none-match 之间有什么区别?我觉得 if-none-match 用于文件,而 if-modified-since 用于页面?
最佳答案
关于Last-Modified/If-Modified-Since
和ETag/If-None-Match
的区别:
两者可以互换使用。然而,根据资源的类型,以及它在服务器上的生成方式,一个或另一个问题(“自...以来是否被修改过?”/“这是否仍与此 ETag 匹配?”)可能更容易回答.
例子:
- 如果您提供文件,使用文件的
mtime
作为Last-Modified
日期是最简单的解决方案。 - 如果您要提供由多个 SQL 查询构建的动态网页,检查这些查询中的任何一个返回的数据是否已更改可能是不切实际的(除非它们都有某种“最后修改”列) .在这种情况下,使用例如页面内容的 md5 散列作为
ETag
会容易得多。
OTOH,这意味着您仍然必须在服务器上生成整个页面,即使是有条件的 GET。弄清楚 ETag 中究竟有什么(主键、修订号等)可以为您节省大量时间。
有关该主题的更多详细信息,请参阅以下链接:
关于http - if-modified-since 与 if-none-match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998791/