网络:http请求之几种常见技术
無(wú)狀態(tài)
由于http是一種無(wú)狀態(tài)的協(xié)議,因此無(wú)論是客戶(hù)端還是服務(wù)器都不記錄http的相關(guān)信息。
這樣設(shè)計(jì)一方面減輕了服務(wù)器端的負(fù)載,另一方面減小了http請(qǐng)求的開(kāi)銷(xiāo)。
但是針對(duì)某些特殊的場(chǎng)景,需要時(shí)刻記錄用戶(hù)的相關(guān)信息,這該如何處理呢?
Cookie恰好可以解決這個(gè)問(wèn)題,Cookie的運(yùn)行機(jī)制如下:
Cookie是一種由服務(wù)器端確定,并保存在客戶(hù)端瀏覽器中的內(nèi)容。這樣,就不需要每次都添加用戶(hù)的相關(guān)信息,請(qǐng)求會(huì)自動(dòng)添加cookie中對(duì)應(yīng)的內(nèi)容。
?
持久化
正常在發(fā)送http時(shí),都需要建立TCP的連接,再發(fā)送報(bào)文。
如果每次想要發(fā)送http報(bào)文都需要經(jīng)過(guò)這個(gè)過(guò)程,那么時(shí)間大部分都會(huì)消耗在建立和斷開(kāi)連接的過(guò)程中。
因此http中使用了connection屬性(指的是報(bào)文首部中的connection),用于指定連接的方式。
當(dāng)設(shè)置成keep-alive(connection : keep-alived),就會(huì)建立一條持久化的連接。
不需要每次都建立連接,再中斷。
在HTTP1.0的時(shí)候需要手動(dòng)設(shè)置connection屬性,在HTTP1.1時(shí)默認(rèn)都是長(zhǎng)連接
?
管道化
如果一個(gè)http請(qǐng)求,請(qǐng)求了大量的圖片等大文件,那么其他的http請(qǐng)求怎么辦呢?
不用怕,http可以一次發(fā)送多個(gè)http請(qǐng)求,然后等待響應(yīng)連接。不需要排隊(duì)等候,這樣就加快了http的響應(yīng)時(shí)間。
內(nèi)容編碼
由于某些報(bào)文的內(nèi)容過(guò)大,因此在傳輸時(shí),為了減少傳輸?shù)臅r(shí)間,會(huì)采取一些壓縮的措施。
例如上面的報(bào)文信息中,Accept-Encoding就定義了內(nèi)容編碼的格式:gzip
有下面幾種方式:
gzip:GNU壓縮格式
compress:UNIX系統(tǒng)的標(biāo)準(zhǔn)壓縮格式
deflate:是一種同時(shí)使用了LZ77和哈弗曼編碼的無(wú)損壓縮格式
identity:不進(jìn)行壓縮
多部分對(duì)象集合(多類(lèi)型混雜內(nèi)容的打包發(fā)送)
有的時(shí)候傳輸?shù)膬?nèi)容,不僅僅是一些字符串,還有可能是一些圖片,字符,音樂(lè)二進(jìn)制等混雜的內(nèi)容。
這就需要使用多部分對(duì)象集合,multipart,例如在使用java編寫(xiě)web上傳文件的代碼時(shí),需要在form中指定form的編碼格式。
設(shè)置form的enctype屬性的值為multipart/form-data。
這是因?yàn)槟J(rèn)的情況下form使用的編碼格式是:applicatin/x-www-form-urlencoded,這種編碼格式會(huì)把所有的內(nèi)容進(jìn)行編碼,不適合上傳文件這種情況。
這兩種編碼格式的區(qū)別主要是:
multipart/form-data 會(huì)以控件為基準(zhǔn),編碼form中的內(nèi)容。
application/x-www-form-urlencoded 會(huì)把form中的內(nèi)容編碼成鍵值對(duì)的形式。
范圍請(qǐng)求(例如網(wǎng)站圖片一點(diǎn)一點(diǎn)加載進(jìn)來(lái))
有些場(chǎng)景下,http報(bào)文請(qǐng)求一些很大的圖片,但是加載過(guò)程很慢。
比如我們登錄一些大圖片的網(wǎng)址,會(huì)發(fā)現(xiàn)有時(shí)候圖片是一塊一塊加載的。
這就是因?yàn)?strong>設(shè)置了http請(qǐng)求的長(zhǎng)度,這樣就可以分塊的加載資源文件。
在請(qǐng)求報(bào)文中使用Range屬性,在響應(yīng)報(bào)文中使用Content-Type屬性都可以指定一定字節(jié)范圍的http請(qǐng)求。
?
總結(jié)
以上是生活随笔為你收集整理的网络:http请求之几种常见技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网络:HTTP的请求方法
- 下一篇: 网络:TCP协议