HTTP的场景实践|青训营

155 阅读2分钟

1. 强缓存: 强缓存是通过设置响应头信息来实现的,主要包括两个字段:Cache-ControlExpires

  • Cache-Control:通过在响应头中设置Cache-Control字段,可以控制资源的缓存行为。常见的指令包括:
    • public:资源可以被任何缓存(包括浏览器和CDN)缓存。
    • private:资源只能被私有缓存(如浏览器缓存)缓存,不应被CDN缓存。
    • max-age=xxx:指定资源的有效时间,单位为秒。
  • Expires:通过在响应头中设置Expires字段,可以指定一个绝对时间,浏览器在这个时间之前可以直接使用缓存。

2. 协商缓存: 协商缓存是通过在请求时与服务器进行验证来确定是否使用缓存的策略。在请求头中,浏览器会发送一个If-Modified-Since字段或者一个If-None-Match字段,分别表示上次服务器返回的响应的时间和一个响应的唯一标识(通常是一个哈希值)。服务器收到请求后,会根据这些字段的值和资源的最新状态来判断是否使用缓存返回响应。如果资源未发生变化,则返回一个304 Not Modified的响应状态,浏览器会直接使用缓存。

对于谷歌浏览器而言,在开发者工具中的Network面板提供了对缓存的详细分析。可以看到每个请求的缓存状态、缓存命中/未命中情况,以及缓存的相关信息。

示例代码片段如下:

fetch('https://example.com/api/data', {
  method: 'GET',
  headers: {
    'Cache-Control': 'no-cache',
  },
})
  .then(response => {
    if (response.status === 200) {
      // 处理响应
    } else {
      // 处理错误
    }
  })
  .catch(error => {
    // 处理网络错误
  });

在上述示例中,我们通过使用fetch API发送一个GET请求,并在请求头中设置了Cache-Control: no-cache。这将使浏览器绕过强缓存,发送一个带有条件的请求,以验证对应资源的协商缓存。

总结而言,在前端开发中,了解浏览器的缓存策略对于优化页面性能至关重要。谷歌浏览器作为一款主流浏览器,支持强缓存和协商缓存,可以通过设置相应的请求头字段来优化请求的缓存策略。这样可以减少多余的网络请求,提高页面加载速度,并降低服务器的压力。