EdgeOne Logo
Documentation
请选择
请选择
Overview
Menu

自定义 Cache Key

功能简介

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

使用场景

场景一:用户访问的文件路径完全相同,但是根据携带的查询字符串、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. 在站点详情页面,单击规则引擎。
3. 在规则引擎管理页面,单击创建规则,进入新规则的编辑页面。在规则编辑页面,选择 Host 为匹配类型,配置为 www.example.com
4. 单击操作,在弹出的操作列表内,选择操作为自定义 Cache Key;
5. 单击类型下方的添加,可添加自定义 Cache Key 的类型,以本示例场景为例,添加查询字符串、HTTP 请求头、Cookie 进行配置并填写对应的内容,完整的规则配置如下所示:

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

生效示例

配置完成后,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