自定义 Cache Key

最近更新时间:2024-07-22 16:02:31

我的收藏

功能简介

当您需要将同一路径的请求 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. 在站点详情页面,单击站点加速,进入站点全局配置页面,单击规则引擎 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