跳到主要内容

~/posts · 2026.11.06

把记录存进文件页,为什么带宽又跑满了

把文件条目与不可变内容拆开,保存记录里的附件时可以共用原来的密文。

1 分钟 devshan

把一条带附件的记录保存到文件页,我注意到网络流量又跑起来了。大文件本来就在同一个桶里,换个入口保存,怎么还要重新传一遍?

旧实现会先读取、解密,再按新文件身份加密上传。追到分块认证时才看清:之前 AAD 绑定了对象身份、版本和块序号,新文件条目的 ID 直接拿去读旧块,认证就会失败。单纯改路径或者做 S3 CopyObject 都解决不了。

我把逻辑条目与不可变内容分开。条目负责名字、目录和时间,内容引用指向确定的对象与版本,读取时继续使用原来的认证身份。一条记录附件和一个文件条目可以共同引用同一份密文。

保存已有附件,只新增条目和引用。正文存成 TXT 时,再生成并上传新的文本内容。元数据读取和发布仍有少量流量,大附件主体可以省下来。

验证时我分开统计附件块、元数据和新正文的请求。已有附件块没有 GET、PUT 或 CopyObject,新增正文能读到实际字节。

删除也要跟着调整:原记录删掉以后,文件页可能还在用这些块,得按引用决定回收。编辑文件则写新内容版本,只更新当前条目的引用。复制、预览、缩略图和导出都接到同一个内容解析入口,省去各处自己拼路径的做法。