基于HTTP的功能追加協(xié)議

基于HTTP的協(xié)議:

在建立 HTTP 標(biāo)準(zhǔn)規(guī)范時(shí)耐齐,制訂者主要想把 HTTP 當(dāng)作傳輸 HTML 文檔的協(xié)議。隨著時(shí)代的發(fā)展蒋情,Web 的用途更具多樣性埠况,比如演化成在線購物網(wǎng)站辕翰、SNS(Social Networking Service狈谊,社交網(wǎng)絡(luò)服務(wù))沟沙、企業(yè)或組織內(nèi)部的各種管理工具矛紫。

而這些網(wǎng)站所追求的功能可通過 Web 應(yīng)用和腳本程序?qū)崿F(xiàn)颊咬。即使這些功能已經(jīng)滿足需求贪染,在性能上卻未必最優(yōu)催享,這是因?yàn)?HTTP 協(xié)議上的限制以及自身性能有限因妙。

消除 HTTP 瓶頸的 SPDY:

Google 在 2010 年發(fā)布了 SPDY(取自 SPeeDY攀涵,發(fā)音同 speedy)洽沟,其開發(fā)目標(biāo)旨在解決 HTTP 的性能瓶頸,縮短 Web 頁面的加載時(shí)間50%)怒详。

SPDY - The Chromium Projects? ?http://www.chromium.org/spdy/

HTTP的瓶頸

一條連接上只可發(fā)送一個(gè)請(qǐng)求踪区。

請(qǐng)求只能從客戶端開始缎岗〈矗客戶端不可以接收除響應(yīng)以外的指令。

請(qǐng)求 / 響應(yīng)首部未經(jīng)壓縮就發(fā)送拦盹。首部信息越多延遲越大掌敬。

發(fā)送冗長的首部。每次互相發(fā)送相同的首部造成的浪費(fèi)較多楷兽。

可任意選擇數(shù)據(jù)壓縮格式华临。非強(qiáng)制壓縮發(fā)送。

Ajax(Asynchronous JavaScript and XML揭厚, 異 步 JavaScript 與 XML 技術(shù))解決方法:

一種有效利用 JavaScript 和 DOM(Document Object Model筛圆,文檔對(duì)象模型)的操作太援,以達(dá)到局部 Web 頁面替換加載的異步通信手段扳碍。和以前的同步通信相比笋敞,由于它只更新一部分頁面,響應(yīng)中傳輸?shù)臄?shù)據(jù)量會(huì)因此而減少赛惩,這一優(yōu)點(diǎn)顯而易見坊秸。

Comet(彗星)的解決方法:

一旦服務(wù)器端有內(nèi)容更新了褒搔,Comet 不會(huì)讓請(qǐng)求等待喷面,而是直接給客戶端返回響應(yīng)惧辈。這是一種通過延遲應(yīng)答,模擬實(shí)現(xiàn)服務(wù)器端向客戶端推送(Server Push)的功能念逞。

陸續(xù)出現(xiàn)的 Ajax 和 Comet 等提高易用性的技術(shù)翎承,一定程度上使 HTTP得到了改善,但 HTTP 協(xié)議本身的限制也令人有些束手無策瘩例。為了進(jìn)行根本性的改善垛贤,需要有一些協(xié)議層面上的改動(dòng)趣倾。

SPDY 的設(shè)計(jì)與功能:

SPDY 沒有完全改寫 HTTP 協(xié)議儒恋,而是在 TCP/IP 的應(yīng)用層與運(yùn)輸層之間通過新加會(huì)話層的形式運(yùn)作。同時(shí),考慮到安全性問題箱锐,SPDY 規(guī)定通信中使用 SSL劳较。

SPDY 以會(huì)話層的形式加入观蜗,控制對(duì)數(shù)據(jù)的流動(dòng),但還是采用 HTTP建立通信連接抖仅。因此撤卢,可照常使用 HTTP 的 GET 和 POST 等方 法放吩、Cookie 以及 HTTP 報(bào)文等羽杰。

使用 SPDY 后,HTTP 協(xié)議額外獲得以下功能莉测。

多路復(fù)用流

通過單一的 TCP 連接集灌,可以無限制處理多個(gè) HTTP 請(qǐng)求欣喧。所有請(qǐng)求的處理都在一條 TCP 連接上完成,因此 TCP 的處理效率得到提高益涧。


備注:這個(gè)特性沒啥稀奇的闲询,http 1.1已經(jīng)有相關(guān)支持浅辙。忘了的同學(xué)翻我之前的第一節(jié)課視頻~

