参考资料

  1. SSL/TLS深度配置指南
  2. CDN鉴权方式详解及设置教程
  3. 高防CDN-腾讯云EdgeOne
  4. 将 ciilii.com 绑定多个 CDN(如 Cloudflare、AWS CloudFront、阿里云 CDN 等),实现流量分发、故障转移或性能优化,可通过以下步骤操作
  5. EdgeOne 防盗刷实践教程配置
  6. CORS自适应跨域 设置教程
  7. HTML优化
  8. 状态码列表 设置教程

CDN的缓存Key是决定资源缓存唯一性的核心标识

CDN的缓存Key是决定资源缓存唯一性的核心标识,用于区分不同版本的资源。其组成和处理规则直接影响缓存命中率。

核心组成(默认)

通常包含以下元素:

  1. 完整域名Host
    www.example.comcdn.example.com 会被视为不同资源。

  2. URI路径
    /image.jpg/image.png 独立缓存。

  3. 查询字符串(Query String)
    默认行为:带参URL视为新资源
    style.css?v=1style.css?v=2 会缓存两个副本。


关键配置选项

1. 查询字符串处理

  • 忽略所有参数
    product?id=123 = product?id=456 → 命中同一缓存。

  • 忽略特定参数
    保留utm_source,忽略其他广告参数。

  • 仅缓存指定参数
    只认version=2.0,其他参数丢弃。

2. 请求头影响

部分CDN支持将头信息加入Key:

  • Accept-Encoding(压缩类型)
    区分Gzip/Brotli版本。

  • Cookie(谨慎启用)
    个性化内容需隔离缓存(如登录态)。


典型场景示例

原始请求缓存Key配置是否命中同一缓存
/logo.png?bg=dark忽略所有参数✅ 与/logo.png相同
/app.js?v=2仅保留v参数✅ 与/app.js?v=3相同
/user.css + Cookie配置Cookie进Key❌ 每个用户独立缓存

最佳实践

  1. 静态资源忽略所有参数
    避免因?timestamp=1623...导致缓存碎片。

  2. 版本化文件名代替参数
    /app.2a3b.css替代/app.css?v=2

  3. 动态资源按需隔离
    广告参数(utm_*)通常忽略,会话ID需隔离。

  4. 变更配置后主动刷新缓存
    修改Key规则后,旧缓存可能失效需清理。

⚠️ 错误配置代价
若未忽略无关参数,CDN可能存储百万级相同资源的副本,导致命中率暴跌,回源流量激增。