分片回源即 Range 请求回源,Range 是 HTTP 请求头部之一,用于获取指定范围内的文件,使用 Range 请求可以向服务器请求部分文件内容,例如:请求时携带 HTTP 头部:range:bytes=0-999,则返回文件的前1000个字节给用户。
在腾讯云 CDN 内,开启分片回源配置后,将默认携带 range 回源请求,假如用户请求的部分文件在节点上未缓存或缓存已过期,CDN 会根据用户请求进行分片回源,仅拉取用户需要的部分文件至节点缓存,同时返回给用户;如果关闭分片回源配置的情况下,如果用户请求中未携带 range 请求,则 CDN 在回源时仍会拉取整个文件。
针对较大的文件类型如 APK 安装包、音视频文件,通过 range 请求可以有效提高大文件分发效率,提升响应速度,降低源站压力。
注意事项
1. 开启分片回源配置时,需要确认源站已经支持 Range 请求(腾讯云 COS 默认支持),否则可能会导致回源失败;
开启:当开启分片回源时,回源请求时将使用 range 回源请求。开启后,当用户请求未携带 range 请求时,如果请求文件大于4M,CDN 节点将按照1M的分片大小回源分片请求,如果文件小于4M,则CDN节点将回源拉取完整文件。当用户请求携带 range 请求时,将按照携带的 range 请求进行回源请求。
关闭:当关闭分片回源时,当用户请求携带 range 请求时,在 CDN 没有缓存的情况下,回源请求仍会使用 range 回源请求。
示例一
若全部文件都需要开启 range 回源,域名 cloud.tencent.com 的分片回源配置如下:
用户 A 请求资源:http://cloud.tencent.com/test.apk,节点收到请求后,发现缓存的 test.apk 文件已过期,此时发起回源请求,因为当前规则为全部文件开启分片回源,则节点回源使用 Range 请求,分片获取资源并缓存。若此时用户 B 向同一节点发起的同一文件请求,并且也是 Range 请求,当节点上存储的分片已满足 Range 中指定的字节段,则会直接返回给用户,无需等所有分片获取完毕。
用户 A 请求资源:http://cloud.tencent.com/test.apk,由于下方的规则优先级高于上方的规则,所以该请求在节点资源未命中或缓存已过期的情况下,将使用分片回源。若用户B请求资源:http://cloud.tencent.com/test.jpg,该规则只匹配全部文件,则该请求出现回源的情况下,不使用分片回源请求。