CDN加速

提高CDN缓存命中率

2022-07-01 08:25:18

【背景信息】

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 来判断命中情况。

M62U4Vrz70aZ