前言
之前一直感覺斷點續(xù)傳比較神秘,于是想去一探究竟,不知從何入手,以為就寫寫邏輯就行,結(jié)果搜索一番,還得了解相關(guān)http協(xié)議知識,又花了許久功夫去看http協(xié)議中有關(guān)斷點續(xù)傳知識,有時候發(fā)覺東西只有當你用到再去看相關(guān)內(nèi)容時才會掌握的更加牢固,理解的更加透徹吧,下面我們首先來補補關(guān)于http協(xié)議中斷點續(xù)傳的知識。
http協(xié)議知識惡補
當請求一個html頁面時我們會看到請求頁面如下:
第一眼看到上面Accept中的參數(shù)時我是懵逼的,之前也就看看緩存cookie等常見的頭信息,于是借此機會也學(xué)習(xí)下這部分內(nèi)容。
我們知道Accept是指客戶端允許請求返回的內(nèi)容類型,那為何這里面參數(shù)有如此之多呢?在學(xué)習(xí)WebAPi時,我們在服務(wù)端未進行過濾時既可以返回xml,也可以返回json,此時如上圖一樣,text/html未匹配上,接著匹配xml類型,匹配后則進行相應(yīng)格式內(nèi)容返回,所以客戶端接受如此多類型內(nèi)容,也是為了服務(wù)端那邊未設(shè)置特定內(nèi)容響應(yīng),此時則根據(jù)客戶端設(shè)置的內(nèi)容進行最合適的匹配。
那么問題來了,上面的q是啥玩意?
q(quality)
上面給出了客戶端能夠接受響應(yīng)的內(nèi)容類型,自然就有最合適的匹配,此時就用到了q這個參數(shù),在此我將q翻譯為quality即權(quán)重的意思,應(yīng)該是比較合適的,它用來表示我們期待接受內(nèi)容偏愛的程度即所占的權(quán)重。它的范圍是0-1,其默認值為1,這就類似質(zhì)檢部門對產(chǎn)品合格判斷的一種介質(zhì)。例如當我們需要返回視頻資源時,我們客戶端設(shè)置為如下:
Accept: audio/*; q=0.2, audio/basic
此時我們將上述翻譯如下:
audio/basic; q=1 audio/*; q=0.2
我們更加期待返回的是audio/basic類型的資源,因為其權(quán)重為1大于audio/*類型的資源,若為匹配到則繼續(xù)匹配下一個資源,audio/*則表示屬于audio類型的所有子類型資源。
接下來,我們再來看一個例子:
Accept: text/plain; q=