16 | 把大象装进冰箱:HTTP传输大文件的方法
上次我們談到了 HTTP 報文里的 body,知道了 HTTP 可以傳輸很多種類的數(shù)據(jù),不僅是文本,也能傳輸圖片、音頻和視頻。
早期互聯(lián)網(wǎng)上傳輸?shù)幕旧隙际侵挥袔?K 大小的文本和小圖片,現(xiàn)在的情況則大有不同。網(wǎng)頁里包含的信息實在是太多了,隨隨便便一個主頁 HTML 就有可能上百 K,高質量的圖片都以 M 論,更不要說那些電影、電視劇了,幾 G、幾十 G 都有可能。
相比之下,100M 的光纖固網(wǎng)或者 4G 移動網(wǎng)絡在這些大文件的壓力下都變成了“小水管”,無論是上傳還是下載,都會把網(wǎng)絡傳輸鏈路擠的“滿滿當當”。
所以,如何在有限的帶寬下高效快捷地傳輸這些大文件就成了一個重要的課題。這就好比是已經(jīng)打開了冰箱門(建立連接),該怎么把大象(文件)塞進去再關上門(完成傳輸)呢?
今天我們就一起看看 HTTP 協(xié)議里有哪些手段能解決這個問題。
數(shù)據(jù)壓縮
還記得上一講中說到的“數(shù)據(jù)類型與編碼”嗎?如果你還有印象的話,肯定能夠想到一個最基本的解決方案,那就是“數(shù)據(jù)壓縮”,把大象變成小豬佩奇,再放進冰箱。
通常瀏覽器在發(fā)送請求時都會帶著“Accept-Encoding”頭字段,里面是瀏覽器支持的壓縮格式列表,例如 gzip、deflate、br 等,這樣服務器就可以從中選擇一種壓縮算法,放進“Content-Encoding”響應頭里,再把原數(shù)據(jù)壓縮后發(fā)給瀏覽器。
如果壓縮率能有 50%,也就是說 100K 的數(shù)據(jù)能夠壓縮成 50K 的大小,那么就相當于在帶寬不變的情況下網(wǎng)速提升了一倍,加速的
總結
以上是生活随笔為你收集整理的16 | 把大象装进冰箱:HTTP传输大文件的方法的全部內容,希望文章能夠幫你解決所遇到的問題。