背景信息
CDN 缓存命中率低,会导致源站压力大,动态资源拜访效率低。您能够针对导致 CDN 缓存命中率低的具体起因,抉择对应的优化策略,来进步 CDN 的缓存命中率。CDN 缓存命中率包含流量命中率和申请命中率。
- 流量命中率 = 命中缓存产生的流量 / 申请总流量
-
申请命中率 = 命中缓存的申请数 / 申请总数
阐明:
流量命中率越低,回源流量越大,源站的流出流量越大,源站带宽资源占用越大,其代表了源站服务器收到的负载压力,请重点关注流量命中率。
查看缓存命中率
您能够登录 CDN 控制台查看流量命中率和申请命中率。
- 登录华为云控制台,在控制台首页中抉择“CDN 与智能边缘 > CDN”,进入 CDN 控制台。
- 在左侧菜单栏中,抉择“统计分析”。
-
别离抉择“使用量统计”和“拜访状况统计”查看“流量命中率”和“申请命中率”。
图 1 流量命中率
图 2 申请命中率
优化缓存命中率
-
正当设置缓存过期工夫
CDN 减速的实质是缓存减速,把源站资源缓存在遍布寰球的节点上,用户能够就近从边缘节点获取资源,从而达到减速的成果。您能够通过 CDN 控制台正当设置缓存过期工夫来进步缓存命中率,倡议如下:
- 对于不常常更新的动态文件(如图片类型、利用下载类型等),建议您将缓存工夫设置为 1 个月以上。
- 对于频繁更新的动态文件(如 JS、CSS 等),您能够依据理论业务状况设置。
- 对于动静文件(如 PHP、JSP、ASP 等),建议您将缓存工夫设置为 0,即不缓存。
具体的设置步骤和注意事项请见如何设置缓存过期工夫。
阐明:* 如果源站设置了 s -maxage=0、max-age=0、no-cache、no-store、private,CDN 侧同时开启了“缓存遵循源站”性能(此性能默认敞开),CDN 节点将无奈缓存源站资源,导致频繁回源。* 如果您的源站有多个主机,某个雷同的资源在多个主机中的 Last-modified、Etag、Content-Length 不统一,CDN 节点将无奈缓存该资源,导致反复回源。* 如果源站资源更新,请刷新资源对应的 URL,以保障用户能够取得最新的资源。* ** 如果您批改了缓存规定 **:* 新的规定仅对前面缓存的资源失效,曾经缓存的资源须要等缓存过期后,再次缓存才会遵循新的缓存规定。* 如果您想要立刻失效,请在批改缓存规定后执行缓存刷新操作。
-
开启过滤 URL 参数
目前大多数的网页申请都携带 URL 参数信息,参数以“?”开始,如果参数没有蕴含重要信息(如版本信息等),是否携带该参数拜访不会影响用户取得正确的资源,能够抉择开启“疏忽 URL 参数”性能,进步缓存命中率,晋升散发效率,详见 URL 参数。
典型利用:
- 终端用户首次拜访 URL“http://www.example.com/1.txt?…”时,CDN 无缓存,回源申请资源;第二次拜访“http://www.example.com/1.txt?…”时,因为开明了“疏忽 URL 参数”性能,所以“?”之后的参数不匹配,间接命中缓存“http://www.example.com/1.txt”。
- 终端用户首次拜访 URL“http://www.example.com/1.txt?…”时,CDN 无缓存,回源申请资源;第二次拜访“http://www.example.com/1.txt?…”时,因为没有开明“疏忽 URL 参数”性能,所以“?”之后的参数也须要匹配,要从新回源申请“http://www.example.com/1.txt?…”。
-
预热 URL
CDN 能够通过缓存预热将源站资源被动缓存到 CDN 节点,用户拜访时就能间接从 CDN 节点获取到最新的资源,详见缓存预热。
当您的域名首次接入 CDN 减速、流动公布时您能够将源站资源预热到 CDN 节点,用户拜访资源时间接从 CDN 节点获取,从而晋升 CDN 的缓存命中率。
典型场景:
- 首次接入 CDN:域名首次接入 CDN 时,节点暂未缓存源站资源,此时,您能够将源站资源预热至 CDN 节点。后续用户拜访资源将间接从就近的 CDN 节点获取资源,晋升访问速度。
- 安装包公布 : 新版本安装包或是升级包公布前,提前将资源预热至 CDN 节点。正式上线后,海量用户的下载申请将间接由寰球减速节点响应,晋升下载速度的同时,大幅度降低源站压力。
- 经营流动 : 经营流动公布前,提前将流动页波及到的动态资源预热至 CDN 节点。流动开始后,用户拜访中所有动态资源均由减速节点响应,海量带宽储备保障用户服务可用性,晋升用户体验。
-
开启 Range 回源
Range 回源是指源站在收到 CDN 节点回源申请时,依据 HTTP 申请头中的 Range 信息返回指定范畴的数据给 CDN 节点。Range 回源能无效缩短大文件的散发工夫,晋升回源效率,进步缓存命中率,详见 Range 回源。
典型场景:
- 未开明 Range 时,用户想观看指定片段的视频,而 CDN 回源时须要获取整个视频,所以回源流量大于响应给用户的流量,从而造成缓存命中率升高。开启 Range 回源后,CDN 将分片回源获取资源返回给用户,从而晋升缓存命中率。
-
其它
-
缓存资源须要更新时,尽量避免刷新目录
当源站某个资源更新时,个别须要通过刷新相应的 URL 来强制节点缓存资源过期。刷新目录会将目录内所有的资源全副置为过期,用户下次访问时将无奈命中缓存,全副回源站申请资源,因而尽量避免刷新整个目录,尤其谨慎刷新根目录。
-
防止在 URL 中携带动静参数
如果您的 URL 中蕴含动静参数,如工夫戳,CDN 无奈缓存该资源,导致频繁回源。
-
判断 URL 是否命中缓存
- 在浏览器 Chrome 上,按 F12。
- 抉择“Network”。
-
查看指定 URL 的响应头,查看头部信息,进行如下判断:
- 如果有“x-hcs-proxy-type”头部,值为“1”即命中缓存,值为“0”即未命中缓存,不再查看其它头部;
- 如果无“x-hcs-proxy-type”头部,而有“X-Cache-Lookup”头部,值为“Hit From MemCache”、“Hit From Disktank”或“Hit From Upstream”即为命中缓存,其它值示意未命中缓存,不再查看其它头部;
- 如果同时无“x-hcs-proxy-type”、“X-Cache-Lookup”头部,有“age”头部,则值大于“0”即命中缓存,值为“0”即未命中缓存。
本文由华为云公布