KyleBlog.cn 文章 标签 关于
文章 标签 关于

HTTP请求头If-Modified-Since的作用

If-Modified-Since 功能介绍

If-Modified-Since请求头通常用于GET请求。它的价值是,避免重复传输数据。

以下是该请求头的常见使用流程:

  1. 客户端第一次向服务器端请求数据X,这时客户端在发起请求时不会带上If-Modified-Since请求头。
  2. 客户端得到服务器端返回的数据X后,会缓存该数据,并记下获得该数据的时间Y。
  3. 一段时间后,客户端再次请求数据X,此时客户端会把第一次获得数据X的时间Y放到If-Modified-Since请求头里,发送给服务器端。
  4. 服务器端读取到If-Modified-Since请求头的值,也就是时间Y。
  5. 如果数据X在时间Y之后,发生了变化,服务器端便把最新的数据X返回给客户端。
  6. 如果数据X在时间Y之后,没有发生变化,那么服务器端认为根本没有必要重复发生数据X给客户端,因此,服务器端只返回了304状态码,而没有返回数据X的内容。
  7. 客户端根据状态码是否为304,来决定是否需要更新本地的数据X。

从上述过程可以看出,If-Modified-Since请求头对于客户端和服务器端都有好处,客户端不再需要重复读取数据,服务器端不再需要重复返回数据。

If-Modified-Since 案例

以下http请求,就包含了If-Modified-Since请求头。

GET /index.html HTTP/1.1
Host: www.kyleblog.cn
If-Modified-Since: Tue, 31 Jan 2023 08:24:13 GMT

怎么用js生成If-Modified-Since请求头里的日期?

在上述例子里,If-Modified-Since请求头的内容是Tue, 31 Jan 2023 08:24:13 GMT,如何才能生成这种格式的日期字符串呢?

实际上,这个日期的格式是RFC-1123时间戳。以JavaScript为例,可以通过下面的方法获得当前时间的RFC-1123时间戳字符串:

new Date().toUTCString()

本文为kyleblog.cn原创,转载请注明出处:https://www.kyleblog.cn/posts/http_if_modified_since

发布日期:2023-01-31 联系作者