從URL輸入到頁(yè)面展現(xiàn)
URL輸入 (瀏覽器發(fā)送請(qǐng)求)
URL:統(tǒng)一資源定為符(Uniform Resource Locator),用于定位資源岖研;包含內(nèi)容:協(xié)議卿操,域名,端口號(hào)等等孙援。
- 協(xié)議:http害淤,file,https拓售。
http://google.com.hk/ 定位位于web上的文件
file:///users/xxx/ 定位本地電腦上的文件
https://taobao.com/ http的安全版本窥摄,http是明文傳輸,https經(jīng)過(guò)了加密础淤。
//xxx/xxx/ 沒(méi)有明確標(biāo)明協(xié)議崭放,表示和當(dāng)前頁(yè)面所用協(xié)議相同哨苛。
域名解析
- 根據(jù)域名找到相應(yīng)的IP地址(域名是給人看的,瀏覽器看不懂域名的币砂,要找到IP地址才行)DNS(Domain Name System):網(wǎng)絡(luò)名稱(域名)系統(tǒng)移国,域名和IP對(duì)應(yīng),這樣計(jì)算機(jī)就找到IP了道伟。
- 域名:google.com
- 端口號(hào):80(http默認(rèn)80迹缀;8080給root用戶使用的)
- IP地址 公網(wǎng)IP和局域網(wǎng)IP是不同的。本機(jī)IP:127.0.0.1(調(diào)試手機(jī)時(shí)可以用這個(gè)測(cè)試)
域名解析過(guò)程
- 瀏覽器緩存DNS
- 本地緩存蜜徽,hosts文件祝懂;和DNS不同,可以自己修改hosts文件(可以本地調(diào)試拘鞋,127.0.0.1)砚蓬。
- 路由器緩存DNS
- ISP(Internet Service Provider)緩存DNS
- 如果都沒(méi)有找到的話,則向根域名服務(wù)器(全球有13臺(tái)邏輯服務(wù)器盆色,即根域名服務(wù)器只有13個(gè)IP灰蛙,中國(guó)有3臺(tái)鏡像)查找域名對(duì)應(yīng)IP,根域名服務(wù)器把請(qǐng)求轉(zhuǎn)發(fā)到下一級(jí)隔躲,直到找到IP摩梧。
服務(wù)器處理(服務(wù)器收到請(qǐng)求后)
服務(wù)器用來(lái)處理請(qǐng)求的應(yīng)用軟件(web server),常見的有:Apache宣旱、Nginx仅父、IIS、Lighttpd浑吟。
服務(wù)器處理流程(常說(shuō)的后端)
- MVC(model-view-controller):模型-視圖-控制器笙纤。
- 服務(wù)器應(yīng)用常用語(yǔ)言:php、java组力、ruby省容、python、node.js燎字。
- model是對(duì)數(shù)據(jù)庫(kù)的抽象腥椒。受到請(qǐng)求后,需要使用數(shù)據(jù)庫(kù)語(yǔ)言(sql語(yǔ)句)來(lái)操作數(shù)據(jù)庫(kù)獲得數(shù)據(jù)轩触,但是太麻煩了寞酿,于是抽象出model。
- view是HTML的模板脱柱,拿到數(shù)據(jù)后伐弹,將數(shù)據(jù)填充到HTML模板,得到HTML文件榨为。(常說(shuō)的前端) //惨好?常說(shuō)的各種前端框架好像也是類型的結(jié)構(gòu)啊煌茴。
- 處理完成后,返回請(qǐng)求和數(shù)據(jù)日川。
瀏覽器處理
- 收到服務(wù)器的返回請(qǐng)求后蔓腐,瀏覽器開始處理。
- HTML字符串倍瀏覽器接收后被一句一句讀取解析
- 解析到link標(biāo)簽后重新發(fā)送請(qǐng)求獲取css
- 解析到script標(biāo)簽后發(fā)送請(qǐng)求獲取js龄句,并執(zhí)行代碼
- 解析到img標(biāo)簽后發(fā)送請(qǐng)求獲取圖片資源
好多請(qǐng)求盎芈邸(可以減少嗎,如何減少)
繪制網(wǎng)頁(yè)
- 瀏覽器根據(jù)HTML和CSS計(jì)算得到渲染樹(好像是同時(shí)渲染的分歇,js改變DOM后傀蓉,還會(huì)進(jìn)行渲染,這就涉及到性能優(yōu)化了)职抡,繪制到屏幕上
- js會(huì)被執(zhí)行
想要搞清楚葬燎,先看看 圖解HTTP