dev.to | 📄 原文链接 | 2026-09-07 收录

在只有一格信号的铁皮棚里发帖:纯 JS 离线写入队列实战

来源:dev.to — 2026-09-06

📋 概述

作者运营的船坞建造日志站(boatbuildlog.com)最关键的场景,是用户在只有一格甚至完全没有信号的铁皮棚、谷仓或车道上用手机记录当天进度。因此「一次 POST 失败」不是网络小麻烦,而是意味着用户辛苦写下的一段记录直接丢失,他们会就此放弃记录——功能不是降级而是死亡。文章由此立下铁律「提交绝不可以在失败时毁掉用户输入」,并详细分享了离线队列的工程取舍:用 IndexedDB 而非 localStorage 存储含照片的日志(Blob 而非 base64);重放时现取新 CSRF token 而非连同草稿一起存储;以及一个让修复两次都不生效的 service worker 缓存 bug——因为缓存键只匹配了 pathname,丢了查询串。

🔑 核心要点

💡 金句

如果丢一次用户的输入对你要养成的那个习惯是致命的,那么写入路径需要的是一个队列,而不是一个重试按钮。
← 返回 dev.to 首页