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,因为如果不启用强缓存的话,协商缓存根本没有意义。
相关推荐
不一样的故事1261 小时前
将 Git 远程仓库的地址从 HTTP 修改为 SSH,
git·http·ssh
j***48545 小时前
Node.js实现WebSocket教程
websocket·网络协议·node.js
青果网络_xz5 小时前
全球代理IP是什么?它和普通代理有什么区别?
网络·网络协议·tcp/ip
长城20246 小时前
HTTP头信息相关知识了解
http·http头信息·http头字段·头信息·头子段
IUGEI15 小时前
深入解析HTTP长连接原理
java·网络·后端·网络协议·tcp/ip·http·https
阿珊和她的猫18 小时前
HTTP:Web 世界的基石协议详解
前端·网络协议·http
conkl18 小时前
构建健壮的前端请求体系:从 HTTP 状态码到 Axios 实战
前端·网络协议·http
Ace_31750887761 天前
拼多多关键字搜索接口逆向:从 WebSocket 实时推送解析到商品数据结构化重建
数据结构·websocket·网络协议
霖001 天前
ZYNQ——ultra scale+ IP 核详解与配置
服务器·开发语言·网络·笔记·网络协议·tcp/ip
老蒋新思维1 天前
破局与重构:借 “创始人 IP + AI” 开启智能商业新征程|创客匠人
网络·人工智能·网络协议·tcp/ip·重构·知识付费·创客匠人