为什么在 activate 事件中清理旧版本缓存而不是在 install 事件中?
围绕“为什么在 activate 事件中清理旧版本缓存而不是在 install 事件中”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明版本化缓存名与清理时机的原因。
PWA · 离线与渐进增强面试题第 1 页,显示第 1–43 题,共找到 43 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“为什么在 activate 事件中清理旧版本缓存而不是在 install 事件中”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明版本化缓存名与清理时机的原因。
围绕“如何检测 PWA 已被安装以及当前是否运行在独立(standalone)窗口模式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分安装事件监听与 display-mode 媒体查询两种检测。
围绕“Background Sync 如何在用户恢复网络后重放离线期间提交的表单请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明注册 sync 事件与 IndexedDB 队列的配合,不讲推送通知。
围绕“beforeinstallprompt 事件如何用于实现自定义安装按钮,为什么默认安装横幅有时不出现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明事件拦截与延迟触发的实现及可安装性条件,不讲 manifest 字段细节。
围绕“Cache Storage API 和浏览器 HTTP 缓存有什么区别,为什么 PWA 离线要显式使用 Cache ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要对比程序化控制与浏览器启发式缓存的可控性。
围绕“带内容哈希的静态资源与 HTML 文档应分别采用什么缓存与失效策略”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分 immutable 长缓存与 HTML 短时效的处理。
围绕“Cache First 缓存策略适用于 PWA 中哪些资源,它最大的风险是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断适合缓存优先的资源类型及内容过期风险,不对比其他策略细节。
围绕“Cache Only 和 Network Only 两种极端策略各自适合什么资源”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分两类极端策略的资源归属与失败表现。
围绕“为什么把 fetch 的 Response 存入缓存前必须 response.clone()”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释响应流只能消费一次及 clone 的正确位置,不讲缓存策略。
围绕“PWA 是否应该把大体积音视频资源纳入离线缓存,取舍标准和替代方案是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖权衡配额占用与按需缓存/Range 请求方案,不讲通用缓存策略。
围绕“Clients.claim() 在什么时候需要调用,不调用会导致什么现象”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释激活后未受控页面的问题与调用时机。
围绕“监听 controllerchange 自动刷新页面为什么可能丢用户数据,更稳妥的做法是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断强制 reload 的数据丢失场景与一次性刷新标记设计,不讲提示 UI。
围绕“如何用 Chrome DevTools 的 Application 面板诊断 Service Worker 注册失败”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出注册状态、Update on reload、Cache Storage 的检查路径。
围绕“离线时图片加载失败如何用临时标记图回退,fetch 事件中如何实现按请求类型的回退”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖描述对图片请求返回预缓存临时标记资源的实现。
围绕“如何在 fetch 事件中识别页面导航请求(request.mode === 'navigate')并与静态资源分流”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明按请求模式分流到不同缓存逻辑的判断方式。
围绕“为什么 PWA 无法在用户首次访问时就提供离线能力,这对「离线可用」的宣传口径意味着什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 SW 需先安装激活才能接管请求的事实与预期管理,不讲安装流程细节。
围绕“为什么 Service Worker 只能在 HTTPS 下注册,localhost 为什么例外”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释安全上下文要求与本地开发例外。
围绕“Service Worker 的 install 事件中预缓存失败会发生什么,如何保证安装原子性”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释 waitUntil 失败导致安装中止的机制与降级方案。
围绕“iOS Safari 上 PWA 的离线能力有哪些实际限制,面试中应如何说明兼容方案”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举存储上限、安装入口等差异与降级思路。
围绕“Lighthouse 的 PWA 审计检查哪些离线相关项,常见不通过的原因有哪些”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕列举离线 200 响应、manifest、SW 注册等检查点与失败原因,不讲性能指标。
围绕“同一站点不同 scope 注册多个 Service Worker 会怎样,如何避免互相覆盖缓存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释 scope 匹配优先级与缓存命名隔离的必要性,不讲生命周期。
围绕“Navigation Preload 如何降低 Network First 页面的启动延迟,启用后要注意什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明预加载请求与 SW 启动并行的机制及 fetch 事件配合,不讲策略对比。
围绕“Network First 策略在什么业务场景下优于 Cache First,网络超时时应如何兜底”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明网络优先的时效性收益与超时回退设计。
围绕“离线状态下 API 数据请求应该如何设计回退,返回缓存数据和返回错误提示如何取舍”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕权衡陈旧数据展示与明确离线提示的产品决策。
围绕“PWA 离线时如何为导航请求提供回退页面(offline fallback page),为什么需要单独处理导航请求”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明导航请求与静态资源请求分开处理的原因及回退页实现。
围绕“navigator.onLine 和 online/offline 事件为什么不足以判断真实连通性,离线功能应如何兜”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖指出该 API 只反映网络接口状态及以请求失败为准的兜底设计,不讲 SW 缓存。
围绕“跨域 no-cors 请求缓存得到的 opaque response 有什么问题,如何影响存储配额统计”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明不透明响应无法校验状态与配额放大的风险,不讲 CORS 细节。
围绕“navigator.storage.persist() 的作用是什么,哪些浏览器行为会因持久存储授权而改变”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释持久存储对驱逐行为的影响与授权条件,不讲配额估算。
围绕“预缓存(precaching)和运行时缓存(runtime caching)的区别是什么,各自适合缓存什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按安装时机划分两类缓存的资源归属。
围绕“渐进增强视角下,浏览器不支持 Service Worker 时站点应如何保证功能可用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明特性检测与核心功能不依赖 SW 的分层设计,不讲具体缓存实现。
围绕“navigator.serviceWorker.register 的 scope 参数和 Service-Worke”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分脚本路径、scope 参数与响应头三者的优先级关系。
围绕“Service Worker 为什么不能直接访问 DOM,离线场景下如何与页面通信”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释线程模型限制与 postMessage 通信方式。
围绕“为什么建议对 Service Worker 脚本本身设置很短的 HTTP 缓存或使用 no-cache”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释脚本被长缓存导致更新延迟的机制,不讲 SW 内部资源缓存。
围绕“ServiceWorkerGlobalScope.skipWaiting() 解决了什么问题,直接使用有什么风险”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明跳过等待期的收益与新旧 SW 混跑的资源不一致风险,不讲 clients.claim。
围绕“Stale-While-Revalidate 策略如何实现,为什么它适合列表页这类场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明先返缓存再后台更新的流程与一致性代价。
围绕“PWA 如何用 StorageManager.estimate() 监控缓存占用,浏览器在什么情况下会主动清除站点存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明配额查询与 LRU 驱逐策略及 persistent 申请,不讲缓存清理代码。
围绕“什么时候应该注销 Service Worker,unregister() 之后缓存会一起清除吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明注销的适用场景及缓存需手动清除的事实,不讲注册流程。
围绕“浏览器如何检测 Service Worker 脚本有更新,byte 比较和 24 小时检查规则是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明更新触发时机与字节级比较规则。
围绕“部署了新代码但用户仍看到旧页面,从 Service Worker 角度列出最可能的原因清单”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕系统性列举缓存名未变、waiting 未激活、HTTP 缓存脚本等原因,不深入单点。
围绕“PWA 缓存如何设计版本化命名,保证发布新版本时旧缓存被安全替换”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖给出命名约定与 activate 清理配合的发布流程,不讲具体策略选择。
围绕“新版 Service Worker 进入 waiting 状态后,如何设计「发现新版本,点击刷新」的更新提示”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖描述注册对象监听与页面提示、确认后激活的流程。
围绕“Web App Manifest 中哪些字段影响 PWA 的可安装性,display 各取值有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖列出安装判定相关字段与 display 模式差异,不讲 Service Worker。
围绕“Service Worker 的 scope 为什么决定它能控制哪些页面,如何影响 PWA 的目录结构部署”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释注册路径与 scope 的匹配规则及部署到子目录的后果。