参考资料

  1. 配置CDN缓存主域名
  2. CDN的缓存Key是决定资源缓存唯一性的核心标识
  3. 访客IP设置 设置教程
  4. 读取IP变量值 设置教程
  5. 预防 CDN 盗刷 腾讯云操作方法
  6. 允许If-Modified-Since回源 设置教程
  7. 重写访问URL
  8. TLS加密套件与协议版本详解

CacheKey 配置详解

CDN 自定义 CacheKey 配置详解

1. CacheKey 的作用

CacheKey 是 CDN 缓存资源的唯一标识,决定 CDN 如何区分不同的请求并返回缓存内容。

2. CacheKey 的默认组成

默认情况下,CDN 的 CacheKey 通常包含:

  • 完整 URL 路径(如 /images/logo.png

  • 查询字符串参数(如 ?version=1.0

3. 自定义 CacheKey 的常见方式

可以调整 CacheKey 的组成,影响 CDN 的缓存策略:

(1)忽略查询参数(Ignore Query String)
  • 适用场景:静态资源(如 .js.css.png

  • 效果/image.jpg?v=1/image.jpg?v=2 会被视为相同资源,提高缓存命中率。

(2)包含特定查询参数
  • 适用场景:动态资源(如 API 请求)

  • 示例:仅保留 id 参数,忽略其他参数(如 /api/data?id=123&token=abc → 仅 id=123 影响缓存)。

(3)基于请求头(Headers)
  • 适用场景:多语言、设备适配

  • 示例

    • 包含 Accept-Language(缓存不同语言版本)

    • 包含 User-Agent(缓存 PC/移动端不同版本)

(4)基于 Cookie
  • 适用场景:个性化内容(如登录用户缓存)

  • 示例:包含 session_iduser_token 区分用户缓存。

4. 配置示例(不同 CDN 厂商)

  • 阿里云 CDN:在「缓存配置」→「CacheKey」中设置参数过滤规则。

  • 腾讯云 CDN:在「缓存键规则」中自定义参数、请求头等。

  • AWS CloudFront:通过 Cache Policy 或 Origin Request Policy 调整 CacheKey。

5. 最佳实践

  • 静态资源:尽量忽略所有查询参数,提高缓存命中率。

  • 动态资源:仅保留必要参数,避免缓存碎片化。

  • 测试验证:使用 curl -I 或浏览器开发者工具检查 X-Cache 头,确认缓存生效。

6. 注意事项

  • 缓存污染:错误的 CacheKey 可能导致缓存混乱(如不同用户看到相同内容)。

  • 缓存命中率:过度定制可能降低缓存复用率,需监控优化。

  • 预热机制:重要资源可主动预热,避免首次访问回源延迟。

通过合理配置 CacheKey,可以优化 CDN 性能,提升用户体验并降低源站负载。