参考资料 :小林Coding、阿秀、代码随想录
一、HTTP缓存技术
将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网络延迟,提高页面加载速度,并减轻服务器的负担。
HTTP 缓存有两种实现方式,分别是强制缓存和协商缓存。
1. 强制缓存
浏览器判断请求的目标资源是否有效命中强缓存,如果命中,则可以直接从内存中读取目标资源,无需与服务器做任何通讯。
强缓存是利用下面两个 HTTP 响应头部(Response Header)字段实现的,它们都表示资源在客户端缓存的有效期:
- Cache-Control : http1.1 中增加该字段,使⽤ max-age 指令,可以设置资源在缓存中的最⻓有效时间,单位为秒。
- Expires :设置⼀个强缓存时间,此时间范围内,从内存中读取缓存并返回。
Cache-Control 的优先级高于 Expires
2. 协商缓存
与强制缓存不同,协商缓存依赖于客户端和服务器之间的交互,在协商缓存中,服务器在响应中提供了资源的⼀些标识信息,客户端在后续请求中通过这些信息来判断资源是否发生变化,进而判断是否需要重新传输资源。

常用于协商缓存的⼀些头部字段:
1)ETag 和 If-None-Match
- ETag 是服务器为资源⽣成的唯⼀标识符,可以是根据⽂件内容计算出的哈希值。
- 客户端在请求头部的 If-None-Match 字段中携带上次响应的 ETag 值。
- 服务器比较请求中的 If-None-Match 值与当前资源的 ETag 值,如果匹配,表示资源未发⽣变化,返回状态码 304 Not Modified 。
2)Last-Modified 和 If-Modified-Since
- Last-Modified 是资源的最后修改时间,服务器在响应头部中返回
- 客户端在请求头部

本文详细阐述了HTTP缓存技术,包括强制缓存和协商缓存的工作原理,以及HTTP1.0、1.1和2.0版本间的差异。还介绍了完整的HTTP请求/响应流程。
最低0.47元/天 解锁文章
4975

被折叠的 条评论
为什么被折叠?



