
1) 【一句话结论】
短视频平台通过浏览器缓存(控制静态小资源)、Service Worker(离线视频分片缓存)、CDN(边缘加速视频流)的协同,结合版本控制(ETag/URL参数)和分片策略,优化资源加载,提升用户访问速度与离线体验,降低服务器负载。
2) 【原理/概念讲解】
老师:咱们先讲三种缓存的核心逻辑,别绕。
Cache-Control(如max-age)、Expires等HTTP头控制缓存行为。比如用户请求视频缩略图,浏览器先检查缓存头,若满足条件则直接从缓存读取,否则请求服务器。install事件缓存关键资源(如首页、视频分片),fetch事件拦截请求,优先返回缓存内容。比如用户首次访问时,Service Worker缓存视频分片,离线时仍能播放。3) 【对比与适用场景】
| 缓存类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 浏览器缓存 | HTTP协议中的资源缓存机制 | 强缓存(直接命中,无需请求服务器)、协商缓存(缓存失效后请求服务器) | 静态小资源(图片、CSS、JS、字体),减少重复请求,降低服务器负载 | 需正确设置Cache-Control(如max-age)、Expires,避免冲突导致失效 |
| Service Worker | 浏览器后台线程,拦截请求 | 离线缓存、资源预缓存,可控制缓存策略(如Cache-First、Network-First) | 离线访问、视频分片缓存,提升离线体验 | 需用户允许(首次访问提示),避免缓存不必要资源(缓存污染) |
| CDN缓存 | 分布式边缘节点缓存 | 边缘节点就近访问,减少延迟,支持视频流分片缓存 | 大流量视频、图片、静态资源,加速用户访问,降低源站压力 | 配置回源策略(全缓存/动态回源),成本与性能权衡 |
4) 【示例】
video1.mp4?part=1),CDN设置全缓存,Cache-Control: public, max-age=604800, immutable。self.addEventListener('install', event => {
event.waitUntil(
caches.open('video-caches-v1').then(cache => {
return cache.addAll([
'/assets/video1.mp4?part=1',
'/assets/video1.mp4?part=2',
'/assets/video1.mp4?part=3'
]);
})
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request).then(response => {
return response || fetch(event.request);
})
);
});
Cache-Control: public, max-age=31536000, immutable,URL加版本参数?v=1.0.1。5) 【面试口播版答案】
面试官您好,关于前端缓存策略在短视频平台的应用,核心是通过浏览器缓存、Service Worker和CDN从不同层面优化资源加载,结合视频分片、版本控制等策略,提升用户访问速度与离线体验。比如用户点开视频缩略图,浏览器先检查缓存,若满足条件直接加载,否则请求服务器;Service Worker缓存视频分片,用户首次访问时缓存,离线还能播放;CDN通过边缘节点加速视频流,用户从就近节点下载,减少延迟。配置上,浏览器缓存正确设置缓存头,Service Worker缓存关键分片,CDN配置视频全缓存,结合版本号确保资源更新。这样三者协同,能显著提升加载速度,降低服务器负载。
6) 【追问清单】
?v=1.0.1)或ETag协商缓存,确保资源更新时浏览器请求新版本。7) 【常见坑/雷区】