同一阿里云账号下多个 CDN 加速域名默认拥有独立缓存空间,多个域名独立缓存会导致源站被重复回源。为多个域名配置共享缓存,可使多个域名在CDN节点共用缓存资源,公共资源只需从源站下载一次,后续访问直接从共享缓存中获取资源,从而提升缓存命中率、减少回源。
业务场景
同一账号下存在多个 CDN 加速域名,且源站提供大量相同资源时,即使访问不同域名但请求相同文件,节点也会分别缓存,导致源站被重复请求。配置共享缓存可将多个域名的缓存空间合并,资源只需回源下载一次。
场景类型 | 说明 | 示例 |
适用场景 | 多域名共用静态资源 | 多个域名引用相同的 JS/CSS 框架或图片库 |
同一源站,多个入口 | 不同域名指向同一源站,提供相同的静态资源 | |
不适用场景 | 域名间资源完全不同 | 各域名提供独立内容,无公共资源可复用 |
需要独立缓存策略 | 各域名需单独管理缓存过期时间和回源规则 |
工作原理
配置共享缓存后,CDN 使用 rewrite_host 功能函数:在查询和生成 CacheKey 时,用 share_host 参数指定的目标域名替换当前加速域名,使多个共享同一目标的域名能命中同一份缓存条目。该配置不修改回源请求的 Host 头。各域名仍按自己的配置回源,源站收到的 Host 仍是各自的加速域名。
未配置共享缓存
用户访问
a.example.com/image.png,图片被缓存到a.example.com的缓存空间。用户访问
b.example.com/image.png,即使图片已在a.example.com的缓存空间中存在,CDN 仍会从源站重新下载并缓存到b.example.com的缓存空间。
此时每个域名拥有独立的缓存空间,即使资源实际上相同,也会产生额外的回源请求。
已配置共享缓存
用户访问
a.example.com/image.png,图片被缓存到共享缓存空间。用户访问
b.example.com/image.png,CDN 识别到资源相同,直接从共享缓存中获取,无需回源。
回源地址相同
设置共享缓存后,两个域名的回源地址相同(例如均为 origin.example.com)时,可合并缓存空间,进一步提升缓存利用率。
回源地址不同
设置共享缓存后,两个域名的回源地址不同(例如 origin-a.example.com 和 origin-b.example.com)时,若资源的 URL 路径完全相同,生成 CacheKey 时加速域名会被替换为共享域名,即使实际回源地址不同,仍可返回相同的缓存内容。
功能限制
配置共享缓存前,请确认满足以下条件:
同账号限制:只能选择同一阿里云账号的加速域名。跨账号域名无法配置。
域名状态要求:只能选择处于启用(在线)状态的域名。已停用或未启用的域名不会出现在候选列表中。
数量上限:共享缓存仅支持选择一个目标域名,不支持同时配置多个共享目标。候选域名列表最多展示 500 个域名。
资源组隔离:如果当前域名属于特定资源组,候选域名列表将受资源组过滤。
域名删除保护:当域名 A 的共享缓存对象设置为域名 B 时,系统禁止删除域名 B。删除域名 B 会影响其他共享缓存域名的命中率。需先在域名 A 上删除或修改共享缓存配置后,才能删除域名 B。
操作步骤
配置共享缓存
操作前请确认:阿里云账号具有 CDN 控制台操作权限,目标域名已添加并处于启用状态。
登录 CDN 控制台。
在左侧导航栏中,单击域名管理。
在域名列表中,单击目标加速域名,进入该域名的详情页。
在域名详情页左侧导航栏中,单击缓存配置。
在缓存配置页面,单击共享缓存页签。
单击修改配置,打开弹窗,从下拉列表选择一个目标加速域名。
下拉列表仅展示当前账号下处于启用 状态的加速域名,可通过输入框进行模糊搜索。列表最多展示 500 个域名,且自动排除当前正在操作的域名本身。
选择目标域名后,单击确定保存配置。
配置成功后,页面共享缓存列表中将显示已配置的目标域名。
验证配置
在共享缓存页面查看是否显示已配置的目标域名。
对比配置前后不同域名对相同资源的缓存命中率,确认共享缓存已生效。可检查 CDN 日志中
X-Cache响应头的命中情况。
修改共享缓存配置
按照上述配置共享缓存的步骤 1 至步骤 5 进入共享缓存页面,然后执行以下操作:
单击修改配置。
打开弹窗,选择新的目标加速域名,单击确定保存。
删除共享缓存配置
按照上述配置共享缓存的步骤 1 至步骤 5 进入共享缓存页面,然后执行以下操作:
单击删除配置。
在确认对话框中,单击确定。
删除成功后,页面显示未设置。
成本与影响说明
成本说明:配置共享缓存不会产生额外费用。缓存命中率提升可减少回源流量,降低 CDN 使用成本。
开启后的影响:
共享缓存仅在查询和生成 CacheKey 时使用共享域名替换加速域名,不影响加速域名的回源地址和回源 HOST。
加速域名进行账号迁移后,该域名仍可正常使用共享缓存。
删除后的影响:
删除共享缓存配置后,各域名恢复独立缓存空间。已缓存的资源在各自缓存过期前仍然有效。
删除设置了共享缓存的加速域名会影响其他共享缓存域名的命中率。需先在操作域名上删除或修改共享缓存配置,才能删除被共享的域名。
常见问题
不设置共享缓存,不同域名能复用同一份缓存吗?
不能。CDN 的 CacheKey 中包含域名信息,不同域名的请求被视为不同的资源。即使请求相同的源站文件,CDN 节点也会分别缓存。
配置后缓存命中率为什么没有提升?
确认两个域名引用的资源 URL 路径一致,并检查缓存过期时间配置是否合理。