扬中市文章资讯

web面试常问http缓存解析相关

2026-03-31 12:30:01 浏览次数:3
详细信息

HTTP缓存是Web开发面试中高频且核心的考点,理解它对于优化性能和解决问题至关重要。下面我将以面试回答的形式,为你系统解析HTTP缓存。

一、核心概念(一句话开场)

HTTP缓存是一种通过存储资源副本并在后续请求中复用的技术,旨在显著减少网络延迟、降低服务器负载、提升用户体验。

二、缓存位置(从哪里读缓存?)

强缓存(本地缓存)

协商缓存(对比缓存)

三、关键HTTP头字段(如何控制缓存?)

这是面试重点,需要分两类说清楚。

1. 强缓存相关字段

浏览器检查这两个字段,决定是否使用强缓存。优先级:Cache-Control > Expires

2. 协商缓存相关字段

成对出现,由服务器返回,用于验证。

四、完整的缓存决策流程图(必背!)

你可以这样描述或画图:

1. 浏览器发起资源请求。
2. 检查是否有强缓存(Cache-Control/Expires)。
   └─ 若有,且未过期 -> 直接从缓存读取 (200 from cache),流程结束。
   └─ 若没有或已过期 -> 进入步骤3。
3. 浏览器准备发起请求,检查是否有协商缓存标识(Last-Modified/ETag)。
   └─ 若没有 -> 直接向服务器请求新资源 (200)。
   └─ 若有 -> 在请求头中带上 `If-Modified-Since` 或 `If-None-Match`。
4. 服务器收到请求,验证缓存是否有效。
   └─ 若有效 -> 返回 304 Not Modified,浏览器使用本地缓存。
   └─ 若无效 -> 返回 200 和新资源,并更新响应头的缓存标识。

五、实际应用策略(如何配置?)

这是体现你工程能力的地方。

六、常见面试题(举一反三)

用户点击“刷新”按钮和“强制刷新”(Ctrl+F5)有什么区别?

为什么有了Last-Modified还要ETag?

缓存存在哪里?内存和硬盘有什么区别?

如何更新一个被强缓存的资源?

CDN缓存和浏览器缓存是什么关系?

七、回答技巧总结

掌握以上内容,你不仅能应对绝大多数HTTP缓存的面试问题,还能展现出你对Web性能优化的深入理解。

相关推荐