无状态的HTTP协议
無(wú)狀態(tài)的HTTP協(xié)議,使用cookie、session等機(jī)制實(shí)現(xiàn)有狀態(tài)的的web。
無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶功能,對(duì)同一個(gè)url請(qǐng)求沒(méi)有上下文關(guān)系,每次的請(qǐng)求都是獨(dú)立的,服務(wù)器中沒(méi)有保存客戶(hù)端的狀態(tài)。
HTTP協(xié)議長(zhǎng)連接、短連接實(shí)質(zhì)上是TCP協(xié)議的長(zhǎng)連接、短連接。
長(zhǎng)連接省去了較多的TCP建立、關(guān)閉操作,減少了浪費(fèi),節(jié)約時(shí)間;
短連接對(duì)于服務(wù)器來(lái)說(shuō)管理較為簡(jiǎn)單,存在的連接都是有用的連接,不需要額外的控制手段。
具體的應(yīng)用場(chǎng)景采用具體的策略,沒(méi)有十全十美的選擇,只有合適的選擇。
那為什么HTTP協(xié)議會(huì)被設(shè)計(jì)成無(wú)狀態(tài)的呢?
HTTP最初設(shè)計(jì)成無(wú)狀態(tài)的是因?yàn)橹皇怯脕?lái)瀏覽靜態(tài)文件的,無(wú)狀態(tài)協(xié)議已經(jīng)足夠,也沒(méi)什么其他的負(fù)擔(dān)。隨著web的發(fā)展,它需要變得有狀態(tài),但是不是就要修改http協(xié)議使之有狀態(tài)呢?是不需要的。因?yàn)槲覀兘?jīng)常長(zhǎng)時(shí)間逗留在某一個(gè)網(wǎng)頁(yè),然后才進(jìn)入到另一個(gè)網(wǎng)頁(yè),如果在這兩個(gè)頁(yè)面之間維持狀態(tài),代價(jià)是很高的。其次,歷史讓http無(wú)狀態(tài),但是現(xiàn)在對(duì)http提出了新的要求,按照軟件領(lǐng)域的通常做法是,保留歷史經(jīng)驗(yàn),在http協(xié)議上再加上一層實(shí)現(xiàn)我們的目的。所以引入了cookie、session等機(jī)制來(lái)實(shí)現(xiàn)這種有狀態(tài)的連接。
總結(jié)
以上是生活随笔為你收集整理的无状态的HTTP协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 什么原因可能导致主备延迟?
- 下一篇: Happens-Before的7个规则