http - if-modified-since 与 if-none-match

标签 http caching request response

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 - if-modified-since 与 if-none-match,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/998791/

相关文章:

java - 如何以编程方式从网站下载图像?

http - 如何避免 jsonp 请求超时错误?

caching - RxJava 2 并在 IO 线程上使用 Realm

C# Web 浏览器控件 : Clearing cache without clearing cookies

android - 是否可以在 google 文档请求中包含 http header ?

mysql - Yii RESTFul,JSON 格式更新和创建

python - 在twisted中取消一组HTTP请求

css - 缓存的 CSS 文件有什么含义?

node.js - Node/请求继续重定向到原始 URL 而不返回任何响应

java - 如何使用可分页参数定义请求方向?