如果无服务器意味着没有后端服务器呢?
一篇提出“serverfree”网页应用的博客文章——其所有逻辑和数据都完全运行在用户设备上——引发了人们将其与经典桌面软件、Electron 风格打包,以及更广泛的“local-first”运动进行比较。评论者在隐私、离线能力和更简单计费的吸引力,与跨设备同步、备份、冲突解决和更新等实际问题之间权衡,往往得出结论:仍然需要某种可选的云端或点对点同步。许多人还批评“serverfree”这个标签令人困惑,指出静态托管仍然必需,而且类似想法多年来已在其他名称下被探索过。
“无服务器” / “无服务器”(serverfree)的范围
- 许多人把“无服务器”理解为 Lambda 风格、按每次调用计费的简写;一些人认为这不过是换了个说法的共享主机。
- 有几位不喜欢“serverfree”这个词,因为静态托管本身仍然是一台服务器,而逻辑上的“应用/数据库服务器”仍然存在,只是移到了客户端一侧。
- 有些人更喜欢“local-first”,因为它更清楚:以设备为先、服务器可选;相比之下,“offline-first”或“serverfree”听起来限制更强。
“这不就是桌面应用 / Electron 吗?”
- 多条评论指出,这个提议在很大程度上是在借助浏览器 + SQLite-in-WASM 重现桌面应用,或者 Electron 风格的打包。
- 批评者指出,我们为了重新获得桌面应用早已具备的能力,又绕回了更重、更慢的技术栈。
- 支持者则反驳说,Web 分发(“访问这个 URL,不用安装、不用应用商店、不用代码签名”)在实际中是一个很大的优势。
数据存储、备份与同步
- 核心模型:数据完全保存在本地设备上(例如浏览器 SQLite + OPFS)。
- 担忧包括:
- 没有跨设备的内建同步;用户往往会使用 3–4 台设备,并期待无缝共享。
- 设备损坏或被盗会带来数据丢失风险;手动导出/导入被视为一种“可用性死胡同”。
- 建议的缓解方式:
- 使用通用云存储(Dropbox/Nextcloud/iCloud 等)来同步本地文件,并可选择加密。
- 可选的加密同步到中心服务器,或点对点同步(WebRTC、Bluetooth、LAN、P2P 协议)。
- 区分“哑”存储与应用特定的冲突解决逻辑。
Local-first / 同步技术
- 这个思路与“local-first software”一致:主存储在设备上,同步作为附加能力。
- 评论者提到了新兴工具(例如基于 CRDT 的系统、SQLite 同步层、替代同步协议),并维护比较清单。
- 人们对操作系统级别的通用同步很感兴趣,但也意识到冲突解决往往是应用特定且复杂的。
实现问题
- 引发的问题包括:
- SQLite+WASM+OPFS 与 localStorage 在性能和持久性上的比较。
- 使用一个模仿 HTTP、面向本地数据库的 web worker,相较于直接访问数据库,其开销和收益如何。
- 在纯客户端数据库中进行模式迁移和破坏性变更的问题。
- 当涉及 API keys 或第三方服务时,完全避免后端的可行性。
总体情绪
- 许多人认为这个实验在思想上很有趣,并且符合隐私/本地控制的目标。
- 但对术语、缺乏同步/备份、运行稳健性,以及它是否真的优于设计良好的桌面或混合本地+云应用,仍然存在相当大的怀疑。