
1.
小分段1:问题表现 —— 很多团队在构建时把完整CDN URL(例:https://cdn.prod.example.com/game/v1/manifest.json)硬编码到manifest里,导致客户端包暴露真实CDN地址。
小分段2:风险 —— 曝光运维域名易被爬取、攻击或被第三方镜像,且不利于日后替换CDN服务。
2.
小分段1:步骤(构建端)—— 在构建产物中把资源地址写成占位符或资源ID,例如 /res/asset_123.ab,而不是完整域名。
小分段2:步骤(上线端)—— 在发布时生成一个“更新配置文件”放到安全域名(update.example.com),该文件包含映射逻辑:asset_id -> CDN 路径或 token 信息,客户端启动时先从 update.example.com 拉取该配置,再在内存中拼接真实 URL。
3.
小分段1:构建时设置RemoteCatalogURL为占位符:PlayerSettings或AddressablesProfile使用 ${remote_base}/catalog.json。
小分段2:运行时先请求安全域名:GET https://update.example.com/env?v=1,返回 JSON { "cdn_base":"https://r1.example.net","token":"abc" },把Addressables.RemoteCatalogURL替换为 cdn_base + "/game/catalog.json?token=abc" 并立即加载。
4.
小分段1:步骤—— 后端在下发更新配置时,为每个资源或目录生成短期有效签名(例如 HMAC),URL 如 https://r1.example.net/game/asset?path=asset_123&sig=xxxxx&exp=1650000000。
小分段2:客户端验证与续签—— 客户端仅持有有限期签名,过期后需重新拉取 update.example.com 的配置以获取新签名,避免长期暴露真实CDN地址。
5.
小分段1:使用CNAME或反向代理 —— 把 update.example.com 做为对外入口,内部通过 CNAME 指向实际 CDN 或通过反向代理(nginx)代理真实后端,例:server_name update.example.com; location / { proxy_pass https://cdn-backend; proxy_set_header Host cdn-backend.internal; }。
小分段2:好处 —— 外部只看到 update.example.com,便于切换后端和做流量分割。
6.
小分段1:在CI里增加步骤——(1)生成资源清单并使用资源ID替换域名;(2)生成签名或短期token;(3)把最终“更新配置”上传到 update.example.com 的安全存储(S3+CloudFront 或自建服务);(4)发布版本时只更新 update.example.com 的配置。
小分段2:示例命令 —— 上传配置:curl -X PUT -H "Authorization: Bearer TOKEN" --data-binary @config.json https://update.example.com/api/publish/v1/manifest。
7.
小分段1:检查客户端拉取路径 —— 使用抓包或日志:Unity 使用 Application.log 或 Addressables 的日志,确认首拉是否为 update.example.com 而非 cdn。
小分段2:命令行验证 —— curl -I https://update.example.com/env?v=1 查看返回头;curl -v https://r1.example.net/game/asset?sig=xxx 查看是否 200 或 403,检查签名过期或 CORS 问题。
8.
答:看到CDN域名通常有两个原因:一是客户端在运行时确实需要访问CDN(这是正常的),二是某些第三方库或上报 SDK 可能在崩溃上报或统计上直接使用真实域名。解决办法是审计依赖库,统一把所有外部请求先走 update.example.com 的代理层或使用域名映射,确保运行时拼接的真实 URL 不直接写入持久化日志或包内文件。
9.
答:使用短期签名+边缘缓存策略:签名用于鉴权,但 CDN 边缘应缓存带签名的资源(通过合理设置 Cache-Control 和按参数或签名白名单),同时在边缘层做速率限制与 WAF,既保护源站又保持加速效果。
10.
答:提前做好抽象层——通过 update.example.com 做映射,切换时只需更新映射配置并回滚测试;在切换窗口内保持双写策略(新的CDN同步老的CDN),并逐步引流,监控请求失败率与延迟;同时更新签名密钥并通知客户端在下次启动时刷新配置。