51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

解释前端缓存策略(浏览器缓存、Service Worker缓存、CDN缓存)在短视频平台中的应用,并说明如何配置以提升用户访问速度。

快手前端开发工程师 📦 工程类难度:中等

答案

1) 【一句话结论】
短视频平台通过浏览器缓存(控制静态小资源)、Service Worker(离线视频分片缓存)、CDN(边缘加速视频流)的协同,结合版本控制(ETag/URL参数)和分片策略,优化资源加载,提升用户访问速度与离线体验,降低服务器负载。

2) 【原理/概念讲解】
老师:咱们先讲三种缓存的核心逻辑,别绕。

  • 浏览器缓存:基于HTTP协议的缓存机制,分“强缓存”(直接命中,无需请求服务器)和“协商缓存”(缓存失效后请求服务器)。通过Cache-Control(如max-age)、Expires等HTTP头控制缓存行为。比如用户请求视频缩略图,浏览器先检查缓存头,若满足条件则直接从缓存读取,否则请求服务器。
  • Service Worker:浏览器提供的后台线程,可拦截网络请求,缓存资源,实现离线访问。通过install事件缓存关键资源(如首页、视频分片),fetch事件拦截请求,优先返回缓存内容。比如用户首次访问时,Service Worker缓存视频分片,离线时仍能播放。
  • CDN:分布式内容分发网络,通过边缘节点缓存资源,用户访问时从就近节点获取,减少延迟。视频流(HLS/DASH)需CDN支持分片缓存,按时间分片(如1分钟一段),用户按需加载。

3) 【对比与适用场景】

缓存类型定义特性使用场景注意点
浏览器缓存HTTP协议中的资源缓存机制强缓存(直接命中,无需请求服务器)、协商缓存(缓存失效后请求服务器)静态小资源(图片、CSS、JS、字体),减少重复请求,降低服务器负载需正确设置Cache-Control(如max-age)、Expires,避免冲突导致失效
Service Worker浏览器后台线程,拦截请求离线缓存、资源预缓存,可控制缓存策略(如Cache-First、Network-First)离线访问、视频分片缓存,提升离线体验需用户允许(首次访问提示),避免缓存不必要资源(缓存污染)
CDN缓存分布式边缘节点缓存边缘节点就近访问,减少延迟,支持视频流分片缓存大流量视频、图片、静态资源,加速用户访问,降低源站压力配置回源策略(全缓存/动态回源),成本与性能权衡

4) 【示例】

  • 视频分片缓存:10分钟视频按1分钟分片(video1.mp4?part=1),CDN设置全缓存,Cache-Control: public, max-age=604800, immutable。
  • Service Worker缓存分片:
    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);
        })
      );
    });
    
  • CDN配置:视频资源回源策略设为“全缓存”,缓存时间1年,Cache-Control: public, max-age=31536000, immutable,URL加版本参数?v=1.0.1。

5) 【面试口播版答案】
面试官您好,关于前端缓存策略在短视频平台的应用,核心是通过浏览器缓存、Service Worker和CDN从不同层面优化资源加载,结合视频分片、版本控制等策略,提升用户访问速度与离线体验。比如用户点开视频缩略图,浏览器先检查缓存,若满足条件直接加载,否则请求服务器;Service Worker缓存视频分片,用户首次访问时缓存,离线还能播放;CDN通过边缘节点加速视频流,用户从就近节点下载,减少延迟。配置上,浏览器缓存正确设置缓存头,Service Worker缓存关键分片,CDN配置视频全缓存,结合版本号确保资源更新。这样三者协同,能显著提升加载速度,降低服务器负载。

6) 【追问清单】

  1. 如何处理缓存失效(资源更新后用户仍用旧版本)?
    回答要点:通过URL查询参数(如?v=1.0.1)或ETag协商缓存,确保资源更新时浏览器请求新版本。
  2. 视频分片缓存如何管理内存?
    回答要点:按需缓存分片,比如用户播放视频时,只缓存当前及后续分片,用LRU淘汰策略控制内存。
  3. 如何验证缓存效果?
    回答要点:用WebPageTest监控加载时间(减少50%请求),缓存命中率(>90%)。

7) 【常见坑/雷区】

  1. 缓存失效导致旧版本:未设置版本号或ETag,资源更新后用户仍用旧版本。
  2. Service Worker缓存污染:缓存了动态数据(如用户实时数据),导致缓存过大且无效。
  3. CDN回源策略错误:动态内容设为全缓存,导致无法获取最新数据。
  4. 视频分片缓存配置不当:分片过小导致请求过多,过大导致离线缓存不足。
  5. 忽略网络环境适配:离线场景未合理配置Service Worker缓存策略,影响体验。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1