背景信息
如果您已经接入DCDN并配置了缓存规则,同时启用了WAF令牌校验,但是WAF在令牌校验时会在URL中随机插入参数,导致请求未能命中DCDN缓存规则,直接访问后端源站。这会增加源站的负载和压力,导致性能下降、响应时间延长,并增加潜在的安全风险。为了解决这一问题,您可以通过自定义CacheKey忽略这些参数,从而继续利用DCDN缓存,降低回源率。
前提条件
已开通Bot管理并开启高级Bot防御(动态令牌挑战),具体操作,请参见开通Bot管理、创建网页防爬场景化防护规则。
方案概览
本文以使用DCDN为例,配置自定义CacheKey只需2步:
配置自定义CacheKey:忽略URL中的被插入的随机参数,从而提高缓存的命中率,降低回源率,减少请求的响应时间和带宽消耗。
测试验证:对配置进行全面测试,确保缓存策略、WAF令牌校验和自定义CacheKey配置正确无误并正常运行。
如果您使用的是阿里云CDN,则其配置方法相同。
架构图
步骤一:配置自定义CacheKey
1. 获取令牌参数名
在配置自定义 CacheKey 之前,您需要通过浏览器访问目标网站触发令牌校验以获取相关的参数名。
令牌校验插入的参数名称针对不同域名是随机生成的,但某个域名下所有请求插入的令牌参数名是固定的,其格式为XXX__随机数字,其中XXX可以是下面任意一个单词。
timestamp、md5、type、ipcity、decode、encode、time、refer。
2. 配置自定义CacheKey
登录DCDN控制台,在左侧导航栏,单击域名管理后,单击目标域名操作列的配置。
在指定域名的左侧导航栏,单击缓存设置,选择自定义CacheKey页签,单击配置。
说明支持对URI、请求参数、HTTP HEADER进行修改,同时支持自定义变量,从请求中提取需要的字段。最终的Cachekey将由URI、请求参数、HTTP HEADER、自定义变量四部分组合而成。
在自定义Cachekey对话框中,参数操作选择删除,并输入获取的令牌参数名。其他配置详情,请参见自定义Cachekey参数说明。
步骤二:测试验证
对配置进行全面测试,确保缓存策略、WAF令牌校验和自定义CacheKey配置正确无误并正常运行。
浏览器打开开发者工具访问网站,单击Network,查看Response Headers信息。如果存在X-Cache头且值包含HIT关键字,则表明配置生效命中缓存数据。
X-Cache表示是否命中缓存,MISS表示不命中,HIT表示命中。