离线同步与 Web Push

共 17 题
#

1. IndexedDB 在 PWA 离线数据存储的工程价值

A IndexedDB 适合存小字符串键值
B IndexedDB 与 localStorage 容量相同
C IndexedDB 的读写是同步的
D IndexedDB 存结构化数据并提供事务与索引查询,是离线数据底座,但 API 异步、事务生命周期与容量需治理 ✓ 正确答案
#

2. Push API(VAPID 密钥、订阅推送、Notification 权限)

A 订阅时不需要 Notification 权限
B payload 明文传输
C VAPID 私钥可以放在前端
D Push 链路为 VAPID 密钥签名、订阅(userVisibleOnly+公钥)、服务端推送、SW push 事件,私钥必须保密 ✓ 正确答案
#

3. App Shell 模型与离线 fallback 页面

A App Shell 指所有页面内容都预缓存
B App Shell 预缓存静态外壳保证壳离线可用,内容按需加载,离线时导航返回预缓存的 fallback 页面 ✓ 正确答案
C fallback 页面不需要预缓存
D 离线时只能显示浏览器错误页
#

4. Web Push 的完整工作流,应用服务器用 VAPID 签名(RFC 8292)、经推送服务投递、payload 加密(RFC 8291)与 Service Worker 解密

A payload 是明文传输的
B 推送服务不校验订阅有效性
C VAPID 公钥不需要随请求提供
D 应用服务器用 VAPID 私钥签 JWT(RFC 8292)、用订阅公钥加密 payload(RFC 8291),浏览器在 SW push 事件中解密 ✓ 正确答案
#

5. PushSubscription 的生命周期管理(subscribe/unsubscribe)与 pushsubscriptionchange 事件的过期续订处理

A 订阅创建后永久有效
B 服务端不需要保存订阅记录
C pushsubscriptionchange 与推送无关
D 订阅可能因过期/迁移失效,pushsubscriptionchange 中重新订阅并同步服务端,unsubscribe 需联动清理记录 ✓ 正确答案
#

6. Periodic Background Sync 与一次性 Background Sync 的差异、注册条件与浏览器兼容现状

A 周期同步与一次性同步触发时机相同
B 周期同步注册无条件限制
C 一次性同步在联网后尽快触发,周期同步需安装、参与度与授权且尽力而为,Safari 支持有限需降级策略 ✓ 正确答案
D 所有浏览器都支持两类同步
#

7. 数据同步冲突处理与离线读写策略

A 冲突处理需版本元数据与仲裁策略(LWW/版本向量/合并),离线写用幂等队列重放,读用缓存优先 ✓ 正确答案
B LWW 策略没有误覆盖风险
C 离线写入可以无条件覆盖服务端
D 同步不需要幂等设计
#

8. Service Worker 的 push 事件中展示 Notification 与 click 事件导航打开目标页的处理

A 点击通知会自动打开应用首页
B 通知 data 可以放任意大内容
C push 事件内 showNotification 展示通知,notificationclick 中优先聚焦已开窗口导航,否则 openWindow 打开 ✓ 正确答案
D 通知展示不需要 waitUntil
#

9. 推送权限申请的 UX 时机与两步确认(pre-permission prompt)模式对转化率的影响

A 权限弹窗可以反复弹出直到用户同意
B 被拒绝后没有补救方案
C 申请时机不影响转化率
D 权限弹窗一次性且不可重来,应先做页面内引导(两步确认)再触发系统弹窗,并用埋点优化申请时机 ✓ 正确答案
#

10. iOS Safari Web Push(16.4+)的限制(需添加到主屏幕、仅 standalone)与适配策略

A iOS Safari 标签页即可使用 Web Push
B iOS Web Push 需先添加到主屏幕且 standalone 模式,需引导安装后申请权限,并对未安装用户提供降级 ✓ 正确答案
C iOS 推送与 Android 推送行为完全一致
D iOS 不需要用户授权即可推送
#

11. 推送消息 payload 大小限制与静默推送(data-only push)唤起页面执行后台任务的取舍

A payload 可以携带任意大小内容
B payload 有约 4KB 上限,静默推送受限且浏览器治理滥用,推送应传信号、内容按 id 拉取 ✓ 正确答案
C data-only 推送可以无限制后台执行
D 静默推送不需要展示通知
#

12. Badging API(navigator.setAppBadge)在已安装 PWA 的角标更新

A Badging API 在普通标签页也可用
B 角标只能由页面更新
C setAppBadge 更新已安装 PWA 的图标角标,需统一数据源并在推送/阅读时同步,平台支持差异需降级 ✓ 正确答案
D 所有平台都支持角标
#

13. 离线优先策略与 stale-while-revalidate 在大型 SPA 的离线体验工程价值

A SWR 策略每次强制走网络
B 离线优先会让数据永远过期
C 离线优先分壳/数据/操作三层,数据层用 SWR 先缓存后更新,需版本化缓存并治理敏感数据 ✓ 正确答案
D SWR 不需要请求合并
#

14. PWA 可观测性与崩溃恢复

A SW 内部无法采集指标
B PWA 可观测性覆盖页面/SW/推送三层,缓存与 SW 异常需自愈机制(重建、重注册)并纳入告警 ✓ 正确答案
C 缓存损坏无法修复
D 崩溃恢复只依赖浏览器
#

15. IndexedDB 游标与事务在离线优先(Offline First)

A 游标一次性返回全量数据
B 事务可以在中间任意等待网络
C 游标用于分页遍历与范围查询,事务保证批量写原子性,事务内不能跨异步操作且需控制时长 ✓ 正确答案
D 索引越多性能越好
#

16. 用户订阅状态与服务端记录的多端同步、失效订阅清理的工程实践

A 一个用户只能有一条订阅记录
B 退出登录不需要清理订阅
C 订阅记录按用户身份绑定支持多端管理,推送服务返回 410 表示失效需清理,操作需幂等 ✓ 正确答案
D 失效订阅可以无限重试
#

17. Background Sync 的重试机制与网络状态(sync 事件在网络恢复后重触发)的协作

A sync 事件由页面 online 事件触发
B 同步任务不需要幂等设计
C 重试次数没有限制
D 浏览器在网络恢复时触发 sync 事件,失败可重排队但有限制,需结合前台刷新兜底并保证幂等 ✓ 正确答案