扶凯

取势 明道 优术

squid对range的处理 3,051 views

作者为 扶 凯 发表

IT•技术

在squid中,如果用户有请求range,有二种处理方法

1.给range请求转发给源网站,自己做个代理.多个请求,多次通过squid.

2.给range的请求转成一个完整的请求,下载完整个文件.

第一种好理解,但是第二种就不好理解了.比如,同时有个用户请求这个文件时,会回去源网站几次,会出现什么问题.

经过测试,对同一个文件,多个请求,不同的range时,在第二种模式只会有一个回去源网站,所有另外的用户见到的都是PENDING的状态.日志中会见到206的响应.

例如,

一个用户请求一个4G的文件时,用户下载了从0~2G之间的文件,当有个用户请求从0到1G时,直接给这个文件回复给用户,不回去源.

当用户请求1.5G到4G时,前面0.5G很快,直接从squid回复,后面到了2G以后,就会等第一个用户,第一个用户下载多少,它才能得到多少数据.

Http协议Range域格式

Range头域可以请求实体的一个或者多个子范围.例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999

但是服务器可以忽略此请求头,如果GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200  (OK).


来了就留个评论吧! 没有评论