tencent cloud

文档反馈

如何提高 EdgeOne 的缓存命中率

最后更新时间:2024-07-01 09:41:08
    本文介绍了如何合理利用 EdgeOne 上的各项配置,结合您的实际业务场景进行调优,提高站点内文件的缓存命中率。

    背景介绍

    当您的站点接入 EdgeOne 并开启加速后,当用户访问静态资源如图片、视频时,EdgeOne 将会把响应的静态文件缓存在边缘节点中,当有其他用户发起重复请求时,将会由边缘节点直接响应请求,避免回源请求。
    
    如果缓存的命中率过低,会造成用户大量请求回源,则会给源站带来大量的处理压力,降低了用户的访问体验和站点加速效果。您可以通过以下配置调优,来优化提升缓存命中率。
    说明:
    如果您需要查看当前缓存的命中分析,可以在控制台上,通过数据分析 > 缓存分析来查看,详情请参见 缓存分析

    优化方式

    1. 调节节点缓存 TTL 配置

    节点缓存 TTL 的配置将直接影响 EdgeOne 是否缓存指定的文件资源以及对应的缓存时间,如果文件缓存策略为不缓存或者在节点上的缓存时间较短,则会导致用户访问未命中缓存,频繁回源,降低访问体验。
    EdgeOne 默认情况下针对全局站点开启了默认缓存规则,您可以通过查看 EdgeOne 内容缓存规则 来了解 EdgeOne 的缓存规则是如何生效的,为了提高缓存的命中率,建议您可以在规则引擎内根据文件后缀单独配置缓存规则。

    建议配置

    建议您在不同场景下根据不同的文件类型配置个性化的缓存规则:
    1. 不常更新的文件,例如:下载资源、视频文件等内容,建议在 EdgeOne 上单独配置自定义的缓存时间,缓存时间配置在30天以上,且通过 EdgeOne 节点强制缓存;常见的下载资源及视频文件格式如下:
    音视频
    mp4;mp3;ts;m4a;avi;m4s;ogg;mkv;mov;flv;rm;rmvb;swf;wav;wmv;rmi;aac
    压缩包
    rar;7z;zip;gzip;dmg;gz;ios;tar;jar;br;bz2
    文档
    doc;docx;xls;xlsx;pdf;ppt;pptx
    应用程序
    apk;exe;bin
    其他
    vsv;iso;jar;swf;chunk;atlas
    2.经常更新的文件内容,例如:图片内容,如果缓存时间过长,可能会因为命中缓存导致用户访问时获取到过期的内容。因此,建议在 EdgeOne 上单独配置自定义的缓存时间,一般缓存时间根据业务需求配置,可配置1-7天。常见的图片内容格式如下:
    图片
    jpg;png;jpeg;webp;gif;heif;heic;kpg;ico
    网页
    html;htm;shtml;hml;js
    3.动态文件,例如:php、json文件等,如果被缓存将会导致用户访问无法正确响应内容。因此,建议在 EdgeOne 上单独配置为不缓存。常见的动态文件格式如下:
    动态资源
    php;aspx;asp;jsp;do;dwr;cgi;fcgi;action;ashx;axd;json

    优化示例

    当您在缓存分析中查看资源的命中率较低,可以在右侧查看具体的文件后缀,查看哪些类型的资源命中率出现了大量的 miss。例如:当前缓存分布中,.mp4格式文件存在较多未命中缓存。
    如果您完全按照 EdgeOne 的默认缓存规则,存在的问题是因为响应文件时,未响应 Cache-Control 头部,根据默认缓存规则,.mp4文件在节点上的缓存时间为2小时,因为缓存时间短,导致该文件将频繁回源。如果您的需要缓存该文件,可以前往规则引擎,新增一条规则,设定当文件后缀等于mp4时,节点缓存 TTL 自定缓存30天,且开启强制缓存,即无视源站响应的CC头,节点强制缓存该文件。详细操作步骤可查看:节点缓存 TTL
    
    
    

    2. 自定义缓存键 Cache Key 将同一类型请求指向一份缓存文件

    默认情况下,EdgeOne 将根据用户访问的 URL 和查询字符串生成该缓存键的唯一标识符,作为该文件的Cache Key,当有相同请求时,边缘节点将通过比对请求是否与缓存内的 Cache Key 一致来判断是否命中该缓存。如果 URL 内携带了不影响文件版本的动态参数内容,比如用户标识 ID,则将根据该参数的不同建立了多份缓存,导致缓存命中率下降,您可以通过自定义缓存键 Cache Key 来优化。

    建议配置

    当请求 URL 中携带的部分参数不会影响文件的版本时,建议通过保留或者忽略指定的参数内容,来提高缓存命中率。

    优化示例

    当前请求URL为:https://image.example.com/test.jpg?version=1.1&token=1234567890,其中参数version=1.1将影响图片的内容,token=1234567890则不影响,为了提高缓存的命中率,可以在自定义 Cache Key 中忽略 token 参数。详细操作可查看:自定义 Cache Key
    
    
    

    3. 预热缓存

    预热缓存可以让 EdgeOne 提前将文件缓存至边缘节点中,当有用户访问时,可直接命中缓存,减少首次并发回源量,提高文件的缓存命中率。当您新增站点至 EdgeOne 时,或者有新增的热门资源发布时,建议提前预热缓存,详细操作可参考:预热缓存

    4. 开启缓存预刷新

    当您的文件主要是热点文件时,如需保障该文件能在节点内持续有缓存,您可以通过开启缓存预刷新,在节点文件缓存过期之间,用户请求节点内文件时,即向源站校验该文件是否出现更新,未更新则刷新该文件在节点内的缓存时间。详细操作可参考:缓存预刷新

    5. 合理利用 Vary 机制

    当源站响应了 Vary 头时,CDN将根据 Vary 头指定的内容来进行区分缓存,Vary 的原理说明详见 Vary 特性。如果当前文件不需要通过 Vary 头来控制文件的缓存版本,建议您在源站响应时,避免响应该头部,以减少建立的缓存版本,提高缓存命中率。
    

    了解更多

    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持