美文网首页
304 Not Modified详解

304 Not Modified详解

作者: 青争小台 | 来源:发表于2021-02-23 10:13 被阅读0次
image.png image.png

第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200

在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此次请求为条件请求。在请求头中有两个请求参数:If-Modified-Since 和 If-None-Match。

当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候, 就会发送一个条件请求。在进行条件请求时,客户端会提供给服务器一个If-Modified-Since请求头,其值为服务器上次返回响应头中Last-Modified值,还会提供一个If-None-Match请求头,值为服务器上次返回的ETag响应头的值。

服务器会读取到这两个请求头中的值,判断出客户端缓存的资源是否是最新的,如果是的话,服务器就会返回HTTP/304 Not Modified响应头, 但没有响应体.客户端收到304响应后,就会从本地缓存中读取对应的资源。 所以:当访问资源出现304访问的情况下其实就是先在本地缓存了访问的资源。

另一种情况是,如果服务器认为客户端缓存的资源已经过期了,那么服务器就会返回HTTP/200 OK响应,响应体就是该资源当前最新的内容.客户端收到200响应后,就会用新的响应体覆盖掉旧的缓存资源.只有在客户端缓存了对应资源且该资源的响应头中包含了Last-Modified或ETag的情况下,才可能发送条件请求.如果这两个头都不存在,则必须无条件(unconditionally)请求该资源,服务器也就必须返回完整的资源数据.另外,有时候我们浏览器调试的时候不希望本地缓存,可以设置取消缓存即可。


image.png

如果选中了no cache,则请求资源时,请求头中的Cache-Control为no-cache,表明不使用缓存,则会直接获取服务器资源。另外,若没选中no cache,Cache-Control有二种情况:
1、max-age>0 时直接从游览器缓存中提取
2、max-age<=0 时向服务器发送http请求,该资源是否有修改有的话返回200 ,无的话返回304.

摘自:https://blog.csdn.net/franknotbad/article/details/79399809

相关文章

  • 304 Not Modified详解

    在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此次请求为条件请求。在...

  • 304 Not Modified详解

    第一次访问 200鼠标点击二次访问 (Cache)按F5刷新 304按Ctrl+F5强制刷新 200 在客户端向服...

  • VUE 304 Not Modified

    项目运行成功后,打开主页面,发现配置文件请求拿不到 这是项目启动的时候,找不到这个配置文件导致的,打开VUE项目主...

  • (web前端) 网络和服务器端高频面试题

    1.状态码: 2. 304的缓存原理(添加Etag标签.last-modified) 304 网页上次请求没有更新...

  • HTML面试题(一)

    一、什么时候返回304状态码?谈谈H5缓存机制(浏览器缓存机制)。 Q1:304状态码,Not Modified。...

  • Http 请求头响应头 + enctype属性 + cookie

    2018-6-26更新 304状态码 : Not Modified ---- 页面未被修改,缓存是最新的 30...

  • Http响应分析之HTTPServletResponse

    Http响应分析 响应行分析 HTTP/1.1 304 Not modified 常见响应头 请求与相应的流程 浏...

  • 缓存

    给前端同学的一句话:不管是 304 Not Modified 还是 Cache-Control:private 什...

  • 网站强制304

    网站返回304状态码 客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中...

  • 状态码304执行过程分析

    1.状态码304 客户端有缓存的文档发出一个条件性的请求(提供If-Modified-Since头标识客户端缓存修...

网友评论

      本文标题:304 Not Modified详解

      本文链接:https://www.haomeiwen.com/subject/nnqrfltx.html