HTTP 分片

使用 HTTP 分片动作将大型缓存对象拆分为多个范围请求。

HTTP 分片把大型响应拆分为固定大小的字节范围子请求,并分别缓存这些分片。 它适合大型文件、视频和其他支持字节范围请求的静态对象。

此功能在 OpenResty Edge 26.12.1-1 中首次引入。

配置动作

  1. 在 HTTP 应用页面规则、全局改写规则或全局自定义动作中添加 开启 HTTP 分片。
  2. 设置分片大小。Edge Admin 以 MB 显示该值,最小值为 1 MB。
  3. 确保同一请求已经启用代理缓存,然后保存并发布配置。

设置 HTTP 分片大小

分片只对缓存请求生效。网关会使用 Range 向源站获取各个分片,客户端仍看到 一个连续响应。分片成功时,源站应正确支持字节范围请求,并返回 200 或 206。

选择分片大小

较小的分片可以减少首次读取所需的数据量,但会增加源站请求数和缓存键数量; 较大的分片会减少请求数,但可能增加首包等待和无用数据回源。应根据对象大小、 客户端访问方式和源站承载能力测试后再确定。控制台会对 128 MB 或更大的值给出提示。

限制和故障排查

  • 不要在同一个请求上设置、添加或修改发往源站的 Range 请求头。
  • 依赖完整响应体的规则与客户端自己的范围请求可能和分片冲突,并导致 500。 发生冲突时,移除相关 Range 处理或关闭 HTTP 分片。
  • 每个分片都可能独立重试。源站不稳定时,请求重试次数会按分片放大。
  • 修改分片大小会产生不同的缓存键。发布前应评估缓存空间和源站流量变化。