直接回答
应将 CDN 视为模型字节的传输路径,而不是模型身份的权威来源。发布不可变的制品修订,并让客户端清单绑定该修订、格式、经验证的长度,以及存在时的可信摘要。缓存策略应保证不可变 URL 不会悄悄开始提供另一组字节;模型内容改变时,应创建新 URL 或新修订。缓存过期和再验证决定中间节点能否复用已存表示,而摘要或其他可信验证才用于判断字节是否符合预期制品。HTTPS 请求成功或缓存命中都不能证明收到的是计划发布的模型文件。 仓库并未证明 Cove 当前采用了 CDN。E2B 配置指向固定的模型仓库提交,而 E4B 配置的元数据仍是占位数据,并使用可变分支引用。下载器支持配置镜像和 Range 请求,但当前事实卡明确指出 E2B 摘要为空,不可称为已经验证。这些信息说明了为什么 URL 身份、缓存行为、镜像和完整性必须分别处理。本文提供的是设计与验证方法,不表示 Cove 已经部署 CDN,也不宣称有公开模型制品正在分发。 HTTP 缓存包含新鲜度、验证和存储等不同规则。新鲜响应可能根据缓存指令被直接复用;过期响应可能需要向源站再验证,由源站响应决定缓存表示是否继续有效。对于带版本号的模型制品,可变的“latest”路径会产生歧义,因为相同 URL 在不同时间可能对应不同字节。不可变路径能让发布元数据准确标识目标内容,也让回滚成为切换清单或指针的决定,而不是原地覆盖文件。缓存清除可能有传播延迟或仅限某个服务商范围;不能把清缓存作为唯一完整性控制。 Range 请求又带来一层一致性要求。CDN 可能从缓存提供部分内容、重新验证或回源获取。客户端必须根据请求偏移和预期表示检查状态码与 Content-Range。如果用户中断后制品已更新,就不能把另一个修订的范围响应接在旧字节后。适当情况下,ETag 等表示验证器可用于发现变化,但 ETag 不一定是密码学摘要,也不一定证明发布者身份。客户端应按不可变制品策略绑定验证器;当产品声称摘要验证时,仍应检查可信摘要。 缓存头还涉及访问权限与撤销。公开可缓存的模型可能在源站变更之后仍保留在中间节点;受限访问或签名链接需要说明令牌范围、到期时间、URL 日志以及缓存键行为。不要把长期秘密放在容易进入日志或 Referer 的 URL 中。相反,在未理解 CDN 和客户端如何处理续传及再验证之前,也不要机械地设置 private 或 no-store。正确规则取决于制品公开与否、是否受控访问、是否可撤销,以及是否与许可绑定。这些产品事实必须先核实,才能写成分发承诺。 测试应覆盖完整传输链,而不仅是源站。记录请求的 URL 修订、重定向路径、可用的缓存状态、响应状态、Content-Length、Content-Range、验证器、正文摘要和最终安装身份。用冷缓存、热缓存、过期重验证、中断续传、源站修订变化、回滚及故意不匹配的夹具重复测试。破坏性缓存操作应使用非生产对象。即使每个 HTTP 请求都成功,只要字节不匹配,客户端仍必须拒绝。CDN 的 HIT 或 MISS 能解释路径,却不能替代制品验证。 故障处理需要保留清单修订和足以识别响应表示形式的元数据,但不得记录凭据或用户任务内容。回滚应选择曾经验证过的制品身份,然后让客户端获取并再次校验;不要修改旧版本 URL 并期待每个中间缓存立即感知变化。如果必须撤销某个模型,需要定义客户端如何停止使用本地文件,以及如何说明基础设施外部副本的限制;不能承诺控制域外的缓存数据必然删除。缓存行为、制品来源和应用激活是三类不同的运行职责。 ### 操作步骤 1. 定义不可变制品身份。每组发生变化的字节使用新版本 URL,并发布清单,绑定修订、格式、已知长度、存在时的可信摘要,以及来源和许可记录。占位元数据不能当作发布证据。 2. 按访问策略选择缓存规则。明确对象是公开还是受控访问、可缓存多久、何时必须再验证、是否支持撤销;并记录实际 CDN 的缓存键与签名链接行为。 3. 端到端验证范围响应和验证器。经过 CDN 请求完整及部分内容,执行中断续传,并检查状态码、Content-Range、验证器、正文身份和最终摘要。可能混合版本的响应一律拒绝。 4. 测试冷缓存、热缓存、过期对象、回滚及错误正文。同时记录 CDN 观察值和客户端接受结果。即使缓存命中,只要摘要不符也必须失败;未命中但拿到固定且正确字节仍可通过制品校验。 5. 将回滚和撤销分别设计。回滚选择已知良好的不可变修订。如果需要撤销,说明应用激活行为及中间副本的限制,不要承诺清除操作删除了每一份缓存。 ### 验收标准 - 制品字节变化时,一定有新的不可变 URL 或身份。 - 缓存新鲜度和再验证规则符合实际访问模式,且不能替代完整性校验。 - 断点续传不会追加其他表示形式的字节;可用可信元数据时,最终文件会按该元数据验证。 - 回滚选择已知良好的修订,不会在候选文件验证前覆盖唯一可用模型。 ### 比较 | 机制 | 适用作用 | 限制 | |---|---|---| | 不可变版本 URL | 标识一个发布表示形式 | 本身不能校验收到的字节 | | 缓存再验证或清除 | 管理中间节点复用和新鲜度 | 不能证明制品来源,也不能保证全网即时清除 | | 可信摘要 | 比较内容字节 | 预期摘要本身必须通过可信发布渠道取得 | ### 常见问题 **HTTPS 加 CDN 缓存命中能证明模型真实可靠吗?**不能。HTTPS 保护到某个端点的连接,命中只说明复用了缓存;它们都不说明发布者预期了这些确切字节。还需用不可变身份绑定可信发布元数据并验证内容。 **模型文件是否一律应设置 no-cache?**不一定。策略取决于文件是否不可变、是否公开或受限访问,以及如何处理撤销与再验证。不可变对象通常可以安全缓存,但必须通过所选 CDN 的真实链路测试规则。 **ETag 能替代 SHA-256 吗?**不能作一般安全承诺。ETag 是表示验证器,其生成方式和语义由源站或中间节点决定,并不保证是密码学摘要或发布者签名。 **发布更新后 CDN 仍返回旧字节怎么办?**不要覆盖旧版本 URL。发布新的不可变身份和可信清单,保留已知良好的旧修订用于回滚,并要求客户端验证新候选后再激活。
缓存返回的模型与源站元数据发生变化
团队把大型模型放到 CDN 后,希望减少重复回源。用户中断一次下载并在稍后继续;与此同时发布流程更新了模型元数据。团队需要防止来自不同修订的缓存范围响应与旧字节拼接。
决策
采用不可变版本身份、明确缓存再验证规则和客户端表示校验;缓存新鲜度与密码学内容校验以及应用激活分开。
预期结果
客户端只会验证精确固定的字节,或拒绝响应并保留先前可用模型;缓存命中不能单独成为信任决策。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- 不可变版本 URL 与发布清单
- 缓存新鲜度和再验证策略
- 完整及范围响应和最终摘要记录
收到完整字节流还不够;最终落盘、完整性、运行时加载和恢复路径也必须验证。
实施流程
- 为每组字节绑定新身份. 采用版本化或内容寻址路径,只要模型字节改变,路径就必须改变。发布清单记录来源修订、文件格式、已知长度和可信摘要;尚未确认的占位值应明确标记为未验证。
- 明确选择缓存新鲜度和再验证. 针对实际公开或受控分发模式,记录新鲜期、再验证方式、缓存键输入、签名链接到期和撤销预期。确认 CDN 真正遵守预期规则,不能假设一个源站响应头便能控制所有中间缓存。
- 经缓存验证范围响应. 通过实际部署路径测试完整与部分请求。追加写入前检查状态码、Content-Range、验证器、最终修订和正文数据;与已有临时文件表示不同的响应必须拒绝或重启。
- 区分缓存观察值和信任检查. HIT 或 MISS 只作为运维背景记录。若有可信摘要,应校验最终字节,并分别报告传输成功、完整性结果、运行时加载与面向用户的就绪状态。
- 覆盖回滚及陈旧缓存场景. 测试冷缓存、热缓存、陈旧对象、范围中断、新版本、回滚和正文不匹配。候选文件验证与加载之前保留已知良好制品,并说明缓存清除及撤销的能力边界。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 制品一旦发生字节变化,就会换用新的不可变 URL 或身份。
- 缓存规则匹配实际访问模式,不能代替摘要或来源校验。
- 续传会拒绝与已保存制品身份不匹配的范围数据。
- 回滚会选择已知良好制品,不会先覆盖当前可用文件。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 不可变 URL | 发布身份 | 让预期表示可寻址,但不能校验实际字节。 |
| 再验证或清缓存 | 新鲜度管理 | 控制复用行为,但不证明发布者意图或全网即时清除。 |
| 可信摘要 | 内容校验 | 仅当预期摘要来自可信渠道时,才可检查字节是否相同。 |
需要避免的失败模式
- 将缓存命中当作真实性证明
- 覆盖原 URL 却期待所有边缘缓存立即更新
- 把 ETag 等同于密码学摘要
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
HTTPS 加 CDN 命中能证明制品真实吗?
不能。HTTPS 保护到服务端点的连接,缓存命中表示复用已有响应;两者都不证明字节符合发布者意图。还需不可变身份、可信发布清单和内容校验。
所有模型文件都应该使用 no-cache 吗?
不一定。规则取决于制品是否不可变、是否公开或受限,以及撤销和再验证需求。应通过真实 CDN 与客户端路径验证选定规则,而不是一概套用。
ETag 可以替代 SHA-256 吗?
不能作这种通用安全承诺。ETag 的含义和生成方取决于源站或中间层,它不保证是密码学摘要,也不保证是发布者签名;还需按应用策略验证内容与激活流程。
发布新模型后 CDN 仍返回旧字节怎么办?
不要修改原有版本 URL。创建新的不可变身份和可信清单,保留已知良好的上一修订用于回滚,并让客户端在激活前验证候选制品。