輸入URL位址到最終頁面渲染完成,發生了什麼事

2022-06-21 14:06:12 字數 3247 閱讀 7717

1.url輸入回車

2.dns解析 -> 解析什麼?變成什麼

url          相對伺服器的ip位址

**伺服器的ip位址

3.瀏覽器網路向相應伺服器傳送tcp/ip連線請求   

三次握手

4.建立tcp/ip連線

5.瀏覽器網路發起http請求

6.等待 響應過程 wariting

8.解析html

四次揮手

10.時間線

11.呈現頁面

1. 網域名稱dns解析

- 瀏覽器dns快取

- 系統dns快取

- 路由器dns快取

- 網路運營商dns快取

- 遞迴搜尋......

2. tcp連線: tcp三次握手

- 第一次握手,由瀏覽器發起,告訴伺服器我要傳送請求了

- 第二握手,由伺服器發起,告訴瀏覽器我準備接受了,你趕緊傳送吧

- 第三次握手,由瀏覽器傳送,告訴伺服器,我馬上就發了,準備接受吧

3. 傳送請求

- 請求報文:http協議的通訊內容

4. 接受響應

- 響應報文

5. 渲染頁面

(1.解析html內容 產生dom樹 2. 解析css產生css rule tree 3.dom和cssom合併後的render tree 4.瀏覽器計算layout 開始渲染)

http 常見的狀態碼

400的錯誤是由於傳送請求引數沒有成功

原因:引數名稱型別沒有對上;或者引數格式不正確

204  代表響應報文中包含若干首部和乙個狀態行,但是沒有實體的主體內容 (沒有body內容)

400  前後端json物件中的屬性名與後端接收請求的實體類的屬性名不對應 (前後端資料傳遞沒對應上)。請求報文存在語法錯誤

401  傳送的請求需要有通過http認證的資訊

403   表示對請求資源的訪問被伺服器拒絕,可在實體主體部分返回原因描述

200: '伺服器成功返回請求的資料。',

201: '新建或修改資料成功。',

202: '乙個請求已經進入後台排隊(非同步任務)。',

204: '刪除資料成功。',

400: '發出的請求有錯誤,伺服器沒有進行新建或修改資料的操作。',

401: '使用者沒有許可權(令牌、使用者名稱、密碼錯誤)。',

403: '使用者得到授權,但是訪問是被禁止的。',

404: '發出的請求針對的是不存在的記錄,伺服器沒有進行操作。',

406: '請求的格式不可得。',

410: '請求的資源被永久刪除,且不會再得到的。',

422: '當建立乙個物件時,發生乙個驗證錯誤。',

500: '伺服器發生錯誤,請檢查伺服器。',

501:伺服器不支援當前請求所需要的某個功能

502: '閘道器錯誤。',

503: '服務不可用,暫時處於超負載或正在停機維護,無法處理請求',

504: '閘道器超時。',

通用首部                     作用 (請求報文和響應報文都可能使用)

cache-control            控制快取的行為: no-cache(強制向伺服器再次驗證)   no-store(不做任何快取)       max-age=11111(資源可快取最大時間  秒)          

public (客戶端、**伺服器都可利用快取)   private (**伺服器不可用快取)

connection                瀏覽器想要優先使用的鏈結型別: keep-alive  close 開啟和關閉持久連線

date                         建立報文時間

pragma                     只用於請求報文,客戶端要求中間伺服器不返回快取的資源

via                           **伺服器相關資訊,沒經過乙個**伺服器就會新增相關資訊,用逗號分割

transfer-encoding     傳輸編碼方式: chunked分塊傳輸

upgeade                   要求客戶端使用的公升級協議,需配合connection:upgrade一起使用:websocket

warning                     快取相關問題的警告

請求首部                   作用(請求報文專用)

accept-encoding      能正確接收的字符集: unicode  gzip deflate

authorization            客戶端認證資訊:bearer dasfasfa123,一般存token 用

cookie                     傳送給伺服器的cookie資訊

expect                     期待伺服器的指定行為

host                       伺服器的網域名稱,用於區分單台伺服器多個網域名稱的虛擬主機,是http/1.1唯一必須包含的字段

user-agent             客戶端資訊

referer                    請求發起頁面的原始url

te                          傳輸編碼方式

ajax的open()方法有3個引數

1 method (get / post) 

2 url

3 boolean (預設是非同步 true)

當該boolean值為true時,伺服器請求是非同步進行的,也就是指令碼執行send方法後不等待伺服器的執行結果,而是繼續執行指令碼**

當該boolean值為false時,伺服器請求是同步進行的,也就是指令碼執行send方法後等待

預先載入

1.dns預取

2.資源預取

3.tcp preconnect

如何提高載入速度

1.合併請求:nginx模組,sprite雪碧圖

2.快取:from cache(memory disk),localstorage,本地快取策略,http頭(結合業務)

3.tcp網路連線優化,tcp調優,http/2,keep-alive

4.硬體:加大頻寬,使用cdn(物件儲存)

5.資源大小:gzip,webp,image壓縮,cookie體積

6.預載入:多個cdn網域名稱,dns預取,非同步讀取js

從輸入URL到頁面渲染

url請求過程 瀏覽器收到http響應 reference 前人栽樹,後人乘涼,以下為學習筆記。從輸入url到頁面展示,這中間發生了什麼?這是一道經典面試題,涉及到了網路 作業系統 web 等一系列的知識。當我們在位址列中輸入url並按下回車後,瀏覽器裡發生第一件事是觸發解除安裝事件,即 befor...

從輸入URL到頁面載入完的過程

乙個http請求的過程 dns lookup 先獲得url對應的ip位址 socket connect 瀏覽器和伺服器建立tcp連線 send request 傳送http請求 content download 伺服器傳送響應 如果下到物理層去講就有點耍流氓了,如果這些你還認可這幾個步驟的話,我們就...

從輸入url到頁面渲染出來過程

在瀏覽器輸入url後的訪問 url的組成協議 網域名稱 有時候也是ip,埠號 數字表示,若為http的預設值 80 可省略 路徑 以 字元區別路徑中的每乙個目錄名稱 查詢引數 get模式的窗體引數,以 字元為起點,每個引數以 隔開,再以 分開引數名稱與資料,通常以utf8的url編碼,避開字元衝突的...