Cachekey是一个文件在全站加速节点上缓存时唯一的身份ID,默认为客户端请求的URL(带参数)。通过自定义Cachekey,可以将访问同一个文件的多个URL转化为统一的Cachekey,避免多个URL请求缓存为不同文件的问题,降低回源率,节省回源流量。通过本文,您可以了解配置自定义Cachekey功能的操作步骤。
使用场景
场景一:
客户不同请求的URL中含有复杂的参数,因此即使多个请求访问的是同一个文件,但由于URL参数不同,全站加速节点会视为请求不同文件而将不同请求缓存成多个文件,造成回源请求增加。
通过自定义Cachekey规则将同一类请求的Cachekey统一,降低回源率,节省回源流量。
场景二:
客户端请求的URL完全一样时,全站加速将视为请求同一个文件。但实际上请求的Http Header中携带了client字段区分了客户端系统,希望请求不同文件。
通过自定义Cachekey将client字段的值拼接至Cachekey,两个请求即可识别为2个不同的Cachekey。
操作步骤
- 登录全站加速控制台。。
- 在域名管理页面,单击目标域名对应的配置。
- 在指定域名的左侧导航栏,单击缓存配置。
- 在自定义Cachekey页签配置Cachekey。
说明
- 自定义Cachekey功能支持对URI、参数操作、Http Header进行修改,同时支持自定义变量,从请求中提取需要的字段。最终的Cachekey将由URI、参数操作、Http Header、自定义变量四部分组合而成。
- 自定义Cachekey功能不会修改回源的URL,仅会修改请求的缓存标识,回源的请求和客户端发起的请求内容保持一致。
- 单击确定。
示例
URI
客户端的请求
http://example.com/a/b/image_01.jpg
和
http://example.com/a/b/c/image_01.jpg
将视为请求同一个文件,该文件的Cachekey为
http://example.com/c/image_01.jpg
。
参数操作
客户端的请求
http://example.com/a/b/image_01.jpg?delete_par=1&modify_par=1
将按规则添加
add_par=1
,删除
delete_par
,将
modify_par
的值修改为
2
,最终转化为
http://example.com/a/b/image_01.jpg?modify_par=2&add_par=1
。
重要 参数操作中,如对同一个变量同时进行了多个操作,则各种操作的生效优先级:新增>删除>仅保留>修改。
HTTP Header
客户端请求的Http Header的
User-Agent
和
Accept-Language
的值将被拼接到Cachekey中。例如请求
http://example.com/a/b/image_01.jpg
中的
User-Agent=Mozilla/5.0 (Linux; X11)
,
Accept-Language=en
,则该请求的Cachekey为:
http://example.com/a/b/image_01.jpgMozilla/5.0(Linux;X11)en
。
自定义变量
示例一:
变量名为
language
,来源为
Request Header
,来源字段名为
Accept-Language
,匹配规则为
([%w]+),([%w]+)
,变量表达式为
$1aa
。
客户端的请求
http://example.com/a/b/image_01.jpg
且携带HTTP请求头
Accept-Language=en,ch
,则匹配规则将匹配到
en
赋值给变量表达式中的
$1
。变量表达式还将在末尾拼接上
aa
,得到
enaa
的变量并取别名为
language
,拼接在URL后方形成最终的cachekey:
http://example.com/a/b/image_01.jpgenaa
。
说明 变量表达式中的
$n
的含义是匹配规则中第
n
个括号所匹配到的内容。例如示例一中
Accept-Language=en,ch
,匹配规则为
([%w]+),([%w]+)
,则
$1=en
,
$2=ch
。
示例二:
变量名为
expired
,来源为
Request Cookie
,来源字段名为
a
,匹配规则为
[%w]+:(.*)
,变量表达式为
$1
。
客户端的请求http://example.com/a/b/image_01.jpg
且携带Cookie a=expired_time:12635187
,则匹配规则将匹配到12635187
赋值给变量表达式中的$1
并取别名为expired
,拼接在URL后方形成最终的cachekey:http://example.com/a/b/image_01.jpg12635187
。
示例三:
同时设置URI规则和自定义变量。
URI:
将所有URI符合
/abc/.*/abc
的请求都合并成
/abc
。
自定义变量:
变量名为
testname
,来源为
Path
,匹配规则为
/abc/xyz/(.*)
,变量表达式为
$1
。
客户端的请求URLhttp://example.com/abc/xyz/abc/image_01.jpg
,按URI的配置Cachekey将被合并成http://example.com/abc/image_01.jpg
, 然后根据自定义变量的配置该URL将会命中/abc/xyz/(.*)
,此时$1
将被赋值为abc
并拼接到Cachekey中,形成最终的cachekey:http://example.com/abc/image_01.jpgabc
,从而达到两个规则组合使用,实现更复杂的缓存逻辑。