当源站响应非 2xx 状态码时,边缘安全加速 ESA节点可缓存该状态码并在有效期内直接响应,无需每次回源,有效减轻源站压力。
适用场景
正常情况下,ESA节点从源站成功获取到资源(源站响应 2xx 状态码)时,会按照缓存配置规则进行缓存。但如果源站响应非 2xx 状态码(例如 404、502 等),且不希望所有请求都回源,可以配置状态码缓存过期时间,由ESA节点直接响应状态码,减轻源站压力。
典型场景
文件 A 在源站已被删除,但客户端仍持续访问。由于ESA节点没有缓存文件 A,所有针对文件 A 的请求都将回源,由源站响应 404 状态码,这会大幅增加源站压力。
如果在ESA节点上配置了缓存 404 状态码,节点首次回源获取 404 状态码后会进行缓存,在缓存有效期内,后续请求将由ESA节点直接响应 404,无需回源,从而减轻源站压力。
操作步骤
配置示例
场景 1:缓存静态资源 404 错误
业务需求:网站图片目录中的图片可能被删除,但前端页面仍引用旧路径。
配置方案:
匹配条件:URL 路径包含
/images状态码:404
缓存过期时间:600 秒(10 分钟)

生效逻辑:首次请求不存在的图片时节点回源获取 404 并缓存 10 分钟,后续 10 分钟内的相同请求由节点直接响应 404,无需回源。
场景 2:短时缓存源站故障
业务需求:源站偶尔出现短暂不可用,返回5xx错误,希望快速恢复服务。
配置方案:
匹配条件:所有传入请求
状态码:5xx
缓存过期时间:60 秒(1 分钟)

生效逻辑:源站故障时节点缓存 5xx 状态码 1 分钟,避免大量回源请求加重源站压力;1 分钟后重新回源检查源站是否已恢复。
验证配置
配置完成后,可以使用以下方法验证配置是否生效。
方法 1:使用 curl 命令
清除本地缓存,发起首次请求:
curl -I https://example.com/non-existent-page预期响应头包含
x-site-cache-status: MISS(表示首次回源)。立即再次请求相同
URL:curl -I https://example.com/non-existent-page预期响应头包含
x-site-cache-status: HIT(表示命中缓存)以及表示缓存时长的字段值自动递增。
方法 2:使用浏览器开发者工具
打开 Chrome DevTools (F12),切换到 Network 标签页,勾选 Preserve log。
访问一个不存在的资源(如
https://example.com/test404)。查看请求详情中的
Response Headers:首次请求显示x-site-cache-status: MISS,后续请求显示x-site-cache-status: HIT且表示缓存时长的字段值自动递增。
常见问题
配置后为什么仍然在回源?
缓存时间已过期:检查配置的
TTL值,确认是否过短。可以查看响应头中的Cache‑Control等字段,确认缓存存活时间。URL 参数不同:默认情况下,不同
URL参数视为不同的缓存键。建议配置缓存键规则,忽略无关参数。规则未生效:检查规则的匹配条件(如路径匹配条件),确保覆盖目标请求。
如何验证特定 URL 的缓存状态?
使用 curl 命令查看详细响应头:
curl -v -I https://example.com/target-url关键响应头说明:
x-site-cache-status: HIT- 命中缓存x-site-cache-status: MISS- 未命中缓存,已回源Cache‑Control:max‑age=120- 缓存已存活 120 秒
如何手动清除特定状态码的缓存?
相关文档
规则相关的功能,在生效优先级、可重入性、生效颗粒度上存在差异,详细情况请查看规则相关功能的特性说明。
