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,因为如果不启用强缓存的话,协商缓存根本没有意义。
相关推荐
00后程序员张3 小时前
iPhone相册导出到电脑的完整指南
websocket·网络协议·tcp/ip·http·网络安全·https·udp
August_._4 小时前
【JavaWeb】详细讲解 HTTP 协议
java·网络·网络协议·http
Koma_zhe5 小时前
【远程管理绿联NAS】家庭云存储无公网IP解决方案:绿联NAS安装内网穿透
网络·网络协议·tcp/ip
长流小哥6 小时前
Linux网络协议栈深度解析:从数据封装到子网划分的底层架构
linux·网络协议·架构
wordbaby9 小时前
Vue 图片重试指令 (v-img-retry) 增强:集成 visibility 控制,实现无缝加载过渡
前端·vue.js·http
小杨xyyyyyyy12 小时前
计算机网络 - UDP协议
网络·网络协议·计算机网络·面试·udp
秋‍.12 小时前
HTTP与HTTPS的区别
网络协议·http·https
vvilkim17 小时前
深入解析TCP Keep-Alive机制:原理、作用与最佳实践
网络·网络协议·tcp/ip
耕耘虫19 小时前
解决 .Net 6.0 项目发布到IIS报错:HTTP Error 500.30
网络·网络协议·http·iis·net·静态文件·.net 6.0
前端切图仔00121 小时前
WebSocket 技术详解
前端·网络·websocket·网络协议