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,因为如果不启用强缓存的话,协商缓存根本没有意义。
相关推荐
霍格沃兹测试学院-小舟畅学2 小时前
Playwright处理WebSocket的测试方法
网络·websocket·网络协议
坐怀不乱杯魂3 小时前
Linux网络 - HTTPS
服务器·网络·网络协议·http·https
B2_Proxy3 小时前
亚马逊采集的正确打开方式:从合规边界到反爬博弈,再到数据价值落地
服务器·网络·网络协议·tcp/ip·chatgpt
强风7943 小时前
Linux-HTTPS协议原理
网络协议·http·https
lanhuazui104 小时前
雅讯SDK 怎么确认测试的每个http方法是否成功
http
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.5 小时前
双主模式实现HTTP与MySQL高可用
网络协议·mysql·http
WuLaHH6 小时前
可靠UDP协议RUDP
单片机·网络协议·udp
BHXDML6 小时前
计算机网络实验:(三)设置虚拟局域网(VLAN)
网络·网络协议·计算机网络
编程小风筝6 小时前
MAC物理地址和IP网络地址有什么区别?
网络协议·tcp/ip·macos
猿小羽6 小时前
MCP Server 运行模式入门(Streamable HTTP / stdio)
http·ai·ai实战·mcp·mcp server