第一次访问 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)请求该资源,服务器也就必须返回完整的资源数据.另外,有时候我们浏览器调试的时候不希望本地缓存,可以设置取消缓存即可。

如果选中了no cache,则请求资源时,请求头中的Cache-Control为no-cache,表明不使用缓存,则会直接获取服务器资源。另外,若没选中no cache,Cache-Control有二种情况:

   1、max-age>0 时直接从游览器缓存中提取 2、max-age<=0 时向服务器发送http请求,该资源是否有修改有的话返回200 ,无的话返回304.

返回状态码304 Not Modified详解相关推荐

  1. HTTP状态码304与ETag详解

    总结一下,最近项目开发遇到的.由于缓存框架设计时,缓存请求文件时只以发起请求的url 为key,导致在客户端发起url 相同,传参类型不同的请求时,交替请求会出现,带上一次请求返回的etag ,进行下 ...

  2. 304 Not Modified详解

    第一次访问 200  鼠标点击二次访问 (Cache)  按F5刷新 304  按Ctrl+F5强制刷新 200 在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则 ...

  3. HTTP 状态码 301 和 302 详解及区别——辛酸的探索之路

    转自:http://blog.csdn.net/grandpang/article/details/47448395 一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了 ...

  4. http状态码301和302详解及区别——辛酸的探索之路

    一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解.这里记录下,希望能有新的认识.大家也共勉. 官方的比较简洁的说明: 301 redirect ...

  5. http状态码301和302详解及区别

    一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解.这里记录下,希望能有新的认识.大家也共勉. 官方的比较简洁的说明: ​ 301 redire ...

  6. nginx 返回状态码详解

    nginx 返回状态码详解 200 (成功) 服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201 (已创建) 请求成功并且服务器创建了新的资源. 202 (已接受) 服务器已接受请 ...

  7. HTTP请求返回状态码意义(详)

    所有HTTP请求返回状态码意义 100 Continue 继续.客户端应继续其请求 101 Switching Protocols 切换协议.服务器根据客户端的请求切换协议.只能切换到更高级的协议,例 ...

  8. 服务器返回状态码 400、401、403、304 的原因

    状态码 400 意为 请求无效 产生原因 前端提交数据的 字段名称和字段类型与后台的实体 没有保持一致 ; 例如: 前端提交到后台的数据应该是 json 字符串类型,但是前端没有将对象 JSON.st ...

  9. zabbix自动发现url以及对http返回状态码监控实现

    扩展 http 请求方法以及返回状态码的类型和含义 服务器状态码 1.200 OK表示从客户端发来的请求在服务器端被正常处理了.2.204 No Content 该状态码代表服务器接收的请求已成功处理 ...

最新文章

  1. 第一阶段站立会议08
  2. 没牙虎小apple的幸福生活
  3. 【opencv系列02】OpenCV4.X图像读取与显示
  4. 【概念集锦】之 浅拷贝与深拷贝
  5. 七.(一)oc通知-NSNotification(通知中心-NSNotificationCenter)
  6. VMware Workstation 端口映射 How to
  7. mysql5.0版本特性_mysql各版本的新特性整理
  8. 设计模式(十六)迭代器模式 Iterator
  9. 电子教室软件 android,【转载】退出极域学生端电子教室教程9种方法
  10. 毕业设计 微信小程序 外卖点餐平台
  11. xpath获取同级元素 子元素,子元素取父元素等
  12. C. K-th Not Divisible by n
  13. 半桥llc 增益 matlab程序,半桥LLC谐振设计多路输出辅助电源
  14. 360全景偏移调整_360全景拼接之调水平
  15. Mysql主从复制和Redis主从复制
  16. 性能测试:深入理解并发量,线程数,吞吐量,TPS
  17. 高精度阶乘和 高精度算法(c语言)
  18. CES2019新品季: 明基4K广色域机种解析
  19. H---RGB色彩图像分析
  20. mybatis-generator-tool工具的使用

热门文章

  1. 2022.02.11学习总结(kmp)
  2. WDF开发USB设备驱动教程(1)
  3. Phonetic SymbolsRules of Pronunciation
  4. PCIe TLP的格式
  5. 泰勒公式求e值——c语言算法实现
  6. Django 1.9 支持中文
  7. 笔记1之极大值分布问题
  8. 吴刚谈数位红创业故事-4万起步七年历程回顾
  9. java使用knn实现mnist_java使用knn实现mnist - 百度学术
  10. QMI8658 - 姿态传感器学习笔记 - Ⅰ