【背景信息】
CDN缓存命中率低,会导致源站压力大,静态内容访问效率低。您可以针对导致CDN缓存命中率低的具体原因,选择对应的优化策略,来提高CDN的缓存命中率。目前天翼云CDN支持字节命中率的统计与查询。
统计方式:字节命中率= 1 - 回源流量/计费总流量
【查看字节命中率】
用户可以通过天翼云CDN控制台查看字节命中率。查询路径:CDN控制台-->统计分析-->用量查询-->命中率
【优化缓存命中率】
CDN加速的本质是缓存加速,把源站内容缓存在遍布全球的节点上,用户可以就近从边缘节点获取内容,从而达到加速的效果。可以通过如下几个手段提升缓存命中率。
1、合理设置缓存过期时间
缓存过期时间如果设置不合理,比如对不常更新的文件设置了很短的缓存时间,导致文件频繁过期,当有用户请求到节点时频繁需要回源站获取后才能响应,缓存命中率将会明显下降,因此建议:
1)不常更新的静态文件(例如,图片类型、应用下载、点播视频类型等),建议设置1个月以上。
2)频繁更新的静态文件(例如,JS、CSS、XML、HTML等),根据实际业务情况设置。
3)动态文件(例如,PHP、JSP、ASP、ASPX、DO等),建议设置为0s,即不缓存。
配置路径:CDN控制台-->域名管理-->域名列表-->选定具体域名点击“编辑”-->缓存配置-->缓存过期时间
2、开启去问号缓存
目前大多数的网页请求都携带URL参数信息,参数以“?”开始,如果参数没有包含重要信息(如版本信息等),是否携带该参数访问不会影响用户获得正确的内容,可以选择开启“去问号缓存”功能,提高缓存命中率,提升分发效率。
效果差异说明:
1)用户首次访问:“http://www.ctyunexample.com/1.txt?test1”时,CDN无缓存,回源请求内容;第二次访问“http://www.ctyunexample.com/1.txt?test2”时,由于开通了“去问号缓存”功能,所以“?”之后的参数不匹配,直接命中缓存“http://www.ctyunexample.com/1.txt”。
2)用户首次访问:“http://www.ctyunexample.com/1.txt?test1”时,CDN无缓存,回源请求内容;第二次访问“http://www.ctyunexample.com/1.txt?test2”时,由于没有开通“去问号缓存”功能,所以“?”之后的参数也需要匹配,要重新回源请求“http://www.ctyunexample.com/1.txt?test2”,导致边缘节点本该直接命中的请求,产生了回源,命中率降低。
配置路径:CDN控制台-->域名管理-->域名列表-->选定具体域名点击“编辑”-->缓存配置-->缓存过期时间-->去问号缓存
3、文件预取
文件预取的原理是通过事前主动下发预取指令到CDN,由CDN自动触发向客户源站发起对应内容的请求,提前把文件缓存在CDN节点,这样有后续访问到CDN时,缓存可以直接命中,即提升了命中率,又缓解了源站因新内容发布而导致的回源压力问题。
适用场景:首次接入、新内容发布、促销活动
使用建议:
首次接入CDN:域名首次接入CDN时,节点暂未缓存源站内容,此时,您可以将源站热门内容预取至CDN节点。后续用户访问内容将直接从就近的CDN节点获取内容,提升访问速度。
APP或软件安装包发布:新版本APP或软件安装包发布前,提前将安装包预取至CDN节点。正式上线后,海量用户的下载请求将直接由全球加速节点响应,提升下载速度的同时,大幅度降低源站压力。
促销活动:促销活动发布前,提前将活动页涉及到的静态内容预取至CDN节点。活动开始后,用户访问的所有静态内容均由加速节点响应,海量带宽储备保障用户服务可用性,提升用户体验。
预取任务提交路径:CDN控制台-->刷新预取-->URL预取
4、开启分片缓存分片回源
未开通分片缓存分片回源时,用户想观看指定片段的视频,而CDN回源时需要获取整个视频,且在完整文件未拉取完成的情况下,节点无法响应用户的片段视频请求,无法做到边下载边响应,缓存命中率降低的同时还增加了用户的等待时间。开启分片缓存分片回源后,CDN将分片回源获取内容返回给用户,从而提升缓存命中率。
适用于音视频等较大文件的内容分发场景。
开通方式:该配置需要提交工单走运维后台配置,详见:https://www.ctyun.cn/h5/wsc/worksheet/submit
注意:开启分片缓存分片回源,需要源站能支持range请求
【判断URL是否命中缓存】
目前支持两种方式查看缓存命中情况:
方式一:通过响应头,确认该次访问命中情况
1、在Chrome浏览器上,按F12。
2、选择“Network”。
3、查看指定URL的响应头,查看Ctl-Cache-Status头部:
1)Ctl-Cache-Status: HIT from province1-city1-ca1, HIT from province2-city2-ca2 表示边缘节点命中
2)Ctl-Cache-Status: HIT from province1-city1-ca1, MISS from province2-city2-ca2 表示边缘节点未名字,但是内容中心节点命中,实际未产生回源
3)Ctl-Cache-Status: MISS from province1-city1-ca1, MISS from province2-city2-ca2 表示边缘节点和内容中心节点均未命中,产生回源
说明:如果您的响应中未配置该头部,请参考方法二,通过日志查询命中情况。
方式二:通过日志,确认该次访问命中情况
"16/Jun/2022:11:44:26 +0800]"76280dec076381ef04ca3249badade12"200"1655351066.426"0.004"0.000"0.000"0.004"0"36.99.250.36"80"150.223.254.77"37817"GET"http"www.ctyunexample.com"http://www.ctyunexample.com/check.jpg"HTTP/1.1"91"3"640"3"192.168.189.15:8080"200"0.004"HIT from province1-city1-ca1, HIT from province2-city2-ca2"27.19.254.167:80"206"-"-"application/octet-stream"-"curl/7.61.0"-"-"0.004"-"150.223.254.77"""0"0.000"-""unknown"-"-"0"0"""16/Jun/2022:11:44:26 +0800"712"279"-"0
通过看字段:HIT from province1-city1-ca1, HIT from province2-city2-ca2 来判断命中情况。