强缓存(也称为无协商缓存) 是一种缓存策略,允许浏览器在满足特定条件下直接使用本地缓存的资源,而不必向服务器发送请求确认资源是否是最新的。这种机制减少了不必要的网络通信,提高了页面加载速度。强缓存的依据主要来自于HTTP响应头中的Cache-Control
和Expires
字段。
max-age
指令定义资源可以被缓存多久,从响应被接收那一刻算起。当资源在强缓存有效期内,浏览器直接从本地缓存加载,不会与服务器交互,网络面板中这类请求通常显示状态码为200(从缓存中成功获取)。
协商缓存(也称条件式缓存) 发生在强缓存过期后,此时浏览器会向服务器发送请求,询问资源是否已更新。协商缓存的决策基于资源的某些特性(如修改时间或唯一标识),而不是简单地依赖于时间期限。主要涉及以下HTTP头部:
If-Modified-Since
,服务器比较这个时间和资源实际的最后修改时间,以决定是否返回新内容。If-None-Match
字段),服务器比较ETag来判断资源是否一致。如果资源未改变,服务器会返回一个304 Not Modified状态码,指示浏览器可以继续使用本地缓存的版本;如果资源已改变,则服务器会返回新的资源内容及新的Last-Modified或ETag。
区别总结:
数据来源与交互:
性能影响:
状态码:
控制粒度:
通过结合使用强缓存和协商缓存,网站可以实现既快速响应用户请求,又能确保用户获得最新的内容。