說說從URL輸入到頁面展現(xiàn)的過程

前言

? ? ? ? 登錄網(wǎng)站佣耐,是我們每個人每天都會做的事。從打開瀏覽器采盒,在地址輸入框輸入URL旧乞,按下enter鍵回車,網(wǎng)站頁面就展示在我們面前磅氨。而這背后發(fā)生了什么尺栖,讓這個頁面得以展現(xiàn)在我們面前,是今天這篇博文想要說明的烦租。

? ? ? ? 其實這個知識點延赌,在大學的計算機導論課堂上也有過教授,通路是一時理解了叉橱,加上了解幾個概念也就算翻篇了挫以。這兩天在課上聽老師講這個主題的時候,順帶勾起大學課堂上的記憶窃祝,加上2016年工作上有接觸到項目的后臺開發(fā)工作掐松,在同事的幫助下使用MyBatis框架做了一些功能開發(fā),對MVC流程有了更實際地接觸和理解粪小,所以對這一主題大磺,更有動筆的興趣。

一探膊、URL是什么

? ? ? ? URL(Uniform Resource Locator)杠愧,統(tǒng)一資源定位符,實際就是網(wǎng)站網(wǎng)址逞壁,又稱域名流济。在茫茫網(wǎng)絡(luò)世界中,瀏覽器就是靠URL來查找資源位置猾担。URL包含協(xié)議部分,是瀏覽器和www萬維網(wǎng)之間的溝通方式刺下,它會告訴瀏覽器正確在網(wǎng)路上找到資源位置绑嘹。常見的協(xié)議有http、https橘茉、ftp工腋、file、telnet等畅卓。其中http是最常見的網(wǎng)絡(luò)傳輸協(xié)議擅腰,而https則是進行加密的網(wǎng)絡(luò)傳輸。

? ? ? ?IP的意義

? ? ? ?為了便于記憶或辨識翁潘,人們使用域名來登錄網(wǎng)站趁冈,每個域名背后有對應的IP地址。每個網(wǎng)站就是靠IP來定位的。IP是因特網(wǎng)中的每臺連接到網(wǎng)絡(luò)的計算機為實現(xiàn)相互通信而遵循的規(guī)則協(xié)議渗勘。IP分為局域網(wǎng)IP和全網(wǎng)IP沐绒。辦公中常用的飛秋工具,就是使用辦公室局域網(wǎng)IP進行通信的典型表現(xiàn)旺坠。每臺計算機的本機IP都是127.0.0.1(即localhost)乔遮。瀏覽器并不能識別URL是什么,因此從輸入URL開始取刃,瀏覽器就要做域名解析蹋肮,也就是IP尋址的工作。

二璧疗、IP尋址過程簡述

? ? ? ?這里先說明DNS概念

? ? ? ?DNS(Domain Name System坯辩,域名系統(tǒng))——記錄域名和IP地址相互映射的信息,人們可以免于記住IP數(shù)串病毡。全國DNS信息可在網(wǎng)上查找到濒翻,各省都有對應分配不同的IP網(wǎng)段。大型企業(yè)會有自己的DNS服務器啦膜,專門存儲域名和IP的映射關(guān)系有送,例如為大多數(shù)人熟知的谷歌DNS服務器,地址8.8.8.8僧家。

? ? ? ?DNS解析是瀏覽器的實際尋址方式雀摘。IP尋址過程復雜,涉及多層設(shè)備和概念知識八拱。在此阵赠,我只簡單記錄兩種使用情況下的DNS解析方式,以作了解肌稻。

? ? ? ?情況1:對于瀏覽器首次登陸或者相隔一段時間內(nèi)登陸某個網(wǎng)站

? ? ? (1)輸入URL地址后清蚀,瀏覽器會從電腦C盤的hosts文件查找是否有存儲DNS信息,查找是否有目標域名和對應的IP地址爹谭;

? ? ? (2)從路由器的緩存DNS信息中查找枷邪;

? ? ? (3)ISP DNS緩存查找,從網(wǎng)絡(luò)服務商(比如電信)的DNS緩存信息中查找诺凡;

? ? ? (4)經(jīng)由以上三種查找方法還沒查找到目標URL對應的IP的話东揣,就會向根域名DNS服務器查找目標URL的對應IP,根域名服務器會向下級服務器轉(zhuǎn)送請求腹泌,層層下發(fā)嘶卧,直至找到對應IP為止。

? ? ? ?情況2:對于近期內(nèi)有在瀏覽器登錄過的網(wǎng)站凉袱,本地瀏覽器會有DNS緩存芥吟,可以直接查找到IP地址。

? ? ? ?經(jīng)過以上IP尋址的過程,目標URL查找到對應的IP地址之后运沦,通過IP地址查找到對應的服務器泵额,瀏覽器將用戶發(fā)起的http請求發(fā)送給服務器。下一步就到了服務器處理階段的工作携添。

三嫁盲、服務器處理用戶請求

? ? ? ? 每臺服務器上都會安裝處理請求的應用——web server。常見的web server產(chǎn)品有apache烈掠、nginx羞秤、IIS或Lighttpd等。

? ? ? ?web server 擔任管控的角色左敌,對于不同用戶發(fā)送的請求瘾蛋,會結(jié)合配置文件,把不同請求委托給服務器上處理對應請求的程序進行處理(例如CGI腳本矫限,JSP腳本哺哼,servlets,ASP腳本叼风,服務器端JavaScript取董,或者一些其它的服務器端技術(shù)等),然后返回后臺程序處理產(chǎn)生的結(jié)果作為響應无宿。

