浏览器强缓存与弱缓存
浏览器的缓存机制主要分为两种:强缓存与协商缓存(也称弱缓存)。
强缓存
强缓存是指浏览器在请求一个资源时,不与服务器发生通信,直接从本地缓存中获取资源。如果存在有效的强缓存,浏览器将完全跳过网络请求阶段,显著提升性能和加载速度。
实现方式
强缓存基于HTTP响应头中的特定字段来实现,主要包括:
-
Cache-Control:
- 这是一种相对新鲜度策略,通过设置
max-age
指令来表明资源的有效期(单位为秒)。在此期间,浏览器无需向服务器验证资源是否已更新。
- 这是一种相对新鲜度策略,通过设置
-
Expires:
- 这是一种绝对时间戳策略,用于指定资源的过期时间。若当前时间未超过该时间点,浏览器将使用缓存。
弱缓存/协商缓存
当强缓存失效或不存在时,浏览器会发起网络请求,并携带缓存相关标识到服务器进行验证,询问服务器缓存的资源是否仍有效。这一过程称为协商缓存或弱缓存。
协商机制
协商缓存主要依赖以下HTTP头部信息:
-
Last-Modified / If-Modified-Since:
- 服务器在返回资源时附带
Last-Modified
字段,表示资源最后修改的时间。下一次请求时,浏览器发送If-Modified-Since
请求头,服务器根据这个时间判断资源是否有更新。若无更新,则返回304状态码及新的响应头(不含资源内容),浏览器继续使用本地缓存的资源。
- 服务器在返回资源时附带
-
ETag / If-None-Match:
- 服务器返回资源时可能生成一个唯一标识符
ETag
。客户端再次请求时携带If-None-Match
请求头,服务器依据ETag
判断资源是否被修改。若无修改,同样返回304状态码及新的响应头,浏览器继续使用本地缓存。
- 服务器返回资源时可能生成一个唯一标识符
总结而言,强缓存无需与服务器通信即可决定是否使用缓存,而弱缓存则需要通过与服务器的交互来确认缓存是否仍然有效。。