賦予請(qǐng)求優(yōu)先級(jí)

SPDY 不僅可以無限制地并發(fā)處理請(qǐng)求,還可以給請(qǐng)求逐個(gè)分配優(yōu)先級(jí)順序鸽捻。這樣主要是為了在發(fā)送多個(gè)請(qǐng)求時(shí)御蒲,解決因帶寬低而導(dǎo)致響應(yīng)變慢的問題厚满。

壓縮 HTTP 首部

壓縮 HTTP 請(qǐng)求和響應(yīng)的首部碘箍。這樣一來敲街,通信產(chǎn)生的數(shù)據(jù)包數(shù)量和發(fā)送的字節(jié)數(shù)就更少了严望。

注:HTTP本身也有壓縮功能像吻,只不過壓縮的是body,不是首部挽拂。忘了的翻我的第一節(jié)課~

更詳細(xì)的解釋:https://www.cnblogs.com/zhaow/p/9754161.html

推送功能

支持服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù)的功能骨饿。這樣宏赘,服務(wù)器可直接發(fā)送數(shù)據(jù)察署,而不必等待客戶端的請(qǐng)求贴汪。

注:這個(gè)功能HTTP 1.1木有,直到HTTP2业簿,原生HTTP才提供這個(gè)功能梅尤。

如果用過C#,用過ASP.NET MVC的同學(xué)還會(huì)指導(dǎo)誊辉,做這個(gè)事兒,還有個(gè)---SignalR堕澄。首選web socket通訊方式蛙紫,如果不支持,那就蛻化為長輪詢坑傅。

SignalR參考資料:

https://www.cnblogs.com/wintersun/p/4148223.html

https://www.cnblogs.com/Wddpct/p/5650015.html


SPDY并沒有被廣泛的使用起來~

使用瀏覽器進(jìn)行全雙工通信的WebSocket:

WebSocket 通信協(xié)議在 2011 年 12 月 11 日唁毒,被 RFC 6455 - The WebSocket Protocol 定為標(biāo)準(zhǔn)蒜茴。

WebSocket 的設(shè)計(jì)與功能

WebSocket,即 Web 瀏覽器與 Web 服務(wù)器之間全雙工通信標(biāo)準(zhǔn)浆西。其中粉私,WebSocket 協(xié)議由 IETF 定為標(biāo)準(zhǔn),WebSocket API 由 W3C 定為標(biāo)準(zhǔn)近零。仍在開發(fā)中的 WebSocket 技術(shù)主要是為了解決 Ajax 和 Comet

里 XMLHttpRequest 附帶的缺陷所引起的問題诺核。

WebSocket 協(xié)議:

一旦 Web 服務(wù)器與客戶端之間建立起 WebSocket 協(xié)議的通信連接,之后所有的通信都依靠這個(gè)專用協(xié)議進(jìn)行久信。通信過程中可互相發(fā)送JSON窖杀、XML、HTML 或圖片等任意格式的數(shù)據(jù)入篮。

一旦 Web 服務(wù)器與客戶端之間建立起 WebSocket 協(xié)議的通信連接潮售,之后所有的通信都依靠這個(gè)專用協(xié)議進(jìn)行鞍泉。通信過程中可互相發(fā)送JSON训枢、XML睦刃、HTML 或圖片等任意格式的數(shù)據(jù)。

HTTP輪詢與WebSocket通訊之間的對(duì)比

WebSocket協(xié)議的主要特點(diǎn)

推送功能

支持由服務(wù)器向客戶端推送數(shù)據(jù)的推送功能。這樣搓彻,服務(wù)器可直接發(fā)送數(shù)據(jù)骑篙,而不必等待客戶端的請(qǐng)求谎势。

減少通信量

只要建立起 WebSocket 連接台谍,就希望一直保持連接狀態(tài)。和 HTTP 相比,不但每次連接時(shí)的總開銷減少卒废,而且由于 WebSocket 的首部信息很小,通信量也相應(yīng)減少了。

為了實(shí)現(xiàn) WebSocket 通信辰企,在 HTTP 連接建立之后竹观,需要完成一次“握手”(Handshaking)的步驟。

握手·請(qǐng)求

為了實(shí)現(xiàn) WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字段,告知服務(wù)器通信協(xié)議發(fā)生改變,以達(dá)到握手的目的

Sec-WebSocket-Key 字段內(nèi)記錄著握手過程中必不可少的鍵值。

Sec-WebSocket-Protocol 字段內(nèi)記錄使用的子協(xié)議。

