Expand description
附件的存储与下载:响应里只列 {id, format, bytes, hash},内容用 GET /v2/attachments/{id} 取。
- 保留期与结果相同(
crate::jobs::JOB_TTL,任务结果的保留期);每次再出现同一内容就续期。 - 内容寻址(id 是 SHA-256 前缀加扩展名),同一内容只存一份。
- 占用有上限:内存预算(
pagesift_net::resources::budget)的δ,超出时先淘汰最早过期的。 - 先存在进程内存里。服务开了任务持久化(有存储)时同时写进存储(HTTP API;MCP 只用内存),内存里淘汰了、 或者服务重启了,下载接口从存储里取,到期前链接一直有效;0.90 只存内存,重启或被新图片挤掉后 链接就 404,而任务结果还在。到期的在启动时和下次访问时从存储删掉。
- 有温备时(网关的任务镜像),附件的写入和删除同任务记录一样复制到温备,快照里也带着;
单个附件超过一条复制记录的上限(帧上限的一半,
crate::JobLog::max_op)时只存本地、记警告, 温备接管后这个附件的链接 404。 - 没有存储时只在内存里:重启后没了,内存满了先淘汰最早过期的(易失缓存,不是可靠交付)。
- 下载接口除了 API Key 鉴权外还校验账户授权(
attachment-access/<account>/<id>):未授权返回 404,不泄漏存在性。 - 全局内容寻址与跨账户内容去重保留;同一内容被多个账户各自抓取时,授权关系独立维护。
- 升级前已存、没有授权记录的附件,启动时从已持久化的任务结果回填;回填失败只记警告、不阻塞启动。