我使用 Cloudflare R2 + Turso 构建了开源的 “Microsoft Edge Drop” 替代品
发布: (2026年2月23日 GMT+8 04:58)
3 分钟阅读
原文: Dev.to
Source: Dev.to

概览
我最近构建了 Cliff Drop,一个自托管、跨设备的文本和文件共享应用,灵感来源于 Microsoft Edge Drop。有趣的部分并不是 UI,而是存储架构。
存储架构
结构化数据 → Turso(边缘托管 SQLite)
对于消息、元数据和身份验证,我使用了 Turso(libSQL)。
为什么选择 Turso?
- 边缘托管的 SQLite
- 低延迟的全局读取
- 熟悉的 SQL 语法
- 无繁重的数据库操作
- 与 Drizzle ORM 完美配合
它提供了 SQLite 的简洁性,同时具备分布式数据库的特性——无需 Postgres 集群或复杂的复制配置。
文件存储 → Cloudflare R2(兼容 S3)
对于文件上传和图片,我使用了 Cloudflare R2。
为什么选择 R2?
- 兼容 S3 的 API
- 零出口费用
- 大规模对象存储
- 与 Node.js 无缝集成
- 可轻松使用本地回退选项
这使得:
- 存储大文件上传
- 生成缩略图
- 全球分发文件
- 避免带宽费用惊喜
全部无需供应商锁定。
实时与安全
- 原生 WebSocket 实现实时同步
- Argon2id 密码哈希
- HTTP‑only Cookie
- CSRF 防护
- CSP 头部
- 安全的文件处理
技术栈
- SvelteKit(adapter‑node)
- Tailwind CSS
- Node.js
- Drizzle ORM
- Turso
- Cloudflare R2
为什么这种架构重要
Cliff Drop 展示了一种云原生存储设计:将结构化数据与对象存储分离,利用边缘数据库,并使用兼容 S3 的基础设施。它可以在 Linux(systemd / PM2 / Nginx)上直接投入生产。
现代全栈工程不再只是 React + API,而是为每项职责选择合适的存储层:
- 数据库 负责数据完整性
- 对象存储 负责文件
- 边缘 提升性能
- Node 提供控制
即使是小型副项目,也可以像真实系统一样进行架构设计。合理拆分存储,考虑延迟、扩展性和成本,让你的项目更上一层楼。
GitHub Repo: