Range分片

更新时间:2025-02-26 10:11:41

Range分片,指边缘安全加速 ESA节点在回源的HTTP请求里面携带了Range信息,源站在收到回源请求时,根据HTTP请求头中的Range信息返回指定范围的内容数据给边缘安全加速 ESA节点。Range分片可有效提高文件分发效率,提高缓存命中率,减少回源流量消耗和源站压力,并且提升资源响应速度。

工作原理

RangeHTTP请求头之一,可用来指定需获取的内容的范围。例如,Range: bytes=0-100表示回源请求该文件的前101个字节的数据内容。

开启Range分片功能后,边缘安全加速 ESA收到用户的请求时,如果边缘安全加速 ESA节点上未缓存该资源或资源已过期,边缘安全加速 ESA节点回源会采用Range请求,从源站分段获取用户需要的部分资源并缓存到边缘安全加速 ESA节点上。

开启Range分片的工作原理如下图所示:

image

前提条件

开启Range分片前需确认源站是否支持Range请求,即HTTP请求头中包含Range字段,并且源站能够响应正确的206状态码。如果源站不支持Range请求,开启Range分片将导致资源无法缓存。

注意事项

如果客户端访问的内容为动态资源(即资源的文件后缀不在ESA节点的默认缓存文件列表中,并且ESA上也没有明确设置针对该资源的缓存策略,ESA节点的响应信息里面,缓存状态为DYNAMIC),动态资源在回源的时候不会做Range分片处理。

操作步骤

  1. 登录ESA控制台

  2. 在左侧导航栏,单击站点管理

  3. 站点管理页面,单击目标站点名称,或对应站点操作列的详情

  4. 在左侧导航栏,选择规则 > 回源规则

  5. 点击新建规则,填写规则名称

  6. 当请求匹配以下规则时...区域设置要匹配的用户请求特征,单击Range分片区域的配置

  7. 选择跟随客户端Range请求(默认配置)不使用Range回源开启Range回源(大文件场景推荐配置)Range分片。

    选项

    描述

    示例

    选项

    描述

    示例

    跟随客户端Range请求(默认配置)

    默认为跟随客户端Range请求(默认配置)状态,当客户端使用Range请求ESA节点时,边缘安全加速 ESA节点才会采用Range请求回源。边缘安全加速 ESA节点第一次回源请求会按照用户请求中的Range大小向上取整回用户源站,后面全部按照512 KB分片大小回用户源站。

    例如,客户端向ESA节点发起的请求中含有range:0-100,则ESA节点会按照512 KB分片大小向源站发起请求,源站响应了这个512 KB分片大小的内容后,ESA节点会缓存该分片,并将range:0-100的内容响应给客户端。

    不使用Range回源

    开启不使用Range回源后,无论客户端是否使用Range请求边缘安全加速 ESA节点,边缘安全加速 ESA节点回源时都会请求整个文件,在大文件场景下的文件分发效率较低。

    例如,客户端向ESA节点发起的请求中含有range:0-100,则ESA节点向源站发起的请求中不会携带Range参数。源站会响应ESA节点完整文件(假设完整文件大小为10 MB,源站就会响应10 MB的文件给ESA节点),ESA节点收到源站响应的文件后,会将文件缓存下来,同时响应客户端range:0-100的内容。

    开启Range回源(大文件场景推荐配置)

    开启Range回源(大文件场景推荐配置)后,无论客户端是否使用Range请求边缘安全加速 ESA节点,边缘安全加速 ESA节点都会采用Range请求回源。边缘安全加速 ESA节点的所有回源Range请求都按照512 KB分片大小回用户源站。

  8. 点击确定

HTTP Range范围超出有效区间的兼容性配置

当阿里云OSS作为源站时,默认情况下,如果HTTP Range请求不合法或者指定范围超出有效区间,会导致Range不生效,响应状态码为200,并传送整个Object内容,此时会影响回源获取文件的响应速度。

回源OSS源站获取大文件的场景下,如果OSS响应了cache-control:no-cache不缓存策略,或者客户端请求访问触发Range请求回源OSS时,可能会出现异常,具体表现为:下载异常缓慢甚至超时(30秒左右)、下载至超Range片时触发连接中断(如文件末尾的最后一片)。

具体请求示例请参见如何通过HTTP Range请求分段获取OSS资源

说明
  • 建议在大文件(平均单个文件大小在20 MB以上)内容分发场景下,边缘安全加速 ESA回源OSS时都进行该项配置。

  • 如果在阿里云OSS源站上开启了访问鉴权功能,并且由客户端来实现回源请求的签名计算,那么客户端在签名计算的时候需要把回源请求头x-oss-range-behavior:standard加入签名计算(由于阿里云OSS在计算签名的时候,会将所有带x-oss-前缀的请求头都加入计算,如果客户端签名计算的时候没有把x-oss-range-behavior:standard加入签名计算,会导致阿里云OSS源站签名计算不一致,拒绝回源请求)。

  • 本页导读
  • 工作原理
  • 前提条件
  • 注意事项
  • 操作步骤
  • HTTP Range范围超出有效区间的兼容性配置