缓存机制

在浏览器缓存中,强制缓存协商缓存是两种重要的缓存机制,它们的作用和使用场景有所不同。

强制缓存(Cache-Control)

  • 定义:当资源在强制缓存中时,浏览器会直接使用缓存的资源,而不发起网络请求。
  • 控制方式
    • HTTP 响应头:使用 Cache-ControlExpires 来设置。
    • Cache-Control 的常见指令:
      • max-age=<seconds>:指定资源在缓存中有效的时间。
      • public:任何缓存都可以缓存该响应。
      • private:只有用户的浏览器可以缓存。
  • 示例
1
Cache-Control: max-age=3600

协商缓存

  • 定义:当强制缓存过期或未命中时,浏览器会发起请求,并通过一些条件来判断缓存的有效性。
  • 控制方式
    • HTTP 请求头:使用 If-None-Match(与 ETag 一起使用)或 If-Modified-Since(与 Last-Modified 一起使用)。
  • 流程
    • 浏览器发送请求时附带条件头。
    • 服务器根据条件判断资源是否被修改:
      • 如果未修改,返回 304 Not Modified 响应,浏览器使用缓存。
      • 如果修改,返回新的资源。
  • 示例
1
If-Modified-Since: Sat, 29 Oct 2022 19:43:31 GMT

总结

  • 强制缓存:通过设置时间等直接决定是否使用缓存,效率高。
  • 协商缓存:在强制缓存过期后,通过服务器确认资源是否被修改,保证数据的时效性。

使用这两种缓存机制可以有效提高页面加载速度和用户体验。


缓存机制
https://garlandqian.github.io/2024/09/24/Interview/js/缓存机制/
作者
Garland Qian
发布于
2024年9月24日
许可协议