當(dāng)我們輸入U(xiǎn)RI浑槽,按下回車發(fā)生了什么蒋失?

當(dāng)我們輸入U(xiǎn)RL,按下回車發(fā)生了什么桐玻? 這個(gè)題目很俗套- -但是是面試經(jīng)常出現(xiàn)的題目了篙挽。今天聽尼古拉斯?屌?大斌哥介紹關(guān)于從URI到瀏覽器呈現(xiàn)給我們頁(yè)面發(fā)生了什么。感覺收獲頗多畸冲。索性就翻閱了一些其他資料嫉髓。在此總結(jié)下观腊。這一晚上也算是沒白白浪費(fèi)邑闲。

當(dāng)我們輸入U(xiǎn)RL,發(fā)生了什么梧油?

用一個(gè)例子來(lái)說(shuō)明把苫耸。當(dāng)我們打開https://datura900607.github.io/home-automation/ 這個(gè)網(wǎng)頁(yè)的時(shí)候發(fā)生了什么?

通過(guò)URI定位到主機(jī)儡陨。

當(dāng)我們?cè)跒g覽器輸入url后褪子,瀏覽器通過(guò)DNS服務(wù)器量淌,將網(wǎng)站中的URl中的主機(jī)域名解析為,web服務(wù)器中所對(duì)應(yīng)的IP地址嫌褪。順序差不多是:

  • 先在瀏覽器緩存中查詢呀枢,如果瀏覽器緩存中有就直接使用。
  • 瀏覽器緩存中找不到 在系統(tǒng)緩存中查詢笼痛。
  • 系統(tǒng)緩存中沒有在路由器緩存中查詢裙秋。
  • 路由器找不到在web服務(wù)器中查詢,直到找到這個(gè)IP地址缨伊。
打包HTTP請(qǐng)求

好了,經(jīng)過(guò)一番查詢摘刑,我們找到了我家居網(wǎng)站的IP地址:151.101.100.133:443 這是我們打包的HTTP請(qǐng)求:


通過(guò)TCP協(xié)議,向服務(wù)器發(fā)送請(qǐng)求

通過(guò)TCP協(xié)議與Web服務(wù)器創(chuàng)建連接刻坊。(俗稱三次握手)枷恕,向服務(wù)器發(fā)送請(qǐng)求

web服務(wù)器接收請(qǐng)求,交給相關(guān)進(jìn)程處理

這里要根據(jù)后臺(tái)語(yǔ)言不同而分情況處理谭胚,我這個(gè)是HTML類型文件徐块。web服務(wù)器接收請(qǐng)求后 找到服務(wù)器上相對(duì)應(yīng)的html文件(一般是index.html)
如果后臺(tái)語(yǔ)言是PHP類型,則web服務(wù)器在接收到用戶的請(qǐng)求后將請(qǐng)求轉(zhuǎn)交給PHP應(yīng)用服務(wù)器來(lái)處理灾而,(web服務(wù)器本身不能處理PHP動(dòng)態(tài)語(yǔ)言文件)

服務(wù)器響應(yīng)請(qǐng)求蛹锰,通過(guò)TCP協(xié)議回傳響應(yīng)

這里因?yàn)榇思揖泳W(wǎng)站就是一個(gè)靜態(tài)HTML。就直接找到HTML文件就會(huì)通過(guò)TCP協(xié)議回傳了绰疤。如果是php文件铜犬。則還需要PHP應(yīng)用服務(wù)器將PHP文件,翻譯成HTML靜態(tài)代碼轻庆,傳回Web服務(wù)器癣猾,然后再通過(guò)TCP協(xié)議回傳響應(yīng)。這是回傳的響應(yīng)head截圖

瀏覽器接收響應(yīng)余爆,開始下載并渲染纷宇,將頁(yè)面呈現(xiàn)在我們面前
  1. 解析HTML生成DOM樹,
  2. 解析CSS文件生成CSSOM樹蛾方,并解析Javascript代碼
  3. CSS和DOM組合形成渲染樹像捶,
  4. 進(jìn)行布局,在瀏覽器中繪制渲染樹中節(jié)點(diǎn)的屬性(位置桩砰,寬度拓春,大小等)
  5. 繪制元素,繪制各個(gè)節(jié)點(diǎn)的可視屬性(顏色背景等亚隅,此時(shí)可能會(huì)形成多個(gè)圖層)
  6. 合并圖層硼莽,將頁(yè)面呈現(xiàn)給用戶面前
