边缘加速
  • 站点加速
    • 概述
    • 快速导入导出站点配置
    • 访问控制
      • Token 鉴权
      • 认证方法A
      • 认证方法B
      • 认证方法C
      • 认证方法D
      • 认证方法V
    • 智能加速
    • 文件优化
      • 内容压缩
      • 智能压缩
    • 网络优化
      • HTTP/2
      • HTTP/3(QUIC)
        • 概述
        • 启用 HTTP/3
        • QUIC SDK
          • SDK 概览
          • SDK 下载和集成指引
          • 代码示例
            • Android
            • iOS
          • API 文档
            • Android
            • iOS
      • IPv6 访问
      • 最大上传大小
      • WebSocket
      • 携带客户端 IP 头部回源
      • 携带客户端 IP 地理位置头部回源
      • 开启 gRPC
    • URL 重写
      • 访问 URL 重定向
      • 回源 URL 重写
    • 修改头部
      • 修改 HTTP 节点响应头
      • 修改 HTTP 回源请求头
    • 自定义错误页面
    • 请求与响应行为
      • HTTP响应
      • 请求处理顺序
      • EdgeOne 默认 HTTP 回源请求头
      • EdgeOne 默认 HTTP 响应头
      • HTTP限制
    • 媒体服务
      • 音视频预拉取
      • 实时图片处理
      • 实时媒体处理
      • 点播媒体源
  • 四层代理
    • 概述
    • 新建四层代理实例
    • 修改四层代理实例配置
    • 停用/删除四层代理实例
    • 批量配置转发规则
    • 获取客户端真实IP
      • 通过 TOA 获取 TCP 协议客户端真实 IP
      • 通过 Proxy Protocol V1/V2 协议获取客户端真实 IP
        • 概述
        • 方式一:通过 Nginx 获取客户端真实 IP
        • 方式二:在业务服务器解析客户端真实 IP
        • Proxy Protocol V1/V2 获取的客户端真实 IP 格式
      • 通过 SPP 协议传递客户端真实 IP
  • 边缘 DNS
    • 概述
    • 托管域名 DNS 解析
      • 修改 DNS 服务器
      • 配置域名 DNS 解析记录
      • 批量导入DNS记录
      • DNS 高级配置
      • 解析线路与对应代码枚举
    • 接入加速域名
      • 添加加速域名
      • 站点/域名归属权验证
      • 修改 CNAME 解析
      • 验证业务访问
    • 流量调度
      • 流量调度管理
    • 源站配置
      • 回源配置
        • 回源超时
        • 配置回源 HTTPS
        • Host Header 重写
        • 回源请求参数设置
        • 回源跟随重定向
        • HTTP/2 回源
        • 分片回源
      • 负载均衡
        • 概述
        • 快速创建负载均衡实例
        • 健康检查策略介绍
        • 查看源站健康状态
        • 相关参考
          • 负载均衡相关概念
          • 请求重试策略介绍
      • 源站组操作指引
      • 相关参考
        • 旧版源站组兼容相关问题
  • 边缘缓存
    • 概述
    • EdgeOne 缓存规则介绍
      • EdgeOne 内容缓存规则
      • 缓存键(Cache Key)介绍
      • Vary 特性
    • 缓存配置
      • 自定义 Cache Key
      • 节点缓存 TTL
      • 状态码缓存 TTL
      • 浏览器缓存 TTL
      • 离线缓存
      • 缓存预刷新
    • 清除和预热缓存
      • 清除缓存
      • 预热缓存
    • 如何提高 EdgeOne 的缓存命中率
  • 规则引擎
    • 概述
    • 规则引擎支持的匹配类型与操作
    • 规则管理
    • 变量

自定义 Cache Key

功能简介

当您需要将同一路径的请求 URL 通过请求参数、cookie 或者 HTTP 请求头的区别指向不同文件时,或者将携带不同参数的请求 URL 均指向同一份文件时,自定义 Cache Key 支持自定义调整资源在节点内的缓存 Cache Key 标识,包括拼接查询字符串、拼接 HTTP 标头或 Cookie 信息等,以便请求 URL 能根据不同场景正确获取对应的缓存资源。您可以通过 缓存键(Cache Key)介绍 来了解什么是 Cache Key。
注意:
自定义 Cache Key 的查询字符串参数名称,以及 HTTP 请求头的头部名称,仅支持大小写英文字母、数字、下划线(_)和连字符(-)。

使用场景

