更新时间:2023-12-13 gmt 08:00

如何提高缓存命中率-凯发k8国际娱乐官网入口

背景信息

cdn缓存命中率低,会导致源站压力大,静态资源访问效率低。您可以针对导致cdn缓存命中率低的具体原因,选择对应的优化策略,来提高cdn的缓存命中率。cdn缓存命中率包括流量命中率和请求命中率。

  • 流量命中率 = 命中缓存产生的流量 / 请求总流量
  • 请求命中率 = 命中缓存的请求数 / 请求总数

    流量命中率越低,回源流量越大,源站的流出流量越大,源站带宽资源占用越大,其代表了源站服务器收到的负载压力,请重点关注流量命中率。

查看缓存命中率

您可以登录cdn控制台查看流量命中率和请求命中率。

  1. 登录,在控制台凯发k8国际娱乐k8凯发官网入口首页中选择“cdn与智能边缘 > 内容分发网络 cdn”,进入cdn控制台。
  2. 在左侧菜单栏中,选择“统计分析”。
  3. 分别选择“使用量统计”和“访问情况统计”查看“流量命中率”和“请求命中率”。
    图1 流量命中率
    图2 请求命中率

优化缓存命中率

  1. 合理设置缓存过期时间

    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,以保证用户可以获得最新的资源。
    • 如果您修改了缓存规则
      • 新的规则仅对后面缓存的资源生效,已经缓存的资源需要等缓存过期后,再次缓存才会遵循新的缓存规则。
      • 如果您想要立即生效,请在修改缓存规则后执行缓存刷新操作。
  2. 配置url参数

    目前大多数的网页请求都携带url参数信息,参数以“?”开始,如果参数没有包含重要信息(如版本信息等),是否携带该参数访问不会影响用户获得正确的资源,可以选择将“url参数”功能配置为“忽略参数”或“忽略指定参数”,提高缓存命中率,提升分发效率,详见url参数

    典型应用

    • 终端用户首次访问url“http://www.example.com/1.txt?test1”时,cdn无缓存,回源请求资源;第二次访问“http://www.example.com/1.txt?test2”时,由于配置了“url参数”的“忽略参数”功能,所以“?”之后的参数不匹配,直接命中缓存“http://www.example.com/1.txt”。
    • 终端用户首次访问url“http://www.example.com/1.txt?test1”时,cdn无缓存,回源请求资源;第二次访问“http://www.example.com/1.txt?test2”时,由于“url参数”功能配置为“不忽略参数”,所以“?”之后的参数也需要匹配,要重新回源请求“http://www.example.com/1.txt?test2”。
  3. 预热url

    cdn可以通过缓存预热将源站资源主动缓存到cdn节点,用户访问时就能直接从cdn节点获取到最新的资源,详见缓存预热

    当您的域名初次接入cdn加速、活动发布时您可以将源站资源预热到cdn节点,用户访问资源时直接从cdn节点获取,从而提升cdn的缓存命中率。

    典型场景

    • 初次接入cdn:域名初次接入cdn时,节点暂未缓存源站资源,此时,您可以将源站资源预热至cdn节点。后续用户访问资源将直接从就近的cdn节点获取资源,提升访问速度。
    • 安装包发布新版本安装包或是升级包发布前,提前将资源预热至cdn节点。正式上线后,海量用户的下载请求将直接由全球加速节点响应,提升下载速度的同时,大幅度降低源站压力。
    • 运营活动运营活动发布前,提前将活动页涉及到的静态资源预热至cdn节点。活动开始后,用户访问中所有静态资源均由加速节点响应,海量带宽储备保障用户服务可用性,提升用户体验。
  4. 开启range回源

    range回源是指源站在收到cdn节点回源请求时,根据http请求头中的range信息返回指定范围的数据给cdn节点。range回源能有效缩短大文件的分发时间,提升回源效率,提高缓存命中率,详见range回源

    典型场景

    • 未开通range时,用户想观看指定片段的视频,而cdn回源时需要获取整个视频,所以回源流量大于响应给用户的流量,从而造成缓存命中率降低。开启range回源后,cdn将分片回源获取资源返回给用户,从而提升缓存命中率。
  5. 其它
    • 缓存资源需要更新时,尽量避免刷新目录

      当源站某个资源更新时,一般需要通过刷新相应的url来强制节点缓存资源过期。刷新目录会将目录内所有的资源全部置为过期,用户下次访问时将无法命中缓存,全部回源站请求资源,因此尽量避免刷新整个目录,尤其慎重刷新根目录。

    • 避免在url中携带动态参数

      如果您的url中包含动态参数,如时间戳,cdn无法缓存该资源,导致频繁回源。

判断url是否命中缓存

  1. 在浏览器chrome上,按f12。
  2. 选择“network”。
  3. 查看指定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”即未命中缓存。
分享:
网站地图