如果无服务器意味着没有后端服务器呢?

一篇提出“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 或第三方服务时,完全避免后端的可行性。

总体情绪

  • 许多人认为这个实验在思想上很有趣,并且符合隐私/本地控制的目标。
  • 但对术语、缺乏同步/备份、运行稳健性,以及它是否真的优于设计良好的桌面或混合本地+云应用,仍然存在相当大的怀疑。