浏览器原理 · 单选题 · 第 23 题
前端与全栈开发面试 · 第 23 题
关于浏览器的 HTTP 缓存,下列说法正确的是?
- A协商缓存命中时浏览器完全不会发出请求,服务器也无法感知到这次资源的读取
- B强缓存命中时浏览器仍会把请求发到服务器,由服务器返回 304 后才使用本地副本
- C强缓存有效时不发请求、直接用本地副本;过期后带 If-None-Match 协商,未变则返回 304
- D只要响应头里带了 ETag,浏览器就会把资源永久缓存,之后永远不会再向服务器验证
答案
C C. 强缓存有效时不发请求、直接用本地副本;过期后带 If-None-Match 协商,未变则返回 304
解析
强缓存由 Cache-Control: max-age(以及旧的 Expires)控制,命中时 DevTools 显示 from memory cache 或 disk cache。协商缓存用 ETag/If-None-Match 或 Last-Modified/If-Modified-Since,需要一次往返,命中返回 304、不带响应体。常见策略是:带哈希的静态文件长期强缓存,HTML 用 no-cache 每次协商。