忘了這個(gè)首部關(guān)鍵字的同學(xué),還回去翻我的第一節(jié)課~

WebSocket API

JavaScript 可調(diào)用“The WebSocket API”(http://www.w3.org/TR/websockets/,由 W3C 標(biāo)準(zhǔn)制定)內(nèi)提供的 WebSocket 程序接口,以實(shí)現(xiàn) WebSocket 協(xié)議下全雙工通信。

以下為調(diào)用 WebSocket API,每 50ms 發(fā)送一次數(shù)據(jù)的實(shí)例杆查。

參考資料:

阮一峰關(guān)于WebSocket的帖子http://www.ruanyifeng.com/blog/2017/05/websocket.html

使用js檢測瀏覽器是否支持WebSocket:https://blog.csdn.net/jsyxiaoba/article/details/84025295


期盼已久的 HTTP/2.0:

...

參考資料:

《一文讀懂HTTP/2 及 HTTP/3特性》

https://mp.weixin.qq.com/s?__biz=MzA5NzkwNDk3MQ==&mid=2650589264&idx=1&sn=6ff446e3029c40eaabcff373c070e0f7&chksm=8891d874bfe6516261a18cdd029aa5e8730f0e955641ac7468f6bbae27e3b6acf8b4fb3813a3&mpshare=1&scene=2&srcid=&from=timeline&ascene=2&devicetype=android-25&version=2700033b&nettype=WIFI&abtest_cookie=BQABAAgACgALABIAEwAFAJ6GHgAklx4AWpkeAMCZHgDXmR4AAAA%3D&lang=zh_CN&pass_ticket=IlU3PwbZ3VoGOC0hdR97Rga0ryr1iA0FyCL4KUZfV7U1%2F1Y89d6hRUs7vwiuMVXi&wx_header=1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市备蚓,隨后出現(xiàn)的幾起案子购笆,更是在濱河造成了極大的恐慌同欠,老刑警劉巖襟锐,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莫杈,死亡現(xiàn)場離奇詭異筝闹,居然都是意外死亡艘儒,警方通過查閱死者的電腦和手機(jī)逾礁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門砾嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事高镐〖邓瑁” “怎么了婶溯?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我隶校,道長峦睡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任权埠,我火速辦了婚禮榨了,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攘蔽。我一直安慰自己龙屉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布满俗。 她就那樣靜靜地躺著转捕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唆垃。 梳的紋絲不亂的頭發(fā)上五芝,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音辕万,去河邊找鬼枢步。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渐尿,可吹牛的內(nèi)容都是我干的醉途。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砖茸,長吁一口氣:“原來是場噩夢啊……” “哼隘擎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凉夯,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤货葬,失蹤者是張志新(化名)和其女友劉穎采幌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體震桶,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡休傍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尼夺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炒瘸,死狀恐怖淤堵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顷扩,我是刑警寧澤拐邪,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站隘截,受9級(jí)特大地震影響扎阶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婶芭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一东臀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犀农,春花似錦惰赋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孟害,卻和暖如春拒炎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挨务。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工击你, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谎柄。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓果漾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谷誓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绒障,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.基于HTTP的協(xié)議 HTTP功能上的不足可通過一套全新的協(xié)議來彌補(bǔ)『赐幔可是當(dāng)前基于HTTP的Web瀏覽器的使用環(huán)...
    笙繩省盛閱讀 523評(píng)論 0 5
  • Google 在 2010 年發(fā)布了 SPDY(取自 SPeeDY户辱,發(fā)音同 speedy)鸵钝,其開發(fā)目標(biāo)旨在解決 H...
    牛軟糖閱讀 298評(píng)論 0 0
  • Web 頁面的實(shí)現(xiàn) Web 基于 HTTP 協(xié)議通信 客戶端(Client)的 Web 瀏覽器從 Web 服務(wù)器端...
    毛圈閱讀 1,083評(píng)論 0 2
  • 前面兩篇文章中關(guān)于 HTTP 相關(guān)知識(shí)基本上介紹的差不多了,這篇文章是對(duì) HTTP 協(xié)議的補(bǔ)充庐镐,主要介紹以下三點(diǎn)內(nèi)...
    lijiankun24閱讀 1,309評(píng)論 2 3
  • 1恩商、感恩我的座駕小紫帶著我一大早乳液哦想去的任何地方,謝謝必逆!謝謝畜普!謝謝糠涛! 2、感恩早上菜市場的攤主們供養(yǎng)給我們新鮮...
    向陽花開_bd33閱讀 172評(píng)論 0 0