EdgeOne 内容缓存规则
概述
当客户端向 EdgeOne 边缘节点发起 HTTP 请求后,节点将判断当前文件是否命中缓存,如未命中,则回源向源站发起请求获取最新文件,在源站正确响应文件后,EdgeOne 将根据用户设置的缓存规则结合平台默认缓存策略,对文件进行缓存。您可以通过查看 如何配置缓存规则 来了解如何自定义设置您的文件缓存规则。缓存规则配置后,将按照以下顺序匹配生效:
注意:
缓存规则仅在源站响应状态码为200、206的情况下生效,如果源站响应为404状态码,则节点将缓存该状态码10s,其他状态码均不缓存。
1. 缓存规则将优先匹配规则引擎内缓存规则,按照从上往下的优先级顺序进行匹配,最上方规则优先级最高,如该文件在规则引擎内匹配成功,则按照该缓存规则进行缓存。
2. 规则引擎内未匹配到相应的规则时,则按照站点加速内的全局节点缓存策略进行缓存,全局缓存策略默认为 EdgeOne 的默认缓存策略,您可以根据需求自定义修改。
缓存规则
EdgeOne 支持配置三种缓存策略配置,分别为:
默认缓存策略:遵循 EdgeOne 默认缓存策略,根据 HTTP 响应头内的
Cache-Control
及其他缓存头部来决定文件在节点内的缓存时间。不缓存:通过规则引擎内指定文件不缓存,或全局文件不缓存,适用于动态文件或更新频繁的文件内容。
自定义缓存时间:按照自定义缓存时间缓存文件。
注意:
文件缓存在 EdgeOne 节点后,平台具有文件冷热淘汰机制,如果当前缓存文件长时间未有请求,则可能在未达到最大缓存时间时提前从节点缓存中删除。
默认缓存策略
EdgeOne 的默认缓存策略如下:
在默认缓存策略下,节点将根据源站是否携带缓存头部来控制该文件在节点的缓存动作及缓存时间,缓存规则如下:
1. 当 HTTP 响应头中,包含了以下任意的不缓存头部时,文件不缓存:
Cache-Control:private
Cache-Control:no-store
Cache-Control:no-cache
2. 当 HTTP 响应头中,包含以下任意一个缓存头部时,文件将按照缓存头部中设定的缓存时间进行缓存:
Cache-Control:s-maxage
Cache-Control:max-age
Expires
如果同时存在以上多个响应头,则缓存时间按照 s-maxage > max-age > Expires 的优先级顺序判断,按照优先级高的头部所设定时间缓存。
3. 当 HTTP 响应头不包含以上任意的缓存头部时,则会根据在规则中所配置的缓存行为执行:
默认缓存策略:
如果 HTTP 响应头内带有
Last-Modified
,则缓存时间 = ( 当前时间 - Last-Modified
) * 0.1,计算结果在10秒 ~ 3600秒及之间的,取计算结果时间;小于10秒的,按照10秒处理;大于3600秒的,按照3600秒处理。如果 HTTP 响应头内无
Last-Modified
,则依据文件后缀,按照平台默认缓存规则进行缓存,不同文件后缀的缓存时间如下:文件类型 | 后缀 | 缓存时间 | |
动态文件 | | php、aspx、asp、jsp、do、dwr、cgi、fcgi、action、ashx、axd、json | 不缓存 |
静态文件 | 图片 | jpg、png、jpeg、webp、gif、heif、heic、kpg、ico | 缓存2小时 |
| 音视频 | mp4、mp3、m3u8、ts、m4a、avi、m4s、ogg | |
| 网页 | html、js、css | |
| 压缩包 | zip、7z、tar、br、gz、rar、bz2 | |
| 文档 | doc、docx、xls、xlsx、pdf、ppt、pptx | |
| 应用程序 | apk、exe、bin | |
| 其它 | vsv、iso、jar、swf、chunk、atlas | |
其他文件 | | N/A | 不缓存 |
不缓存:HTTP 响应头中不包含以上任意缓存头部的情况下,不缓存
自定义时间:如果 HTTP 响应头中不包含以上任意缓存头部,则按照平台自定义配置的缓存时间缓存。
不缓存策略
如果在 EdgeOne 规则引擎或全局站点设置内,配置缓存规则为不缓存,则该文件无论源站是否带有
Cache-Control
及其他缓存头部,均不缓存文件。自定义缓存时间
自定义缓存时间可以帮助您按照自定义配置的时间来缓存文件,支持开启/关闭强制缓存:
开启强制缓存:默认开启,无论源站是否携带有
Cache-Control
及其他缓存头部,均无视对应头部配置,按照 EdgeOne 平台内配置的自定义缓存时间缓存该文件。关闭强制缓存:关闭强制缓存后,如果源站的 HTTP 响应头中携带有以下任意的不缓存响应头时,文件将不会缓存:
Cache-Control:private
Cache-Control:no-store
Cache-Control:no-cache
如果不包含以上的任意 HTTP 响应头,则文件将按照 EdgeOne 平台内配置的自定义缓存时间缓存该文件。
了解更多