配置状态码缓存过期时间

更新时间:
复制为 MD 格式

当源站响应非 2xx 状态码时,边缘安全加速 ESA节点可缓存该状态码并在有效期内直接响应,无需每次回源,有效减轻源站压力。

适用场景

正常情况下,ESA节点从源站成功获取到资源(源站响应 2xx 状态码)时,会按照缓存配置规则进行缓存。但如果源站响应非 2xx 状态码(例如 404、502 等),且不希望所有请求都回源,可以配置状态码缓存过期时间,由ESA节点直接响应状态码,减轻源站压力。

典型场景

文件 A 在源站已被删除,但客户端仍持续访问。由于ESA节点没有缓存文件 A,所有针对文件 A 的请求都将回源,由源站响应 404 状态码,这会大幅增加源站压力。

如果在ESA节点上配置了缓存 404 状态码,节点首次回源获取 404 状态码后会进行缓存,在缓存有效期内,后续请求将由ESA节点直接响应 404,无需回源,从而减轻源站压力。

操作步骤

  1. ESA控制台选择站点管理,在站点列单击目标站点。

  2. 在左侧导航栏,选择规则 > 缓存规则

  3. 单击新增规则,填写规则名称

  4. 如果请求匹配以下规则...区域设置要匹配的用户请求特征,具体配置规则请参见规则表达式的组成

  5. 绕过缓存区域,设置是否绕过缓存,具体请参见缓存资格

  6. 边缘缓存过期时间区域,单击配置

  7. 单击状态码缓存过期时间添加,配置以下参数后单击确定

    • 状态码:需要缓存的 HTTP 状态码。支持 4xx(客户端错误)和 5xx(服务端错误)状态码,例如 404、502、503 等。

    • 过期时间:节点缓存该状态码的有效期,取值范围:1 秒~31536000 秒(1 年)。过期后节点将重新回源获取状态码。

    image

配置示例

场景 1:缓存静态资源 404 错误

业务需求:网站图片目录中的图片可能被删除,但前端页面仍引用旧路径。

配置方案

  • 匹配条件:URL 路径包含 /images

  • 状态码:404

  • 缓存过期时间:600 秒(10 分钟)

image

生效逻辑:首次请求不存在的图片时节点回源获取 404 并缓存 10 分钟,后续 10 分钟内的相同请求由节点直接响应 404,无需回源。

场景 2:短时缓存源站故障

业务需求:源站偶尔出现短暂不可用,返回5xx错误,希望快速恢复服务。

配置方案

  • 匹配条件所有传入请求

  • 状态码:5xx

  • 缓存过期时间:60 秒(1 分钟)

image

生效逻辑:源站故障时节点缓存 5xx 状态码 1 分钟,避免大量回源请求加重源站压力;1 分钟后重新回源检查源站是否已恢复。

验证配置

配置完成后,可以使用以下方法验证配置是否生效。

方法 1:使用 curl 命令

  1. 清除本地缓存,发起首次请求:

    curl -I https://example.com/non-existent-page

    预期响应头包含 x-site-cache-status: MISS(表示首次回源)。

  2. 立即再次请求相同 URL

    curl -I https://example.com/non-existent-page

    预期响应头包含 x-site-cache-status: HIT(表示命中缓存)以及表示缓存时长的字段值自动递增。

方法 2:使用浏览器开发者工具

  1. 打开 Chrome DevTools (F12),切换到 Network 标签页,勾选 Preserve log。

  2. 访问一个不存在的资源(如 https://example.com/test404)。

  3. 查看请求详情中的 Response Headers:首次请求显示 x-site-cache-status: MISS,后续请求显示 x-site-cache-status: HIT 且表示缓存时长的字段值自动递增。

常见问题

配置后为什么仍然在回源?

  1. 缓存时间已过期:检查配置的 TTL 值,确认是否过短。可以查看响应头中的 Cache‑Control等字段,确认缓存存活时间。

  2. URL 参数不同:默认情况下,不同 URL 参数视为不同的缓存键。建议配置缓存键规则,忽略无关参数。

  3. 规则未生效:检查规则的匹配条件(如路径匹配条件),确保覆盖目标请求。

如何验证特定 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 秒

如何手动清除特定状态码的缓存?

可进行URL刷新缓存按目录刷新缓存

相关文档

规则相关的功能,在生效优先级、可重入性、生效颗粒度上存在差异,详细情况请查看规则相关功能的特性说明