Azure CDN「Purge(清除)」命令在自定义域名场景下未按预期生效问题咨询
Azure CDN自定义域名与默认域名的缓存隔离问题解答
首先直接给你结论:没错,Azure CDN的自定义域名和默认域名确实会维护独立的缓存实例,这就是你遇到问题的核心原因。
为什么会出现这种情况?
Azure CDN的每个自定义域名本质上是作为一个独立的「端点(Endpoint)」存在的——哪怕你通过DNS CNAME把自定义域名指向了默认CDN域名,这两个端点在CDN系统里是完全隔离的,各自维护自己的缓存池、规则配置和缓存生命周期。
你之前执行「Purge all」操作时,大概率是在默认域名对应的端点下进行的,而自定义域名的端点缓存完全没被触及,所以自定义域名依然返回旧内容。而后来你重新执行Purge并指定路径,同时修改缓存规则,应该是在自定义域名的端点也做了操作(或者你在Profile级别选择了所有端点),才让自定义域名加载到了新内容。
至于你提到之前用NGINX没遇到这个问题,是因为NGINX是单节点的缓存服务,所有域名指向同一个缓存实例,而Azure CDN是分布式多端点架构,每个自定义域名都是独立的缓存单元,这是云CDN和传统单节点缓存的核心差异之一。
如何确保每次清除缓存操作都生效?
这里给你几个实操建议:
- 针对所有相关端点执行清除:在Azure门户执行Purge操作时,一定要确认你选择了所有需要更新的端点——包括默认CDN域名的端点和自定义域名的端点。如果你的CDN Profile下有多个端点,直接在Profile级别执行Purge并勾选所有端点是最高效的方式。
- 使用覆盖性的清除路径:执行Purge时,不要只依赖「Purge all」(有时候可能因为端点配置问题出现遗漏),手动指定路径「/」和「/*」,确保覆盖所有资源路径。
- 优化缓存规则与发布流程:
- 发布前,临时将非静态资源(比如页面HTML)的缓存规则改为「Bypass cache」,发布完成后再恢复原有规则,避免用户看到新旧混合的内容。
- 对静态资源(比如/img下的文件)使用版本化路径(例如
/img/v2/logo.png),这样发布新版本时不需要清除缓存,用户会自动加载新路径的资源。
- 验证清除状态:执行Purge后,在Azure门户的「清除历史」里查看每个端点的操作状态,确保所有目标端点的清除操作都显示「成功」,不要只通过访问域名来验证。
内容的提问来源于stack exchange,提问作者ksune4ka_00x
相关产品推荐
相关产品推荐

