HTTP之Range


HTTP之Range

 1、什么是Range?

  當用戶在聽一首歌的時候,如果聽到一半(網絡下載了一半),網絡斷掉了,用戶需要繼續聽的時候,文件服務器不支持斷點的話,則用戶需要重新下載這個文件。而Range支持的話,客戶端應該記錄了之前已經讀取的文件范圍,網絡恢復之后,則向服務器發送讀取剩余Range的請求,服務端只需要發送客戶端請求的那部分內容,而不用整個文件發送回客戶端,以此節省網絡帶寬。

 2、HTTP1.1規范的Range是怎樣一個約定呢?

  如果Server支持Range,首先就要告訴客戶端,咱支持Range,之后客戶端才可能發起帶Range的請求。這里套用唐僧的一句話,你不說我怎么知道呢。response.setHeader('Accept-Ranges', 'bytes');

  Server通過請求頭中的Range: bytes=0-xxx來判斷是否是做Range請求,如果這個值存在而且有效,則只發回請求的那部分文件內容,響應的狀態碼變成206,表示Partial Content,並設置Content-Range。如果無效,則返回416狀態碼,表明Request Range Not Satisfiable(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.17 )。如果不包含Range的請求頭,則繼續通過常規的方式響應。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM