背景说明
CDN缓存key是文件存储在CDN节点上的唯一ID,CDN将以此为标识来缓存不同文件。如果用户请求某个文件时,都会携带问号后参数,如http://www.ctyun.cn/a.html?b=1,且每个用户访问的参数值不一样,则在关闭去问号缓存时,用户的每个请求都会在CDN节点上缓存为不同文件,每个请求都将透传回源,造成域名总体缓存命中率低,无加速效果的同时,会对源站造成极大压力。
解决方案
如果不同URL问号后参数仅值不同,对应的文件内容实际一样时,需要开启去问号缓存。即:如果用户A和用户B分别请求http://www.ctyun.cn/a.html?b=1和http://www.ctyun.cn/a.html?b=2,实际在源站均返回相同的html文件,则此时可在CDN控制台上开启去问号缓存,具体开启方式可参考缓存过期时间设置里的配置说明。开启该选项后,CDN将对这两个请求统一缓存为http://www.ctyun.cn/a.html,此时无论用户请求问号后带什么参数和值,均可以命中该缓存。
此外,如果用户请求的URL中存在多个问号后参数,如http://www.ctyun.cn/a.html?b=1&c=2&d=3,源站针对某个特定参数b值不一样时会返回不同内容,此时可以通过“自定义缓存key”功能中的保留特定参数缓存功能来提升命中率(缓存参数中仅保留参数b缓存);类似的,如果用户请求的URL中存在多个问号后参数,如http://www.ctyun.cn/a.html?b=1&c=2&d=3,源站针对所有参数除了d以外均会基于参数值不同返回不同内容,则此时可配置去掉特定参数缓存功能(缓存参数中去掉参数d缓存),详情请见:缓存key设置。