額外提一點(diǎn)

在服務(wù)器接收響應(yīng)請(qǐng)求的時(shí)候,會(huì)因?yàn)橐恍┎煌囊蛩爻尸F(xiàn)出不同的頁(yè)面主要是:
影響服務(wù)器結(jié)果的因素

  • 請(qǐng)求方式(例:get煮纵、post當(dāng)然請(qǐng)求方式不止這兩種懂鸵。)的不同
  • 路徑的不同:(url不同服務(wù)器結(jié)果當(dāng)然不同F荨!)
  • query string 傳參的不同
  • cookie ————用于用戶身份識(shí)別的
  • 服務(wù)器自身的配置
  • 后臺(tái)語(yǔ)言的邏輯(java和php)
    狀態(tài)碼
    狀態(tài)碼常見的大致可分為以下幾種:
    200 (正常OK)
    304 (請(qǐng)求的網(wǎng)頁(yè)與上次比沒有更新)刷新的時(shí)候出現(xiàn)
    301 (重定向)換域名
    403 (配置服務(wù)器沒權(quán)限)
    404 (沒找到文件(找到了服務(wù)器))
    500 (沒找到服務(wù)器)
    關(guān)于瀏覽器渲染頁(yè)面的一些細(xì)節(jié)
    JS加載阻塞的原因
    JS加載阻塞主要是因?yàn)闉g覽器需要一個(gè)穩(wěn)定的DOM樹匆光,而JS本質(zhì)就是操作DOM元素套像,就很有可能改變DOM樹的機(jī)構(gòu),為了防止出現(xiàn)修改DOM樹的情況后重鑄DOM樹的情況终息,先等JS下載并解析完之后 再渲染DOM樹
    CSS與JS一般情況下的放置位置
    一般來(lái)說(shuō)css放置在Head凉夯,JS放置在底部主要原因有:
    上面提過(guò)到JS的加載阻塞
    因?yàn)镠TML的下載和解析是從上到下的順序解析的,如果CSS不都放在HEAD里面采幌,有的放前面后的放后面就會(huì)造成 放在前面的CSS元素渲染一次之后劲够,后面如果出現(xiàn)重復(fù)(這里涉及到一個(gè)優(yōu)先級(jí),假設(shè)優(yōu)先級(jí)一致)后面的CSS樣式也會(huì)重新覆蓋前面的樣式休傍,再講前元素再渲染一邊(包括已經(jīng)渲染過(guò)的) 就會(huì)造成重復(fù)渲染征绎。而全放在HEAD里面 CSS文件會(huì)先合并,只會(huì)形成CSSDOM磨取,進(jìn)行渲染人柿。從性能和用戶體驗(yàn)來(lái)看 一般CSS放置在HEAD,JS放置在底部
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忙厌,一起剝皮案震驚了整個(gè)濱河市凫岖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逢净,老刑警劉巖哥放,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爹土,居然都是意外死亡甥雕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門胀茵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)社露,“玉大人,你說(shuō)我怎么就攤上這事琼娘∏偷埽” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵脱拼,是天一觀的道長(zhǎng)瞒瘸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)挪拟,這世上最難降的妖魔是什么挨务? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任击你,我火速辦了婚禮玉组,結(jié)果婚禮上谎柄,老公的妹妹穿的比我還像新娘。我一直安慰自己惯雳,他們只是感情好朝巫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著石景,像睡著了一般劈猿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潮孽,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天揪荣,我揣著相機(jī)與錄音,去河邊找鬼往史。 笑死仗颈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的椎例。 我是一名探鬼主播挨决,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼订歪!你這毒婦竟也來(lái)了脖祈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刷晋,失蹤者是張志新(化名)和其女友劉穎盖高,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眼虱,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡或舞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒙幻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片映凳。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邮破,靈堂內(nèi)的尸體忽然破棺而出诈豌,到底是詐尸還是另有隱情,我是刑警寧澤抒和,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布矫渔,位于F島的核電站,受9級(jí)特大地震影響摧莽,放射性物質(zhì)發(fā)生泄漏庙洼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望油够。 院中可真熱鬧蚁袭,春花似錦、人聲如沸石咬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鬼悠。三九已至删性,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間焕窝,已是汗流浹背蹬挺。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留它掂,地道東北人汗侵。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像群发,于是被迫代替她去往敵國(guó)和親晰韵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

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