缓存机制
在浏览器缓存中,强制缓存和协商缓存是两种重要的缓存机制,它们的作用和使用场景有所不同。
强制缓存(Cache-Control)
- 定义:当资源在强制缓存中时,浏览器会直接使用缓存的资源,而不发起网络请求。
- 控制方式:
- HTTP 响应头:使用
Cache-Control
、Expires
来设置。 Cache-Control
的常见指令:max-age=<seconds>
:指定资源在缓存中有效的时间。public
:任何缓存都可以缓存该响应。private
:只有用户的浏览器可以缓存。
- HTTP 响应头:使用
- 示例:
1 |
|
协商缓存
- 定义:当强制缓存过期或未命中时,浏览器会发起请求,并通过一些条件来判断缓存的有效性。
- 控制方式:
- HTTP 请求头:使用
If-None-Match
(与ETag
一起使用)或If-Modified-Since
(与Last-Modified
一起使用)。
- HTTP 请求头:使用
- 流程:
- 浏览器发送请求时附带条件头。
- 服务器根据条件判断资源是否被修改:
- 如果未修改,返回
304 Not Modified
响应,浏览器使用缓存。 - 如果修改,返回新的资源。
- 如果未修改,返回
- 示例:
1 |
|
总结
- 强制缓存:通过设置时间等直接决定是否使用缓存,效率高。
- 协商缓存:在强制缓存过期后,通过服务器确认资源是否被修改,保证数据的时效性。
使用这两种缓存机制可以有效提高页面加载速度和用户体验。
缓存机制
https://garlandqian.github.io/2024/09/24/Interview/js/缓存机制/