<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一本關(guān)于HTTP的戀愛日記

          共 2698字,需瀏覽 6分鐘

           ·

          2021-05-31 13:21

          1991年 8月

          我叫客戶端,英文名字 client。

          她叫服務(wù)端,英文名字 server。

          這一年,我們出生了。

          是的,我們都是90后。

          我愛她,可是她卻遠(yuǎn)在天邊。

          為了和她可以互訴衷腸,我同時(shí)發(fā)明了HTTP協(xié)議。

          一門世界上只有我和她能懂的語言,一種世界上只有我和她能懂的浪漫。

          雖然我只能給她發(fā)出GET操作,她也只能返回HTML文檔,但是已足夠了。

          當(dāng)我發(fā)出 GET /index.html時(shí) 她會(huì)返回

          <html>
            <body>Hello World</body>
          </html>

          可能在她看來,我也是她的全世界吧。

          我知道自己還不完美,所以給自己命名0.9版本,我期待未來自己也能變得更好。

          1996年 5月

          這是我的第二篇日記。

          原諒我很少寫日記,畢竟一位知名人物說過:"正常人誰寫日記啊?!"

          之前我只和她分享HTML,這已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足我了,現(xiàn)在我還想和她分享圖像、視頻、二進(jìn)制文件。

          另外,我也想要和她有更多的接觸,就像戀人除了牽手還想要擁抱接吻,我除了GET還想要POST,HEAD。

          再次,在我的強(qiáng)烈要求下,每次交流能不能給點(diǎn)提示,省得老是被吐槽不解風(fēng)情。所以,除了數(shù)據(jù)部分,每次通信加上了頭信息 ,大家都有個(gè)心理準(zhǔn)備這次要干嗎。

          比如在請求數(shù)據(jù)頭信息, Accept: */*會(huì)告訴她我能接受的數(shù)據(jù)類型,她若返回?cái)?shù)據(jù) Content-Type:image/jpeg我就知道她要分享自己的美照,Content-Type:video/mp4我就知道可以看到她美美的視頻。

          最后,唉,女孩子有時(shí)候真的是有點(diǎn)啰嗦的,所以我又在HTTP協(xié)議里加了 Content-Encoding,暗示她可以壓縮一下數(shù)據(jù)。

          比如 我會(huì)用 Accept-Encoding: gzip, deflate 來告訴她我能接受的壓縮類型,而Content-Encoding: gzip就是告訴我她的實(shí)際壓縮類型。

          可以看出來現(xiàn)在HTTP協(xié)議復(fù)雜了很多,但是我想說這是我們倆的特殊密碼,我愿意記錄下來,成為一份美好的回憶。

          另外一個(gè)很尷尬的問題就是,她覺得我不太久,每個(gè)Tcp鏈接只能發(fā)送一個(gè)請求,發(fā)送數(shù)據(jù)就關(guān)閉,這讓我很苦惱,所以有些瀏覽器在請求時(shí),用了一個(gè)非標(biāo)準(zhǔn)的Connection字段。

          Connection: keep-alive

          這樣她就知道,我這次時(shí)間真的長了,不要再輕易斷開鏈接。

          不過遺憾的是,這個(gè)并沒有納入標(biāo)準(zhǔn)。

          不管咋樣,我覺得HTTP這次改的也算像模像樣了,所以就命名1.0吧。

          有了這個(gè)里程碑,我和我的服務(wù)端之后交流可以更加豐富多彩了。

          畢竟異地戀,最重要的還是有效、豐富的溝通。

          1997年1月

          隨著我們深入了解,我覺得我更愛她了,所以愿意做更多的事情。

          作為男人最大的尊嚴(yán),我首先把Connection: keep-alive納入標(biāo)準(zhǔn),即沒有聲明默認(rèn)不關(guān)閉。

          其次,我已經(jīng)受不了我一問她一答這個(gè)模式,我想盡可能一次把我更多的愛意發(fā)出去,所以我引入管道機(jī)制,允許我同時(shí)發(fā)出多個(gè)請求,當(dāng)然她還是按照順序,先后回應(yīng)即可,最起碼我已經(jīng)做到位了。

          我的付出也是有回報(bào)的,server也很體貼的給我傳回來 Content-Length字段,好讓我方便知道她給了我多少數(shù)據(jù)。

          但是有時(shí)候她要說的話太多了,我真的不想等待太久她處理完了才有回應(yīng),所以除了Content-Length,我同時(shí)在HTTP增加了Transfer-Encoding字段 ,就表明回應(yīng)將由數(shù)量未定的數(shù)據(jù)塊組成。

          比如 每個(gè)非空的數(shù)據(jù)塊之前,會(huì)有一個(gè)16進(jìn)制的數(shù)值,表示這個(gè)塊的長度。最后是一個(gè)大小為0的塊,就表示本次回應(yīng)的數(shù)據(jù)發(fā)送完了。下面是一個(gè)例子。

          HTTP/1.1 200 OK
          Content-Type: text/plain
          Transfer-Encoding: chunked

          25
          This is the data in the first chunk

          1C
          and this is the second one

          3
          con

          8
          sequence

          0

          這樣,我就可以立馬收到她的回復(fù),真好。

          最后,除了GET POST 等操作,我還增加了PUT PATCH各種姿勢來和她溝通,你們懂的。

          雖然優(yōu)化了不少,但是作為男人要謙虛點(diǎn),所以我把版本命名為1.1。

          好的,就到這里吧,我會(huì)繼續(xù)努力的,為了她。

          2009年

          聽說谷歌公開了SPDY協(xié)議,還是用來解決我的 HTTP1.1 效率不高的問題?我不太開心,我還是喜歡我的HTTP協(xié)議。

          server還問我能不能也把HTTP也優(yōu)化優(yōu)化,無語,我通過我的HTTP已經(jīng)和她談了18年的戀愛了。

          就這樣吧,不想寫了,愛咋咋地。

          2015年 5月

          愛一個(gè)人,真的會(huì)讓自己變得優(yōu)秀啊。

          為了能和我的她走的更近,我還是狠狠地把HTTP優(yōu)化了下。

          雖然是在SPDY的協(xié)議基礎(chǔ)上,但是,不重要!

          大概主要幾點(diǎn)吧:

          1、HTTP/1.1版的頭信息肯定是文本(ASCII編碼),數(shù)據(jù)體可以是文本,也可以是二進(jìn)制,文本解析肯定不如二進(jìn)制啊,所以直接徹底點(diǎn),都變成二進(jìn)制了。

          這樣我們可以快速理解對方的訴求。

          2、之前說我這可以同時(shí)發(fā)出多個(gè)請求,server按照順序處理,但是我不想一個(gè)個(gè)接收她的回應(yīng),所以她也可以并發(fā)返回給我數(shù)據(jù)啦。

          3、戀愛越久,越怕對方說重復(fù)的話,所以除了數(shù)據(jù)體,我這次把頭信息也進(jìn)行了壓縮。一方面可以使用gzip/ compress 進(jìn)行壓縮,另外我和她同時(shí)維護(hù)一張頭信息表,所有字段都會(huì)存入這個(gè)表,生成一個(gè)索引號,以后就不發(fā)送同樣字段了,只發(fā)送索引號,這樣就提高速度了。

          4、這個(gè)是最重要的,服務(wù)端可以主動(dòng)給客戶端發(fā)送資源了,而不是我必須先發(fā)個(gè)請求。也就是當(dāng)我走了99步之后,剩下的一步終于是她向我走來。

          這次優(yōu)化太多了,我決定直接命名HTTP2.0,當(dāng)然之后還會(huì)有3.0,4.0。為了她,我愿意變得更加優(yōu)秀。

          結(jié)束語

          從前車馬很慢,書信很遠(yuǎn),一生只夠愛一個(gè)人。

          如今,HTTP可以讓你的愛意毫秒級傳達(dá)給對方,但是也更祝福大家像我一樣,得之所愛,一生被愛。

          您的關(guān)注、點(diǎn)贊、在看、分享真的是我創(chuàng)作的最大動(dòng)力!沒鬧!


          瀏覽 68
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费日韩亚洲电影黄色 | 国产一级片免费观看 | 国产精品久久久久久久久久久易记 | 人人爱人人摸人人舔 | 日韩Av无码一区二区三区不卡 |