选高防CDN时,多数人盯的是防护峰值,很少有人问缓存命中率。但真正在攻击期间决定业务死活的,往往是这个不起眼的百分比。命中率低意味着大量请求要回源站取数据,攻击一来,边缘节点挡住了攻击流量,源站却被正常用户的回源请求压垮,表现和没接防护差不多。
缓存命中率的本质,是边缘节点上有多少请求能直接返回、不用回源。静态资源是命中率的主力——图片、CSS、JS、字体、视频切片,这些内容不变或很少变,配好缓存规则后命中率可以做到很高。动态内容则相反,每次请求结果可能不同,默认不缓存,全部回源。一个网站的命中率高低,基本取决于静态资源和动态请求的比例,以及缓存规则配得细不细。
提升命中率有几个直接有效的手段。第一是按文件类型分缓存时长,图片和字体设长缓存,HTML设短缓存,API接口不缓存,不要一刀切。第二是开启缓存分片,大文件被拆成小块缓存,部分命中也能减少回源量。第三是忽略URL里的无意义参数,很多网站给静态资源加了时间戳或追踪参数,导致同一个文件被缓存成多份,命中率被稀释。第四是配置回源合并,多个请求同时回源取同一个资源时,节点只发一个回源请求,其余等结果,避免源站被并发回源打崩。
命中率不是越高越好。把动态页面也强行缓存,用户会看到过期数据、登录状态错乱,这种“高命中率”是以业务错误为代价的。合理的做法是区分内容类型,静态资源追求高命中,动态内容该回源就回源,通过防护层过滤掉恶意回源请求,而不是靠缓存硬扛。
监控命中率要看两个维度。一个是整体命中率,反映缓存配置的大方向对不对;另一个是回源QPS的峰值,反映攻击期间源站的实际压力。整体命中率很高但回源QPS依然飙升,说明命中的是大文件、回源的是高频小请求,这种结构在CC攻击下依然危险。坚果盾的面板同时提供这两个维度的数据,攻击期间能直接看出是缓存没配好还是攻击流量在穿透。
命中率和防护的关系
高防CDN的防护逻辑是先清洗再转发。清洗层过滤掉攻击流量后,剩余的请求进入缓存层,命中缓存的直接返回,未命中的回源。命中率越高,回源请求越少,源站在攻击期间越稳。命中率低的方案,等于把清洗后的压力全转嫁给了源站,防护效果大打折扣。
价格参考
坚果盾高防CDN标准版100元/月起,含无限DDoS防护、无限CC防护、2个接入域名、30G月流量、500每秒请求数;企业版500元/月,全功能版1500元/月。缓存规则、缓存分片、回源合并这些能力在标准版即已包含,不需要额外购买。
接入高防CDN后,别只盯着防护面板上的攻击流量看。打开缓存统计,看看命中率和回源QPS是什么水平。这两个数字不健康,防护峰值买再高,源站该挂还是挂。