内容分发网络 CDN-如何提高缓存命中率:优化缓存命中率
优化缓存命中率
- 合理设置缓存过期时间
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?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”。
- 预热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将分片回源获取资源返回给用户,从而提升缓存命中率。
- 其它