华人外卖系统菜单与 UI 译文常托管在对象存储 + CDN。更新译文不是覆盖同一文件名,而是新版本路径 + 指针切换,否则边缘节点长期旧文案。
一、版本化对象路径
/i18n/{lang}/menu/{store_id}/v{n}.json 上传后,配置 latest 指向 n。回滚把指针指回 n-1,无需删对象。对象 ACL 仅应用账号可写,CDN 回源只读。
版本对象不可变;若发现错字,应上传 v{n+1} 并切指针,而不是修改已发布 v{n} 内容,否则边缘缓存行为不可控。
二、CDN 刷新与缓存头
静态 JSON 宜 Cache-Control 与 ETag 配合;大改走新 URL 自然失效,小改可主动刷新指定目录。海外加速节点刷新记录写入变更单,便于排查部分用户旧文案。
刷新任务失败应告警;财务或运营反馈「只有某区旧名」时,可按节点列表补刷,而不是全量重发 App。
三、与数据库菜单的关系
线上展示以 CDN JSON 或 API 聚合为准;导出宜读下单快照菜名,避免 JOIN 实时表与 CDN 不一致。改字后跑 golden 导出 diff 菜名列。
若后台 DB 与 CDN 双写,宜明确主数据源,避免一端改了一端未同步。推荐 API 读 CDN 版本化文件,DB 存 version 指针。
四、发布与回滚流程
运营在后台提交改字 → 生成 v{n} → 预发验收 → 切 latest → 生产 CDN 刷新 → 各端拉取。回滚仅切指针,分钟级完成,不必发版 App。
发布窗口选当地低峰;回滚演练每季度做一次,确保运维熟悉指针位置与刷新命令。
五、与腾讯同周稿分工
腾讯同题偏多端 version 与 SOP;本篇偏 OSS/CDN 路径与刷新。两篇合并才是华人外卖改字 checklist。
试跑 bucket 与生产隔离;试跑文案不应污染正式 CDN 路径。第二城复制时宜带走 i18n 路径规范与 latest 配置说明。
六、光合同城交付
海外版含 i18n 目录规范与发布说明;定制 CDN 策略另议。商务规则由客户确定;系统侧不抽成客户平台订单。
七、监控与成本
CDN 流量与回源失败率分告警;异常回源可能导致全球用户同时拉源,成本与延迟双升。菜单 JSON 宜 gzip,控制单店文件体积。
八、小结
CDN 译文更新 = 新路径 + 指针 + 按需刷新 + 导出回归。覆盖同名文件是最省事的改法,也是华人社区旧菜名投诉的常见根因。
改字后完整单验收用户端、小票、导出三处;只绿后台不算发布完成。对象存储生命周期策略勿误删仍在用的历史 version 文件,直到确认无回滚需求。
发布窗口选当地低峰;回滚演练每季度做一次,确保运维熟悉 latest 指针与刷新命令。DB 与 CDN 双写时须明确主数据源,推荐 API 读版本化 JSON,DB 存 version 指针,避免一端改了一端未同步。
OSS 流量突增时应排查是否误刷 CDN 或重复拉取大 JSON,菜单文件宜 gzip 并控制单店体积。财务导出菜名列回归宜与 menu bump 同一变更单,未过 diff 禁止对外宣称「菜单已更新」。海外加速节点刷新宜分区域记录,排查「部分用户旧菜名」时可按节点列表补刷而不是全量重发 App。菜单 JSON 体积过大时宜拆分为分类分文件,降低单次拉取失败对整店菜单的影响。变更单宜同时记录 menu_version、CDN 刷新批次与导出 regression 结果,便于节后追溯「哪一步漏验」。对象存储生命周期策略变更前宜与财务确认历史周结保留期,避免自动删档后无法补导上月 CSV。回滚 latest 指针演练宜写入季度运维日历,确保值班能在分钟级恢复旧 menu_version,而不是重新上传全套资源。厨房小票菜名列宜纳入改字回归清单,避免用户端已是新名、小票仍是旧名。