? ? ? ? 服務器上程序處理用戶請求的這部分茵汰,就是下一步要講的網(wǎng)站處理階段的工作。

四孽鸡、網(wǎng)站處理階段

? ? ? 網(wǎng)站處理蹂午,就是實際后臺處理的工作。后臺開發(fā)現(xiàn)在有很多框架彬碱,但大部分都還是按照MVC設(shè)計模式進行搭建的豆胸。

? ? ? ?MVC是一個設(shè)計模式,將應用程序分成三個核心部件:模型(model)-- 視圖(view)--控制器(controller)巷疼,它們各自處理自己的任務晚胡,實現(xiàn)輸入、處理和輸出的分離皮迟。

? ? ? 1搬泥、視圖(view)

? ? ? 視圖是用戶看到并與之交互的界面桑寨。這是前端工作的主力部分伏尼。

? ? ? ?2、模型(model)

? ? ? ?模型是將實際開發(fā)中的業(yè)務規(guī)則和所涉及的數(shù)據(jù)格式模型化尉尾,應用于模型的代碼只需寫一次就可以被多個視圖重用爆阶。在MVC的三個部件中,模型擁有最多的處理任務。一個模型能為多個視圖提供數(shù)據(jù)辨图。

? ? ? ?3班套、控制器(controller)

? ? ? ?控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。Controller處于管理角色故河,從視圖接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求吱韭,然后再確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。


? ? ? ?總結(jié)而言鱼的,首先控制器接收用戶的請求理盆,并決定應該調(diào)用哪個模型來進行處理,然后模型用業(yè)務邏輯來處理用戶的請求并返回數(shù)據(jù)凑阶,最后控制器用相應的視圖格式化模型返回html字符串給瀏覽器猿规,瀏覽器呈現(xiàn)網(wǎng)頁給用戶。因此宙橱,下一步就來到瀏覽器處理階段姨俩。

五、瀏覽器處理

? ? ? ?通過后臺處理返回的html字符串結(jié)果會被瀏覽器讀取解析师郑,對應就是html頁面加載环葵、解析、渲染的工作呕乎。

? ? ? ?1积担、加載

? ? ? ?瀏覽器對一個html頁面的加載順序是從上而下的,并在加載過程并行進行解析渲染處理猬仁。在這個過程中遇到link標簽帝璧、image標簽、script標簽時湿刽,瀏覽器會再次向服務器發(fā)送請求獲取css文件的烁、圖片資源、js文件诈闺,并執(zhí)行js代碼渴庆,同步進行加載解析。

? ? ? ? 2雅镊、解析襟雷、渲染

? ? ? ? 解析的過程,其實就是生成解析樹仁烹,即dom樹耸弄。dom樹是由dom元素及屬性節(jié)點組成,加上css解析的樣式對象和js解析后的動作實現(xiàn)卓缰。而渲染计呈,就是將DOM樹進行可視化表示砰诵。下一步就來到了繪制網(wǎng)頁的工作階段。

六捌显、繪制網(wǎng)頁

? ? ? ?瀏覽器通過上面步驟計算得到渲染樹茁彭,是DOM樹的可視化表示,構(gòu)建渲染樹使頁面以正確的順序繪制出來扶歪,遵循一定的渲染規(guī)則理肺,經(jīng)過一系列的渲染工作,實現(xiàn)網(wǎng)站頁面的繪制善镰,由此最終完成了頁面展示哲嘲。

后記

? ? ? ?以上就是從URL輸入到頁面展示的全部過程。寫這篇文章的過程媳禁,在網(wǎng)上查閱了相關(guān)的資料眠副,就為了對過程中步驟的表述能夠準確。在查閱的過程竣稽,發(fā)現(xiàn)每個小點鋪開來講的話囱怕,都會牽扯出很多知識點要談。這篇文章毫别,只能是淺談中的淺談娃弓。學習無止境,新一年繼續(xù)努力岛宦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末台丛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖币喧,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侠坎,居然都是意外死亡,警方通過查閱死者的電腦和手機裙盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門实胸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人番官,你說我怎么就攤上這事庐完。” “怎么了徘熔?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵门躯,是天一觀的道長。 經(jīng)常有香客問我近顷,道長生音,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任窒升,我火速辦了婚禮缀遍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饱须。我一直安慰自己域醇,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布蓉媳。 她就那樣靜靜地躺著譬挚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酪呻。 梳的紋絲不亂的頭發(fā)上减宣,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音玩荠,去河邊找鬼漆腌。 笑死,一個胖子當著我的面吹牛阶冈,可吹牛的內(nèi)容都是我干的闷尿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼女坑,長吁一口氣:“原來是場噩夢啊……” “哼填具!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匆骗,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤劳景,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碉就,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枢泰,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年铝噩,在試婚紗的時候發(fā)現(xiàn)自己被綠了衡蚂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骏庸,死狀恐怖毛甲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情具被,我是刑警寧澤玻募,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站一姿,受9級特大地震影響七咧,放射性物質(zhì)發(fā)生泄漏跃惫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一艾栋、第九天 我趴在偏房一處隱蔽的房頂上張望爆存。 院中可真熱鬧,春花似錦蝗砾、人聲如沸先较。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闲勺。三九已至,卻和暖如春扣猫,著一層夾襖步出監(jiān)牢的瞬間菜循,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工申尤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留债朵,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓瀑凝,卻偏偏與公主長得像序芦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子粤咪,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

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