预缓存(precaching)和运行时缓存(runtime caching)的区别是什么,各自适合缓存什么?
围绕“预缓存(precaching)和运行时缓存(runtime caching)的区别是什么,各自适合缓存什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖按安装时机划分两类缓存的资源归属。
离线应用专题面试题第 3 页,显示第 101–121 题,共找到 121 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“预缓存(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 的匹配规则及部署到子目录的后果。
围绕“在线上 Redis 直接跑大集合的 SINTERSTORE 有什么风险,如何规避”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 O(N) 运算阻塞主线程,应限制集合规模或用从库/离线计算。
围绕“Redis Pub/Sub 与 Streams 做消息分发的可靠性差异是什么,什么场景必须选 Streams”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 Pub/Sub 即发即弃、订阅者离线消息丢失,Streams 持久化存储加消费组可确认重投,需要离线消费与至少一次语义时必须选。
围绕“分片后跨分片的聚合查询和分页如何实现,各方案代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须比较广播查询、冗余汇总表、异步离线聚合三种方案的延迟与一致性代价。
围绕“万人群聊的消息扩散用读扩散还是写扩散,热点群和离线消息如何权衡”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按群大小、在线率与存储放大选择扩散模型。
围绕“聊天离线消息拉取如何设计游标,避免用户上线后重复拉取或漏消息”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定义服务端 max_seq、客户端 ack_seq 与缺口补偿协议。
围绕“如何利用 Webpack 的 contenthash 与 runtime chunk 实现稳定的长效缓存”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明内容哈希命名与运行时代码抽离避免缓存级联失效,不讲 Service Worker 缓存。