Range回源指源站在收到CDN节点的回源请求时,会根据HTTP请求头中的Range信息返回指定范围的数据给CDN节点。在视频点播、软件下载等大文件内容分发场景下,配置Range回源后可有效提高文件分发效率,减少回源流量消耗和源站压力,并且提升资源响应时间。

背景信息

Range可以在HTTP请求头中指定返回数据的范围,即第一个字节的位置和最后一个字节的位置。例如,Range: bytes=0-100表示回源请求该文件的前101个字节的数据内容。

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

注意事项

开启Range回源有以下注意事项:
  • 开启Range回源前需确认源站是否支持Range请求,即HTTP请求头中包含Range字段,并且源站能够响应正确的206文件分片。如果源站不支持Range请求,开启Range回源将导致资源无法缓存。
  • Range回源是可选配置项,CDN控制台默认未开启。

操作步骤

  1. 登录CDN控制台
  2. 在左侧导航栏,单击域名管理
  3. 域名管理页面,单击目标域名对应的管理
  4. 在指定域名的左侧导航栏,单击视频相关
  5. Range回源区域,单击修改
  6. 选择开启强制Range回源。
    Range回源
    Range回源设置 描述 示例
    关闭 默认为关闭状态,无论客户端是否使用Range请求CDN节点,CDN节点回源时都会请求整个文件,在大文件场景下的文件分发效率较低。 例如,客户端向CDN节点发起的请求中含有range:0-100,则CDN节点向源站发起的请求中不会携带Range参数。源站会响应CDN节点完整文件(假设完整文件大小为10 MB,源站就会响应10 MB的文件给CDN节点),CDN节点收到源站响应的文件后,会将文件缓存下来,同时响应客户端range:0-100的内容。
    开启

    开启Range回源后,当客户端使用Range请求CDN节点时,CDN节点才会采用Range请求回源。

    CDN节点第一次回源请求会按照用户请求中的Range大小向上取整回用户源站,例如,用户请求了600 KB,会按照1024 KB回源,后面全部按照512 KB分片大小回用户源站。

    例如,客户端向CDN节点发起的请求中含有range:0-100,则CDN节点会按照512 KB分片大小向源站发起请求,源站响应了这个512 KB分片大小的内容后,CDN节点会缓存该分片,并响应range:0-100的内容给客户端。
    强制 开启强制Range回源后,无论客户端是否使用Range请求CDN节点,CDN节点都会采用Range请求回源。CDN节点的所有回源Range请求都按照512 KB分片大小回用户源站。
  7. 单击确定,完成配置。

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

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

为了解决该问题,阿里云OSS产品提供了兼容性配置方式,请参见如何通过HTTP Range请求分段获取OSS资源。通过增加回源HTTP请求头x-oss-range-behavior:standard,可以改变指定HTTP Range范围超出有效区间时OSS的行为。
说明 建议在大文件(平均单个文件大小在20 MB以上)内容分发场景下,CDN回源OSS的配置中都进行该项配置。