怎么在 CDN 上配置特定目录不缓存静态资源?

文章导读
在 CDN 控制台为特定目录设置缓存过期时间为 0 秒,是实现该目录资源不缓存的标准做法,适用于后台管理、动态生成文件等需要实时获取源站内容的场景。
📋 目录
  1. 核心风险警告
  2. 主流厂商配置实操
  3. 验证与监控
  4. 常见故障排查
  5. 参考来源
A A

在 CDN 控制台为特定目录设置缓存过期时间为 0 秒,是实现该目录资源不缓存的标准做法,适用于后台管理、动态生成文件等需要实时获取源站内容的场景。

先说结论:主流 CDN 厂商均支持通过缓存规则将特定目录的过期时间设为 0 来实现不缓存,但需注意源站压力风险。

  • 适合:后台管理目录、频繁变动的配置文件、动态脚本
  • 先准备:确认目录路径格式(是否带斜杠)、登录 CDN 控制台、评估源站承载能力
  • 验收:通过 curl 检查响应头 Cache-Control 字段及 X-Cache 状态

核心风险警告

设置缓存时间为 0 秒意味着 CDN 节点不会存储该资源,所有请求都将直接回源。在生产环境中需特别注意:

  • 源站压力:若该目录访问量较大(如 QPS 超过 100),可能导致源站 CPU 飙升、带宽打满甚至服务宕机。
  • 建议方案:若非绝对实时场景,建议设置较短缓存时间(如 10 秒)而非 0 秒,以减轻源站负载。
  • 监控告警:配置生效后,务必监控源站服务器的 CPU、内存及带宽使用率,设置异常告警。

主流厂商配置实操

不同 CDN 厂商的控制台字段略有差异,以下是主流厂商的具体配置路径及关键选项:

怎么在 CDN 上配置特定目录不缓存静态资源?

阿里云 CDN

  1. 登录 CDN 控制台,进入【域名管理】,点击目标域名后的【管理】。
  2. 左侧导航选择【缓存配置】->【缓存过期时间】。
  3. 点击【添加规则】,类型选择【目录】,内容栏输入路径(如/admin/)。
  4. 过期时间设置为【0 秒】。
  5. 关键步骤:勾选【忽略源站 Header】或选择【强制缓存】,防止源站返回的长缓存头覆盖 CDN 设置。
  6. 点击【确认】,配置通常 1-10 分钟内生效。

腾讯云 CDN

  1. 登录 CDN 控制台,进入【域名管理】,点击目标域名。
  2. 选择【缓存配置】标签页。
  3. 点击【添加规则】,匹配类型选【路径匹配】,输入目录路径。
  4. 缓存过期时间设为【0 秒】。
  5. 确认【遵循源站 Cache-Control】选项是否关闭,若需强制不缓存,建议关闭该选项。

验证与监控

配置完成后,不要只看控制台状态,必须通过实际请求验证是否真正回源。

1. 命令行验证

怎么在 CDN 上配置特定目录不缓存静态资源?

使用 curl 命令查看响应头,重点关注Cache-ControlX-Cache字段:

curl -I -v https://你的域名/admin/config.js

预期结果:

怎么在 CDN 上配置特定目录不缓存静态资源?
  • Cache-Control:应包含no-cacheno-storemax-age=0
  • X-Cache:多次请求应显示MISS(表示每次均回源),若显示HIT则说明仍被缓存。
  • Expires:时间应为当前时间或过去时间。

2. 源站监控

观察源站访问日志,确认该目录的请求频率是否显著增加。若发现异常流量峰值,应立即调整缓存策略。

常见故障排查

  • 路径匹配失败:目录匹配时,注意末尾斜杠。/admin/admin/在某些 CDN 规则中被视为不同路径,建议统一带上末尾斜杠。
  • 优先级冲突:若同时存在“所有文件缓存 30 天”和“/admin/缓存 0 秒”的规则,确保目录规则的优先级更高。通常具体路径规则优于通配符规则。
  • 源站头覆盖:部分 CDN 默认遵循源站响应头。如果源站返回了Cache-Control: max-age=3600,CDN 可能忽略你的 0 秒设置。需在 CDN 控制台开启“忽略源站 Header”或“强制缓存”选项。
  • 参数影响:确认是否忽略了查询参数。有时文件路径相同但参数不同(如?v=1),可能被当作不同资源处理,建议在缓存规则中配置“忽略参数”。

参考来源

  • 天翼云 - 如何设置指定目录或文件不缓存-CDN 加速 - 常见问题 - 缓存配置
  • 新手站长网 - 阿里云 CDN 设置不缓存某个目录或者文件的方法
  • 腾讯云开发者社区 - CDN 如何设置部分文件缓存,部分文件不缓存直接回源
  • 51CTO 博客 - 阿里云 CDN 深度使用之缓存设置