PWA 与离线

浏览器持久存储请求:何时调用,如何解释浏览器可能拒绝

在用户创建可恢复大任务后请求 navigator.storage.persist,展示用途与当前状态,并在拒绝或驱逐风险下提供导出和清理。

把它做成生产功能之前,需要先拆开协议事实、产品承诺和运行成本,三者混在一起很容易得到错误结论。 持久化降低浏览器在存储压力下自动驱逐概率,不是无限配额或备份。不同浏览器基于安装、互动和站点信誉自动决定。

离线体验必须诚实区分本地可用、等待同步和服务端已确认。缓存版本、命令队列和冲突解决要一起设计,否则重新联网只会放大旧操作与新事实的冲突。

落地方案的关键部件

这项能力横跨客户端、网络与服务端,局部最优很容易制造全局故障。工程决策需要同时约束两端行为、持久化事实和运维预算。

  • 先查询 persisted,只在已有重要断点数据时以用户动作触发请求;结果写设置页,拒绝后不循环提示并显示本地数据风险。
  • 为状态写出唯一所有者、版本号和终态;任何回调只能修改自己创建的版本。
  • 资源释放是协议的一部分:定时器、句柄、队列和临时数据都要在终态中可重复清理。

“浏览器持久存储请求:何时调用,如何解释浏览器可能拒绝”的交付标准是正常路径可用、异常路径收敛、资源有界,并且用户能理解系统为何采用当前状态。 这样得到的不是演示代码,而是能解释、能降级、能回滚的生产能力。

别让错误假设进入生产

生产问题往往发生在两个正确动作同时到达时。需要逐条检查迟到消息、重复执行、资源耗尽和版本交叉,而不是只补当前堆栈显示的那一行。

  • 首次访问就请求没有上下文且容易拒绝;文案说“永久保存”会在用户清理站点数据后变成错误承诺。
  • 旧响应在新任务建立后迟到,如果没有版本隔离,会把健康状态覆盖成失败或再次启动已取消工作。
  • 只在理想数据量下测试,真实的大文件、长会话或高并发会越过隐含上限并产生级联故障。

发布闸门应该检查什么

发布闸门应包含确定性回归、随机时序探索和真实浏览器组合。发现一次失败后保存 seed 与状态轨迹,让它永久成为可重放用例。

  1. 在已安装/未安装、高互动/新站点、拒绝和磁盘压力环境测试,任务恢复、风险文案、清理与导出都保持可用。
  2. 连续执行一百次开始、失败、重试和取消,检查句柄、监听器、队列及临时数据回到基线。
  3. 发布前记录成功率、p50/p95/p99 延迟、错误分类和资源高水位,并为回退条件设定明确阈值。

最终交付标准应当是:正常路径足够快,异常路径能够收敛,用户意图不会被自动恢复覆盖,运维人员也能从有限而安全的证据定位问题。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用