CAS 内容寻址存储:上码的核心技术
在传统的静态网站托管方案中,每次部署都需要上传所有文件。而上码采用了 CAS (Content-Addressable Storage) 架构,让部署变得更快、更省带宽。
什么是 CAS?
Content-Addressable Storage,即内容寻址存储,是一种基于内容哈希值来存储和检索数据的技术。
简单来说:
- 每个文件的「地址」就是它的内容的 SHA-256 哈希值
- 相同内容的文件只会存储一份
- 文件一旦写入,内容不可变
CAS 在上码的应用
智能去重
当你上传网站文件时,上码会:
- 在浏览器端计算每个文件的 SHA-256 哈希
- 发送哈希列表到服务端
- 服务端返回「哪些文件需要上传」
- 只上传真正有变化的文件
假设你的网站有 100 个文件,但只修改了 3 个:
- 传统方案:上传 100 个文件
- 上码 CAS:只上传 3 个文件
秒级部署
由于 CAS 对象是不可变的,我们可以放心地使用强缓存:
- 所有 CAS 对象设置
Cache-Control: immutable, max-age=31536000 - CDN 节点可以永久缓存这些文件
- 用户访问时,大部分文件直接从边缘节点返回
版本管理
每次部署会生成一个 manifest(清单文件),记录:
{
"index.html": { "hash": "sha256-abc...", "size": 1234 },
"styles.css": { "hash": "sha256-def...", "size": 5678 },
...
}
回滚版本只需切换 manifest 指针,不需要重新上传文件。
存储结构
R2 Bucket/
├── objects/ # CAS 对象池
│ ├── sha256-abc... # 文件内容
│ └── sha256-def...
└── manifests/ # 项目清单
└── <projectId>/
└── <deploymentId>.json
技术优势总结
| 优势 | 说明 |
|---|---|
| 🚀 更快部署 | 只上传变化的文件 |
| 💾 节省存储 | 相同文件只存一份 |
| ⚡ 极速访问 | 不可变对象 + 强缓存 |
| ⏪ 秒级回滚 | 切换 manifest 指针 |
CAS 是上码的核心技术之一,也是我们能够提供免费套餐的关键——因为去重大大降低了存储成本。
如果你对技术细节感兴趣,欢迎关注我们的技术博客,我们会分享更多架构设计和最佳实践。