從URL輸入到頁面展現(xiàn)發(fā)生了什么

1. 在瀏覽器輸入U(xiǎn)RL

  • URL(全稱:Uniform Resource Locator):統(tǒng)一資源定位符,用于定位互聯(lián)網(wǎng)上的資源,通俗的講相當(dāng)于我們?cè)跒g覽器中輸入的網(wǎng)頁地址
  • http、https、ftp、file協(xié)議
    • http協(xié)議(全稱:Hyper Text Transfer Protocol)超文本傳輸協(xié)議,是用于從萬維網(wǎng)(WWW:World Wide Web )服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議,http://jirengu.com/blog 就是http協(xié)議。
    • https協(xié)議相當(dāng)于將http協(xié)議加密過的協(xié)議,因?yàn)閔ttp協(xié)議應(yīng)用的是明碼,在某些情況下需要對(duì)此進(jìn)行加密,就產(chǎn)生了https協(xié)議, https://10.245.23.456:3000/users就是https協(xié)議。
    • file協(xié)議主要用于訪問本地計(jì)算機(jī)中的文件,就如同在Windows資源治理器中打開文件一樣。
    • ftp(全稱:File Transfer Protocol)協(xié)議,文件傳輸協(xié)議,是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,使用客戶服務(wù)器模式。

2. 域名解析

  • 域名是什么 對(duì)于 http://jirengu.com:8080/blog,jirengu.com就是域名;
  • IP地址是什么 每個(gè)處于互聯(lián)網(wǎng)中的設(shè)備都有IP地址,形如192.168.10.1;

1)瀏覽器緩存: 當(dāng)用戶通過瀏覽器訪問某域名時(shí),瀏覽器首先會(huì)在自己的緩存中查找是否有該域名對(duì)應(yīng)的IP地址(若曾經(jīng)訪問過該域名且沒有清空緩存便存在);
2)系統(tǒng)緩存:當(dāng)瀏覽器緩存中無域名對(duì)應(yīng)IP則會(huì)自動(dòng)檢查用戶計(jì)算機(jī)系統(tǒng)Hosts文件DNS緩存是否有該域名對(duì)應(yīng)IP;
3)路由器緩存:當(dāng)瀏覽器及系統(tǒng)緩存中均無域名對(duì)應(yīng)IP則進(jìn)入路由器緩存中檢查,以上三步均為客服端的DNS緩存;
4)ISP DNS緩存:當(dāng)在用戶客服端查找不到域名對(duì)應(yīng)IP地址,則將進(jìn)入ISP DNS緩存中進(jìn)行查詢。比如你用的是電信的網(wǎng)絡(luò),則會(huì)進(jìn)入電信的DNS緩存服務(wù)器中進(jìn)行查找;
5)如果都沒有找到,則向根域名服務(wù)器查找域名對(duì)應(yīng) IP,根域名服務(wù)器把請(qǐng)求轉(zhuǎn)發(fā)到下一級(jí),直到找到 IP

3. 服務(wù)器處理

  • 服務(wù)器是一臺(tái)安裝系統(tǒng)的機(jī)器,常見的系統(tǒng)如Linux、windows server 2012等,系統(tǒng)里安裝的處理請(qǐng)求的應(yīng)用叫 Web server(web服務(wù)器);
  • 常見的 web服務(wù)器有 Apache、Nginx、IIS、Lighttpdweb;
  • 服務(wù)器接收用戶的Request 交給網(wǎng)站代碼,或者接受請(qǐng)求反向代理到其他 web服務(wù)器;
image.png

4. 網(wǎng)站處理流程

  • MVC 模型(model)-視圖(view)-控制器(controller)
    • 視圖(View):用戶界面
    • 控制器(Controller):業(yè)務(wù)邏輯
    • 模型(Model):數(shù)據(jù)保存
image.png
  1. 訪問網(wǎng)站 /users,Rails(一種后臺(tái)語言)匹配對(duì)應(yīng)的路由找到/users;
  2. 將/users交給自己的控制器;
  3. 從模型里面查找user.all(所有的用戶);
  4. 模型到數(shù)據(jù)庫里面去查找;
  5. 查完之后將數(shù)據(jù)返還給控制器;
  6. 控制器就得到了所有用戶的數(shù)據(jù),將這些數(shù)據(jù)交給視圖,視圖相當(dāng)于一個(gè)模板,模板將這些數(shù)據(jù)組合成一個(gè)html;
  7. 將組合好的html再返還給控制器;
  8. 控制器將組合好的html發(fā)回給瀏覽器;

5. 瀏覽器處理

  • HTML字符串被瀏覽器接受后被一句句讀取解析
  • 解析到link或者h(yuǎn)erf 標(biāo)簽后重新發(fā)送請(qǐng)求獲取css
  • 解析到 script標(biāo)簽后發(fā)送請(qǐng)求獲取 js,并執(zhí)行代碼
  • 解析到img 標(biāo)簽后發(fā)送請(qǐng)求獲取圖片資源

6. 繪制網(wǎng)頁

  • 瀏覽器根據(jù) HTML 和 CSS 計(jì)算得到渲染樹,繪制到屏幕上
  • js 會(huì)被執(zhí)行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容