配置共享缓存

更新时间:
复制 MD 格式

同一阿里云账号下多个 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.comorigin-b.example.com)时,若资源的 URL 路径完全相同,生成 CacheKey 时加速域名会被替换为共享域名,即使实际回源地址不同,仍可返回相同的缓存内容。

功能限制

配置共享缓存前,请确认满足以下条件:

  • 同账号限制:只能选择同一阿里云账号的加速域名。跨账号域名无法配置。

  • 域名状态要求:只能选择处于启用(在线)状态的域名。已停用或未启用的域名不会出现在候选列表中。

  • 数量上限:共享缓存仅支持选择一个目标域名,不支持同时配置多个共享目标。候选域名列表最多展示 500 个域名。

  • 资源组隔离:如果当前域名属于特定资源组,候选域名列表将受资源组过滤。

  • 域名删除保护:当域名 A 的共享缓存对象设置为域名 B 时,系统禁止删除域名 B。删除域名 B 会影响其他共享缓存域名的命中率。需先在域名 A 上删除或修改共享缓存配置后,才能删除域名 B。

操作步骤

配置共享缓存

操作前请确认:阿里云账号具有 CDN 控制台操作权限,目标域名已添加并处于启用状态。

  1. 登录 CDN 控制台

  2. 在左侧导航栏中,单击域名管理

  3. 在域名列表中,单击目标加速域名,进入该域名的详情页。

  4. 在域名详情页左侧导航栏中,单击缓存配置

  5. 在缓存配置页面,单击共享缓存页签。

  6. 单击修改配置,打开弹窗,从下拉列表选择一个目标加速域名。

    下拉列表仅展示当前账号下处于启用 状态的加速域名,可通过输入框进行模糊搜索。列表最多展示 500 个域名,且自动排除当前正在操作的域名本身。

  7. 选择目标域名后,单击确定保存配置。

    配置成功后,页面共享缓存列表中将显示已配置的目标域名。

验证配置

  • 在共享缓存页面查看是否显示已配置的目标域名。

  • 对比配置前后不同域名对相同资源的缓存命中率,确认共享缓存已生效。可检查 CDN 日志中 X-Cache 响应头的命中情况。

修改共享缓存配置

按照上述配置共享缓存的步骤 1 至步骤 5 进入共享缓存页面,然后执行以下操作:

  1. 单击修改配置

  2. 打开弹窗,选择新的目标加速域名,单击确定保存。

删除共享缓存配置

按照上述配置共享缓存的步骤 1 至步骤 5 进入共享缓存页面,然后执行以下操作:

  1. 单击删除配置

  2. 在确认对话框中,单击确定

    删除成功后,页面显示未设置。

成本与影响说明

成本说明:配置共享缓存不会产生额外费用。缓存命中率提升可减少回源流量,降低 CDN 使用成本。

开启后的影响

  • 共享缓存仅在查询和生成 CacheKey 时使用共享域名替换加速域名,不影响加速域名的回源地址和回源 HOST。

  • 加速域名进行账号迁移后,该域名仍可正常使用共享缓存。

删除后的影响

  • 删除共享缓存配置后,各域名恢复独立缓存空间。已缓存的资源在各自缓存过期前仍然有效。

  • 删除设置了共享缓存的加速域名会影响其他共享缓存域名的命中率。需先在操作域名上删除或修改共享缓存配置,才能删除被共享的域名。

常见问题

不设置共享缓存,不同域名能复用同一份缓存吗?

不能。CDN 的 CacheKey 中包含域名信息,不同域名的请求被视为不同的资源。即使请求相同的源站文件,CDN 节点也会分别缓存。

配置后缓存命中率为什么没有提升?

确认两个域名引用的资源 URL 路径一致,并检查缓存过期时间配置是否合理。