HTTP请求头If-Modified-Since的作用¶
If-Modified-Since 功能介绍¶
If-Modified-Since
请求头通常用于GET请求。它的价值是,避免重复传输数据。
以下是该请求头的常见使用流程:
- 客户端第一次向服务器端请求数据X,这时客户端在发起请求时不会带上
If-Modified-Since
请求头。 - 客户端得到服务器端返回的数据X后,会缓存该数据,并记下获得该数据的时间Y。
- 一段时间后,客户端再次请求数据X,此时客户端会把第一次获得数据X的时间Y放到
If-Modified-Since
请求头里,发送给服务器端。 - 服务器端读取到
If-Modified-Since
请求头的值,也就是时间Y。 - 如果数据X在时间Y之后,发生了变化,服务器端便把最新的数据X返回给客户端。
- 如果数据X在时间Y之后,没有发生变化,那么服务器端认为根本没有必要重复发生数据X给客户端,因此,服务器端只返回了304状态码,而没有返回数据X的内容。
- 客户端根据状态码是否为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
联系作者