文档中心>边缘安全加速平台 EO>站点加速>缓存配置>如何提高 EdgeOne 的缓存命中率

如何提高 EdgeOne 的缓存命中率

最近更新时间:2024-04-02 17:51:01

我的收藏
本文介绍了如何合理利用 EdgeOne 上的各项配置,结合您的实际业务场景进行调优,提高站点内文件的缓存命中率。

背景介绍

当您的站点接入 EdgeOne 并开启加速后,当用户访问静态资源如图片、视频时,EdgeOne 将会把响应的静态文件缓存在边缘节点中,当有其他用户发起重复请求时,将会由边缘节点直接响应请求,避免回源请求。

如果缓存的命中率过低,会造成用户大量请求回源,则会给源站带来大量的处理压力,降低了用户的访问体验和站点加速效果。您可以通过以下配置调优,来优化提升缓存命中率。
说明:
如果您需要查看当前缓存的命中分析,可以在控制台上,通过数据分析 > 缓存分析来查看,详情请参见 缓存分析

优化方式

调节节点缓存 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




自定义缓存键 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




预热缓存

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

开启缓存预刷新

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

合理利用 Vary 机制

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


了解更多