PHP的Accept-Ranges頭部字段是用來指示服務(wù)器是否支持分塊傳輸。分塊傳輸?shù)囊馑际菍⑽募譃槎鄠€(gè)塊,每個(gè)塊之間使用Content-Range頭部字段指定文件的范圍。
一個(gè)支持 Accept-Ranges 的例子如下:
HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 10000 Content-Type: image/jpeg
在這個(gè)例子中,服務(wù)器指定了Accept-Ranges頭部字段,說明它支持分塊傳輸。Content-Length頭部字段指定了整個(gè)文件大小,Content-Type頭部字段指定了文件類型。
在傳輸文件時(shí),客戶端可以使用Range頭部字段指定需要獲得的文件塊的范圍。例如:
GET /image.jpg HTTP/1.1 Host: example.com Range: bytes=0-999
在這個(gè)例子中,客戶端請(qǐng)求一個(gè)從第0個(gè)字節(jié)到第999個(gè)字節(jié)的文件塊。服務(wù)器在響應(yīng)時(shí)返回Content-Range頭部字段來指定實(shí)際返回的文件塊范圍,例如:
HTTP/1.1 206 Partial Content Content-Type: image/jpeg Content-Range: bytes 0-999/10000 Content-Length: 1000 ...(第0-999個(gè)字節(jié)的文件塊內(nèi)容)...
在這個(gè)例子中,Content-Range頭部字段指定了實(shí)際返回的文件塊范圍,其中bytes 0-999是指第0個(gè)字節(jié)到第999個(gè)字節(jié),/10000是指文件總大小是10000個(gè)字節(jié)。Content-Length頭部字段指定了實(shí)際返回的文件塊大小,這里是1000個(gè)字節(jié)。
使用 Accept-Ranges 和 Range 可以加快文件傳輸速度并節(jié)約網(wǎng)絡(luò)帶寬,因?yàn)橹恍枰獋鬏斝枰奈募K而不是整個(gè)文件。