雷姆 Agent·念念工作台
首页文章项目

concept / stage 1

HTTP 缓存与资源验证

理解浏览器和服务器如何减少重复下载,并判断本地资源是否仍然有效。

Web 基础Intermediate已完成30 分钟#http-cache#cache-control#etag#last-modified
BEFORE YOU START

学习前置

Web 基础URL、DNS、TCP、HTTP 请求生命周期先学习 ↗

一、这个技术是什么?

网页中的 JavaScript、CSS、图片和字体经常被重复请求。如果每次都从服务器重新下载,页面会变慢,也会浪费带宽。

HTTP 缓存让浏览器在资源没有变化时直接复用本地副本,或者先询问服务器“本地版本还能不能用”。

二、没有它之前发生了什么?

每次打开页面都重新下载资源
↓
重复传输造成慢和浪费
↓
服务器返回资源版本信息
↓
浏览器根据新鲜度或验证结果复用缓存

缓存的目标不是“永远不请求服务器”,而是在正确性和速度之间取得平衡。

三、核心概念

1. Cache-Control

Cache-Control 描述资源可以缓存多久、谁可以缓存,以及是否需要重新验证。

2. Freshness

资源在有效时间内可以直接使用,不需要再次询问服务器。

3. ETag

ETag 是资源版本的标识。浏览器可以通过 If-None-Match 询问服务器资源是否变化。

4. Last-Modified

服务器可以使用最后修改时间作为版本依据,浏览器通过 If-Modified-Since 发起验证。

5. 304 Not Modified

如果资源没有变化,服务器可以返回 304,让浏览器继续使用本地副本,而不是重新传输完整内容。

四、运行流程

五、面试复习

一句话回答

HTTP 缓存通过保存资源副本和版本信息,减少重复下载;资源过期时可以使用 ETag 或 Last-Modified 与服务器验证。

高频追问

  • 304 是否包含完整响应体?
  • ETag 和 Last-Modified 有什么区别?
  • 为什么静态资源文件名经常带 hash?
  • 缓存太久会带来什么问题?

容易答错

不要把缓存命中说成服务器没有参与。强缓存可能不请求服务器,协商缓存仍然需要服务器判断版本。

六、项目展示

在 Next.js 项目中,可以对带 hash 的构建资源设置较长缓存时间,对 HTML 设置较短缓存时间或重新验证,从而兼顾发布速度和内容正确性。

INTERVIEW MODE

面试复习

把知识讲给面试官听
ANSWER

HTTP 缓存通过保存资源副本和版本信息,减少重复下载;资源过期时可以使用 ETag 或 Last-Modified 与服务器验证。

FOLLOW-UP
  • 304 是否包含完整响应体?
  • ETag 和 Last-Modified 有什么区别?
  • 为什么静态资源文件名经常带 hash?
  • 缓存太久会带来什么问题?
WATCH OUT

不要把缓存命中说成服务器没有参与。强缓存可能不请求服务器,协商缓存仍然需要服务器判断版本。

PROJECT PRACTICE

把 HTTP 缓存与资源验证 放进项目里

用真实项目验证概念,再把架构、取舍和结果整理成面试时可以讲清楚的案例。

Hermes AgentAgent 工作流与工具调用
个人博客技术文章与工程实践展示
AI 知识平台当前 Markdown 驱动的知识系统
KEEP EXPLORING

相关知识

2 个推荐节点
Web 基础 · BeginnerURL、DNS、TCP、HTTP 请求生命周期35 分钟 · 继续学习 ↗Web 基础 · Beginner浏览器与服务器如何协作25 分钟 · 继续学习 ↗
← 上一篇Cookie、Session 与 Token下一篇 →React 组件与数据流

课程目录

  1. 1. Cache-Control
  2. 2. Freshness
  3. 3. ETag
  4. 4. Last-Modified
  5. 5. 304 Not Modified
  6. 一句话回答
  7. 高频追问
  8. 容易答错

学习关系

  • 阶段:1
  • 顺序:5
  • 前置知识:1
  • 相关知识:2
  • 更新时间:2026-08-02