HTTP 缓存机制学习笔记 | 豆包MarsCode AI刷题

91 阅读3分钟

在学习 HTTP 缓存时,我发现它和浏览器的运行效率有很大关系。为了更好地理解,我用 Chrome 浏览器做了一些简单的实验,并记录下自己的学习过程和思考,希望能对初学者有所帮助。


什么是 HTTP 缓存?

简单来说,HTTP 缓存就是浏览器在访问某个页面时,会把页面的部分内容存到本地,下次访问时可以直接从本地拿,省去重新加载的时间。这对提高网页加载速度非常重要。


我的实验:用 Chrome 观察缓存

实验目标:看看浏览器是如何缓存静态资源的。
实验工具:Chrome 浏览器和开发者工具(按 F12 打开)。
实验步骤

  1. 打开一个常见的网站(我选了 GitHub 的登录页面)。
  2. 在 Chrome 开发者工具的 Network 面板查看资源加载情况。
  3. 重新加载页面,观察资源状态的变化。

实验结果

第一次加载页面

  • 网络面板中,大部分资源的状态码是 200,这说明这些资源是直接从服务器上获取的。
  • 我查看这些资源的响应头,发现了一个关键字段:Cache-Control: max-age=31536000。这表示这些资源可以缓存 1 年!

再次加载页面

  • 这一次,很多资源的状态显示 (from memory cache) 或 (from disk cache)。这说明浏览器成功使用了缓存,而没有重新请求服务器。
  • 一些资源的状态是 304 Not Modified,这是浏览器和服务器确认后发现资源没有变化的结果。

我学到的 HTTP 缓存知识

通过实验,我总结了一些关键点:

  1. 强缓存(Strong Cache)

    • 浏览器在一定时间内直接使用本地缓存,不发请求到服务器。
    • 表现在网络面板上是 (from memory cache) 或 (from disk cache)
    • 设置字段:Cache-Control 或 Expires
  2. 协商缓存(Conditional Cache)

    • 如果资源没命中强缓存,浏览器会问服务器:“这个资源有更新吗?”
    • 如果没有更新,服务器返回 304,浏览器继续用缓存资源。
    • 相关字段:ETag 和 Last-Modified

我对缓存策略的思考

在开发时,缓存策略应该根据资源的特点来决定:

  • 对于不常变化的资源(比如图片、字体),可以设置较长的强缓存时间,比如 1 年。
  • 对于经常变化的资源(比如 API 数据),可以使用协商缓存,确保用户拿到的是最新的数据。

此外,我还发现一个很实用的小技巧:

  • 使用文件版本号:比如 style.v1.css,当文件更新时改成 style.v2.css,这样即使有强缓存,用户也能获取最新资源。

实验工具的使用心得

在整个实验中,Chrome 开发者工具帮了大忙。以下是几个实用的小功能:

  1. 状态码的提示200304 等状态码很直观地告诉我们资源的来源。
  2. 响应头查看:可以了解资源的缓存规则。
  3. 清除缓存:有时需要通过工具栏的“Disable cache”功能禁用缓存,方便测试不同场景。

总结

通过这次实验,我对 HTTP 缓存有了更深的理解。虽然很多时候缓存规则是后端设置的,但前端开发者也需要了解它的原理,才能更好地利用。希望这篇学习笔记能对大家有所帮助!