场景一:用户访问的文件路径完全相同,但是根据携带的查询字符串、HTTP 请求头、Cookie 内容,将会有版本的区分,可通过自定义 Cache Key 来调整该类型文件的缓存键来区分文件缓存。
场景二:用户访问的 URL 中查询字符串的内容完全不影响文件内容,以上请求所对应的文件一致,不影响文件版本,可通过自定义 Cache Key 来调整该类型文件的缓存键来使请求命中同一份文件缓存。

操作步骤

场景一:针对站点所有域名配置自定义 Cache Key

若您需要对整个接入站点配置自定义 Cache Key,或作为站点级兜底配置,可参考以下步骤:
1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,进入服务总览,单击网站安全加速内需配置的站点。
2. 在站点详情页面,单击站点加速 ,进入站点全局配置页面,在右侧导航栏中,单击缓存配置
说明:
全局配置仅可配置查询字符串忽略大小写,如需更丰富的自定义 Cache Key 配置项请参见 场景二规则引擎处的配置步骤
在缓存配置页面找到查询字符串卡片,单击全局站点设置进行配置。



默认配置为全部保留,即保留原请求 URL 的全部查询参数作为 Cache Key。支持其他选项:a. 全部忽略:忽略整个查询字符串;b. 保留指定参数:仅保留查询字符串中指定的参数;c. 忽略指定参数:仅忽略查询字符串中指定的参数。



在缓存配置页面找到忽略大小写卡片,默认配置为关闭忽略大小写,即使 URL 内容相同,但字母大小写不同,也被认为是不同的 Cache Key,单击全局开启开关开启忽略大小写后,则字母大小写不同将被认为是相同的 Cache Key。




场景二:针对指定域名,路径或文件后缀等请求粒度配置自定义 Cache Key

若您需要针对站点 example.com 站点下的 www.example.com 域名配置自定义 Cache Key 规则为忽略所有查询字符串,将 HTTP 请求头 My-Client-Header 及 Cookie 内的参数 name1name2 作为 Cache Key、可以参考以下步骤配置:

操作步骤

1. 登录 边缘安全加速平台 EO 控制台,在左侧菜单栏中,进入服务总览,单击网站安全加速内需配置的站点。
2. 在站点详情页面,单击站点加速,进入站点全局配置页面,单击规则引擎 Tab 页。
3. 在规则引擎页面,单击创建规则,选择新增空白规则
4. 在规则编辑页面,选择 Host 为匹配类型,配置为 www.example.com
5. 单击操作 > 选择框,在弹出的操作列表内,选择操作为自定义 Cache Key
6. 单击类型下方的添加,可添加自定义 Cache Key 的类型,以本示例场景为例,添加查询字符串、HTTP 请求头、Cookie 进行配置并填写对应的内容,完整的规则配置如下所示:



7. 单击保存并发布,即可完成该规则配置。

生效示例

配置完成后,Cache Key 由 URL+My-Client-Header+Cookie 组成:忽略全部查询字符串,拼接 My-Client-Header 和保留指定参数后的 Cookie。
则客户端请求 A:
URL:https://www.example.com/path/demo.jpg?key1=value1&key2=value2
HTTP 请求头:含 My-Client-Header:fruit
Cookie:name1=yummy;name2=tasty;name3=strawberry。
与客户端请求 B:
URL:http://www.example.com/path/demo.JPG?key1=value1&key2=value2&key3=value3
HTTP 请求头:含 My-Client-Header:fruit
Cookie:name1=yummy;name2=tasty;name3=blueberry。
与客户端请求 C:
URL:http://www.example.com/path/demo.JPG?key1=value1&key2=value2&key3=value3&key4=value4
HTTP 请求头:含 My-Client-Header:sea
Cookie:name1=yummy;name2=tasty;name3=fish。
A 和 B 请求将会命中同一份缓存资源,C 命中另一份缓存资源。

相关参考

支持的头部名称说明:
头部类型
说明
自定义
自定义头部。
名称:1 - 100 个字符,由数字 0 - 9、字符 a - z、A - Z,及特殊符 - 组成。
值:1 - 1000 个字符,不支持中文。
预设头部
根据客户端 User-Agent 信息聚合的头部:
客户端设备类型:EO-Client-Device
取值:MobileDesktopSmartTVTablet Others
客户端操作系统:EO-Client-OS
取值:AndroidiOSWindowsMacOSLinux Others
客户端浏览器类型:EO-Client-Browser
取值:ChromeSafariFirefoxIE Others