
1) 【一句话结论】前端通过合理配置强缓存与协商缓存策略,可减少网络请求、加速资源加载,降低服务器压力,在腾讯云CDN等场景中进一步优化全球用户访问体验。
2) 【原理/概念讲解】缓存是前端提升性能的核心手段,本质是存储已请求资源,下次直接返回。
Cache-Control(如max-age=86400)或Expires判断资源是否过期,若未过期则直接从缓存返回,无需请求服务器。If-None-Match(Etag)或If-Modified-Since,服务器根据资源变化判断是否返回新内容(304 Not Modified表示未变,继续用缓存;返回新内容则更新缓存)。3) 【对比与适用场景】
| 特性 | 强缓存 | 协商缓存 |
|---|---|---|
| 定义 | 浏览器根据响应头判断资源是否过期,直接返回缓存 | 浏览器先检查本地缓存,未命中则请求服务器 |
| 关键头 | Cache-Control: max-age=... 或 Expires | If-None-Match 或 If-Modified-Since |
| 作用 | 避免重复请求,加速资源加载 | 区分资源是否更新,减少无效请求 |
| 适用场景 | 静态资源(图片、CSS、JS,如CDN图片) | 动态资源(API接口,如用户数据、实时信息) |
| 注意点 | 需正确设置过期时间,避免缓存失效 | 需配合Etag/Last-Modified,避免缓存穿透 |
4) 【示例】
Cache-Control: max-age=86400(1天),Expires: Mon, 26 Feb 2024 10:00:00 GMTCache-Control: max-age=86400,Expires: Mon, 26 Feb 2024 10:00:00 GMTIf-None-Match: "abc123"(本地缓存的Etag)304 Not Modified(资源未变,继续用缓存)或 200 OK(资源更新,返回新内容并更新缓存)。5) 【面试口播版答案】
“面试官您好,前端利用缓存提升用户体验的核心是通过减少网络请求,加速资源加载。具体来说,我们通过合理配置缓存策略,比如强缓存和协商缓存。强缓存是浏览器根据响应头中的Cache-Control或Expires判断资源是否过期,若未过期则直接从缓存返回,比如腾讯云CDN为静态图片设置max-age=86400,用户访问时直接从CDN缓存获取,避免回源,加速加载。协商缓存则是浏览器先检查本地缓存,若未命中则向服务器发送If-None-Match或If-Modified-Since,服务器根据Etag或Last-Modified判断是否返回新内容,比如API接口,若资源未变则返回304,减少服务器压力。通过这些策略,能有效提升用户访问速度,降低服务器负载,优化整体体验。”
6) 【追问清单】
no-cache要求每次请求都向服务器验证,no-store不缓存任何内容,适用于敏感数据。7) 【常见坑/雷区】
Cache-Control更灵活,推荐使用。If-None-Match(更精确)。