在使用边缘安全加速 ESA加速静态资源时,边缘安全加速 ESA会将源站上的资源缓存到距离客户端最近的边缘安全加速 ESA节点上。当您访问该静态资源时,可以直接从边缘安全加速 ESA的缓存节点上获取,有效避免通过较长的链路回源,提高资源访问效率。阿里云边缘安全加速 ESA的所有节点都包含缓存软件,在用户请求或者源站响应资源经过边缘安全加速 ESA节点时,缓存软件会根据需要对源站资源进行缓存,并设定缓存过期时间。
默认缓存策略
客户端请求只有在进入边缘安全加速 ESA缓存组件的情况下,缓存配置才会生效。客户端请求是否进入缓存组件需要按顺序经过三重判断,相关说明如下:
用户请求类型判断:默认只有GET、HEAD请求类型才能进入缓存组件。
缓存规则判断:判断用户请求是否符合缓存规则中设定的规则条件,如果符合,用户请求将会使用缓存规则中设定的缓存配置(缓存规则的生效优先级高于全局缓存配置),具体请参见缓存配置生效逻辑。
请求文件类型判断:判断用户请求需要访问的文件类型是否符合默认缓存的文件扩展名中的文件类型,如果符合,用户请求将会使用全局配置中设定的缓存配置。
默认缓存的文件扩展名
默认情况下,用户请求的资源的文件后缀是下面这些类型时,用户请求会经过缓存模块(即对应绕过缓存功能的默认规则),至于资源在缓存模块上的缓存过期时间,还需要按该资源命中的缓存规则。
如果要缓存的资源类型不在以下文件类型中,可以参阅 规则引擎 以创建缓存所需资源的规则策略。
文件类型 | 文件扩展名说明 |
文档文件 |
|
图像文件 |
|
音频文件 |
|
视频文件 |
|
压缩文件 |
|
执行文件(可执行程序/安装包) |
|
字体文件 |
|
脚本与代码文件 |
|
设计与矢量图形文件 |
|
缓存配置生效逻辑
节点缓存过期时间功能有四种模式,这四种模式分别具备不同的缓存生效逻辑:
优先遵循源站缓存策略(如果存在),否则使用默认缓存策略:如果源站响应信息中有缓存策略(Cache-Control),则遵循源站的缓存策略;如果源站响应信息中没有缓存策略(Cache-Control),则遵循边缘安全加速 ESA的默认缓存策略。详细的判断逻辑请参见遵循源站缓存策略。
优先遵循源站缓存策略(如果存在),否则不缓存:如果源站响应信息中有缓存策略(包括Cache-Control、Expires、Last-Modified、ETag),则遵循源站的缓存策略;如果源站响应信息中没有缓存策略(包括Cache-Control、Expires、Last-Modified、ETag),则不缓存。详细的判断逻辑请参见优先遵循源站缓存策略(如果存在),否则不缓存。
不缓存:边缘安全加速 ESA节点收到的所有源站响应资源均不缓存。
忽略源站缓存策略,使用自定义缓存过期时间:忽略源站响应信息中的缓存策略(包括Cache-Control、Expires、Last-Modified、ETag),使用边缘安全加速 ESA上设定的缓存过期时间。
缓存状态响应
ESA边缘节点在返回给客户端的信息中包含响应头X-Site-Cache-Status,这个响应头用于指示客户端请求的资源的缓存状态,下面的表格中包含了所有的缓存状态类型及其说明。
状态 | 状态说明 |
HIT | 在ESA节点的缓存中找到了该资源,资源未过期,ESA节点将已缓存资源响应给客户端。 |
MISS | 在ESA节点的缓存中找不到该资源,ESA节点从源服务器获取该资源之后响应给客户端。 |
EXPIRED | 在ESA节点的缓存中找到了该资源,但是资源已过期,ESA节点从源服务器获取该资源之后响应给客户端。 |
STALE | 在ESA节点的缓存中找到了该资源,但是资源已过期,ESA节点无法访问源站以检索更新的资源,于是将已过期的缓存资源响应给客户端。包含以下两种情况:
|
BYPASS | 在ESA设置了优先遵循源站缓存策略的情况下,如果源服务器响应Cache-Control:no-cache,或者Cache-Control:no-store,或者Cache-Control:max-age=0。 |
REVALIDATED | 在ESA节点的缓存中找到了该资源,但是资源已过期,ESA节点通过携带If-Modified-Since标头或If-None-Match标头的回源请求对该资源做了重新验证,源站响应Status Code:304 Not Modified,表明该资源未发生变更,ESA节点将已缓存资源响应给客户端。 |
DYNAMIC | ESA节点认为该资源为动态内容,ESA节点将从源服务器获取该资源之后响应给客户端。包含以下三种情况:
|