HTTP 协商缓存 ETag、If-None-Match

(1)浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在respone header加上ETag。

ETag是服务器根据当前请求的资源生成的一个唯一标识。

这个唯一标识是一个字符串,只要资源有变化这个串就不同,跟最后修改时间没有关系。

(2)浏览器再次跟服务器请求这个资源时,在request header上加上If-None-Match(值就是上一次请求时返回的ETag的值)。

(3)服务器再次收到资源请求时,根据浏览器传过来If-None-Match和然后再根据资源生成一个新的ETag,如果这两个值相同就说明资源没有变化,否则就是有变化; 如果没有变化则返回304 Not Modified,但是不会返回资源内容; 如果有变化,就正常返回资源内容。 与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化。

如上例中所示,在使用了If-None-Match之后,服务器只需要很小的响应就可以达到相同的结果,从而优化了性能。

复制代码
协商缓存需要配合强缓存使用.
如上图,有强缓存的相关Cache-Control,因为如果不启用强缓存的话,协商缓存根本没有意义。
相关推荐
S1998_1997111609•X1 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
身如柳絮随风扬5 小时前
GET请求能带Body吗?GET与POST的核心区别全解析
http
以太浮标7 小时前
华为eNSP模拟器综合实验之- MGRE多点GRE隧道详解
运维·网络·网络协议·网络安全·华为·信息与通信
时空自由民.8 小时前
WebSocket 协议介绍
网络·websocket·网络协议
时空自由民.10 小时前
CAN ,CANFD,EtherCAT介绍
网络协议·计算机网络
Gh0st_Lx11 小时前
【6】为什么有了 HTTP/1.1 ,还要 HTTP/2 和 HTTP/3
网络协议·http·php
学编程就要猛12 小时前
JavaEE初阶:网络原理-HTTP(下)
网络·网络协议·http
汤愈韬12 小时前
Full Cone NAT、行为模式
网络·网络协议·网络安全·security
灰子学技术13 小时前
Envoy TCP 层面的 Metric 指标分析
开发语言·网络·网络协议·tcp/ip·php
网络系统管理13 小时前
解决edge浏览器访问https网站报错问题
网络协议·http·https