Edge Security Acceleration 缓存机制详解
阿里云边缘安全加速(ESA, Edge Security Acceleration)通过将源站资源缓存到距离客户端最近的边缘节点,有效避免通过较长的链路回源,从而显著提高资源访问效率。ESA的缓存系统采用多重判断机制,确保缓存策略的灵活性和准确性。
ESA提供四种缓存模式,用户可根据业务需求灵活选择:
| 缓存模式 | 说明 |
|---|---|
| 优先遵循源站,否则默认 | 源站返回Cache-Control/Expires/Last-Modified/ETag时遵循源站配置;否则使用ESA默认策略 |
| 优先遵循源站,否则不缓存 | 源站无Cache-Control响应头时,资源不缓存 |
| 不缓存 | 所有资源均不缓存,所有请求直接回源 |
| 忽略源站,自定义TTL | 强制使用ESA设定的过期时间,完全忽略源站缓存配置 |
当选择"优先遵循源站,否则默认"模式且源站未返回Cache-Control时,ESA按以下优先级判断缓存策略:
ESA默认对以下文件扩展名的资源启用缓存:
| 文件类型 | 扩展名 |
|---|---|
| 文档 | .DOC, .DOCX, .PPT, .PPTX, .PDF, .CSV |
| 图像 | .BMP, .GIF, .ICO, .JPEG, .JPG, .PNG, .SVG, .SVGZ, .TIF, .TIFF, .WEBP |
| 音频 | .MP3, .FLAC, .MID, .MIDI |
| 视频 | .AVI, .MP4, .MKV, .WEBM |
| 压缩 | .7Z, .GZ, .RAR, .TAR, .ZIP, .ZST |
| 执行文件 | .APK, .BIN, .CLASS, .DMG, .EXE, .JAR, .MSI, .ISO |
| 字体 | .EOT, .OTF, .TTF, .WOFF, .WOFF2 |
| 脚本代码 | .CSS, .EJS, .JS |
| 设计矢量 | .EPS, .PICT, .PS, .SWF |
对于以下正常状态码(200/203/206/300/301/308/410),按上述四种缓存模式处理。
| 状态码 | 缓存规则 |
|---|---|
| 204/305/404/405/414/424/429/500/501/502/503/504 | 无set-cookie时:优先ESA配置 > 源站Pragma/Cache-Control/Expires > 默认1秒 |
| 302/307/403 | 同上,但源站无配置时不缓存 |
| 其他(如400) | 仅ESA配置有效,其他情况不缓存 |
Range回源特殊处理:非206响应会删除已缓存的分片数据。
ESA在响应中提供以下与缓存相关的头部信息:
| 响应头 | 说明 |
|---|---|
| Ali-Swift-Global-Savetime | 资源首次进入ESA边缘节点时间(Unix时间戳) |
| Date | 源站响应时间(GMT格式) |
| X-Site-Cache-Status | 缓存状态:HIT/MISS/NONE/EXPIRED/STALE/BYPASS/REVALIDATED/DYNAMIC |
| X-Swift-Cachetime | 缓存过期时间(秒) |
| X-Swift-SaveTime | 资源进入当前L1节点时间(GMT格式) |
ESA支持以下缓存控制指令:
阿里云ESA的默认缓存策略提供了灵活且全面的缓存管理能力。通过四层缓存模式、丰富的默认文件类型支持、差异化的状态码处理以及详细的缓存响应头信息,ESA能够满足不同业务场景下的缓存需求。用户可以根据自身业务特点,选择合适的缓存模式,并结合源站缓存控制头部,实现最优的缓存效果。