http/1.1之後才支援,需要雙端都支援
服務端頭資訊中有 accept-ranges:bytes 表明伺服器支援範圍請求
範圍請求:
http code 返回 206 partial content
客戶端請求頭:content-range: bytes 0-1408774/1408775
start-end/content-length
end 最大為 content-length - 1, start 從0開始, 包括開始和結束值,超過範圍有可能返回 http 416 range not satisfiable ,有的伺服器會自動修正
range 還有幾種不同的方式來限定範圍,可以根據需要靈活定製:1. 500-1000
3. -500:無開始區間,只意思是需要最後 500
bytes 的內容實體。
4. 100-300,1000-3000:指定多個範圍,這種方式使用的場景很少,了解一下就好了
範圍請求示例:
範圍請求需要在head中增加 range: bytes=0-10
curl -i -r 0-100 ""或gmtcontent-range: bytes 0-100/1408775# 本次返回內容的 開始-結束/總長度
content-length: 101 #本次返回的總長度
content-type: text/html
content-language: en
資源變化
etag:當前檔案的乙個驗證令牌指紋,用於標識檔案的唯一性。last-modified:標記當前檔案最後被修改的時間。
if-range: ***
if-range 必須與 range 配套使用。如果沒有 range,那麼 if-range 就會被忽略。
如果伺服器不支援 if-range,那麼 range 也會被忽略。
etag(entity tags)主要為了解決 last-modified 無法解決的一些問題。
1、某些檔案週期性改變,但內容沒變,只是時間變了
2、某些檔案改變非常頻繁(1s變化n次),後者只可以精確到秒
3、某些伺服器不能精確得到檔案的修改時間
參考:
HTTP範圍請求
只有雙端 客戶端和伺服器端 都支援http 1.1才能使用範圍請求。1.範圍請求的請求報文 在http 1.1的請求報文中,有乙個首部字段range來指定請求資源的byte範圍。範圍請求報文示例 range bytes 5001 10000 byte範圍指定形式如下 2.範圍請求的響應報文 針對範圍...
Http 資料壓縮 分塊傳輸 範圍請求
1.首先來看資料壓縮 http傳輸資料時,會對資料進行壓縮,因為有些資料大的有幾 g 幾十 g 都有可能。通常瀏覽器傳送請求時會帶著 accept econding 頭欄位,面是瀏覽器支援的壓縮格式列表,例如 gzip deflate br 等,這樣伺服器就可以從中選擇一種壓縮演算法,放進 cont...
HTTP請求 HTTP方法
http 1.1中可使用的方法 get 獲取資源 獲取伺服器的某個資源 get方法用來請求訪問已經被uri識別的資源。制定的資源經伺服器端解析後返回響應內容。也就是說,如果請求的資源是文字,那就保持原樣返回 如果是像cgi common gateway inte ce,通用閘道器介面 那樣的程式,就...