<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      13 HTTP傳輸大文件的方法

      如何在有限的帶寬下高效快捷傳輸大文件?

      1. 數(shù)據(jù)壓縮

      2. 分塊傳輸

      3. 范圍請(qǐng)求

      4. 多段數(shù)據(jù)

      數(shù)據(jù)壓縮

      1. 思路:把大文件整體變小

      2. 瀏覽器發(fā)送請(qǐng)求時(shí),請(qǐng)求頭字段Accept-Encoding是瀏覽器支持的壓縮格式列表,如 gzip,deflate,br;服務(wù)器選擇一種壓縮算法,放到響應(yīng)頭Content-Encoding中,再把壓縮數(shù)據(jù)壓縮后發(fā)給瀏覽器。

      3. gzip 等壓縮算法只對(duì)文本文件有較好的壓縮率,而圖片、音頻文件已經(jīng)是高度壓縮的,再使用gzip 處理也不會(huì)變小,所以失效。

      分塊傳輸

      1. 思路:化整為零,把文件分解成小塊,分批發(fā)送給瀏覽器,瀏覽器收到后再組裝復(fù)原。

      2. chunked 分塊傳輸編碼:響應(yīng)報(bào)文頭字段“Transfer-Encoding:chunked”表示,意思是報(bào)文的body部分不是一次性發(fā)過(guò)來(lái)的,而是分成了許多的塊(chunk)傳輸。

      3. Transfer-Encoding 與 Content-Length 互斥,因?yàn)橐错憫?yīng)報(bào)文的傳輸長(zhǎng)度未知,要么已知。

      4. 分塊傳輸?shù)木幋a規(guī)則:

        1. 每個(gè)分塊包含兩個(gè)部分,長(zhǎng)度頭和數(shù)據(jù)塊;

        2. 長(zhǎng)度頭是以 CRLF(回車(chē)換行,即\r\n)結(jié)尾的一行明文,用 16 進(jìn)制數(shù)字表示長(zhǎng)度;

        3. 數(shù)據(jù)塊緊跟在長(zhǎng)度頭后,最后也用 CRLF 結(jié)尾,但數(shù)據(jù)不包含 CRLF;

        4. 最后用一個(gè)長(zhǎng)度為 0 的塊表示結(jié)束,即“0\r\n\r\n”。

      范圍請(qǐng)求

      1. 范圍請(qǐng)求(range request):允許客戶端再請(qǐng)求頭里面是有專(zhuān)用字段來(lái)表示只獲取文件的一部分,相當(dāng)于客戶端的“化整為零”。

      2. 服務(wù)器在響應(yīng)頭使用“Accept-Ranges:bytes” 明確告知客戶端,支持范圍請(qǐng)求,但是非必須。

      3. 發(fā)送 “Accept-Ranges:none” 或不發(fā)送“Accept-Ranges:bytes” ,表示服務(wù)器不支持范圍請(qǐng)求功能。

      4. 格式:“Accept-Ranges:bytes=x-y”

        • x,y表示偏移量,從0開(kāi)始計(jì)數(shù),單位是字節(jié)
        • x或y可以省略,“0-”表示文檔起點(diǎn)到終點(diǎn);“10-”表示從第10個(gè)字節(jié)開(kāi)始到文檔末尾;“-1”表示文檔最后一個(gè)字節(jié);“-10”表示文檔末尾的10個(gè)字節(jié)。
      5. 服務(wù)器收到Range 字段后要做四件事情

        1. 檢查范圍是否合法,如果范圍越界,返回狀態(tài)碼“416”,表示“請(qǐng)求范圍有誤,服務(wù)器無(wú)法處理,請(qǐng)?jiān)贆z查一下”
        2. 范圍正確,服務(wù)器根據(jù)Range頭計(jì)算偏移量,讀取文件的片段,返回狀態(tài)碼“206 Partial Content”,表示body是原數(shù)據(jù)一部分。
        3. 服務(wù)器添加一個(gè)響應(yīng)頭字段“Content-Range”,告訴片段的實(shí)際偏移量和資源大小,格式“bytes x-y/length”,與Range 頭的區(qū)別是沒(méi)有“=”,范圍長(zhǎng)度后面多了總長(zhǎng)度。
        4. 發(fā)送數(shù)據(jù),直接把片段用TCP發(fā)給客戶端,一個(gè)范圍請(qǐng)求就處理完成。

      多段數(shù)據(jù)

      1. 范圍請(qǐng)求支持一次只獲取一個(gè)片段,也支持一次性獲取多個(gè)片段數(shù)據(jù)
        2.多個(gè)片段用特殊的MIME 類(lèi)型:“multipart/byteranges”表示,代表報(bào)文的body 是多段字節(jié)序列組成,加參數(shù)“boundary=xxx”給出段之間的分隔標(biāo)記。
      2. 舉例
        • 請(qǐng)求:
      GET /16-2 HTTP/1.1
      Host: www.chrono.com
      Range: bytes=0-9, 20-29
      
      • 響應(yīng):
      HTTP/1.1 206 Partial Content
      Content-Type: multipart/byteranges; boundary=00000000001
      Content-Length: 189
      Connection: keep-alive
      Accept-Ranges: bytes
      
      
      --00000000001
      Content-Type: text/plain
      Content-Range: bytes 0-9/96
      
      // this is
      --00000000001
      Content-Type: text/plain
      Content-Range: bytes 20-29/96
      
      ext json d
      --00000000001--
      
      posted @ 2021-05-17 22:58  hqq的進(jìn)階日記  閱讀(771)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 婷婷成人丁香五月综合激情| 国产超级va在线观看视频| 亚洲 一区二区 在线| 国产桃色在线成免费视频| 3d无码纯肉动漫在线观看| 日产国产精品亚洲系列| 高清无码18| 日韩av一区二区三区在线| 国产老女人免费观看黄A∨片| 元阳县| 国产玖玖玖玖精品电影| 久久夜色精品国产亚洲av| 国产麻豆精品久久一二三| 狠狠亚洲色一日本高清色| 你懂的在线视频一区二区| 国产精品第一页一区二区| 伊人无码精品久久一区二区| 99riav国产精品视频| 欧美人禽zozo动人物杂交| 国产成人AV国语在线观看| 国产精品久久久久久妇女| 伊人久久大香线蕉av色婷婷色| 在国产线视频A在线视频| 欧美丰满熟妇乱XXXXX网站| 在国产线视频A在线视频| 日韩精品一区二区三区在线观看| 久久天天躁夜夜躁狠狠躁2022| 玩弄放荡人妻少妇系列| 国产99视频精品免费专区| 97一期涩涩97片久久久久久久| 国产精品福利在线观看无码卡一| 成熟丰满熟妇av无码区| 亚洲国产aⅴ成人精品无吗| 国产精品福利自产拍久久| 中文 在线 日韩 亚洲 欧美| 永久天堂网 av手机版| 97久久精品人人澡人人爽| 国产午夜精品福利免费看| 饥渴少妇高潮正在播放| 亚洲中文字幕无码中字| 高清无码爆乳潮喷在线观看|