從輸入url到頁面展示經歷了哪些過程

2021-10-06 15:19:21 字數 1884 閱讀 8886

使用者輸入url,瀏覽器會根據使用者輸入的資訊判斷是搜尋還是**,如果是搜尋內容,就將搜尋內容+預設搜尋引擎合成新的url;如果使用者輸入的內容符合url規則,瀏覽器就會根據url協議,在這段內容上加上協議合成合法的url

使用者輸入完內容,按下回車鍵,瀏覽器導航欄顯示loading狀態,但是頁面還是呈現前乙個頁面,這是因為新頁面的響應資料還沒有獲得

瀏覽器程序瀏覽器構建請求行資訊,會通過程序間通訊(ipc)將url請求傳送給網路程序

網路程序獲取到url,先去本地快取中查詢是否有快取檔案,如果有,攔截請求,直接200返回;否則,進入網路請求過程

網路程序請求dns返回網域名稱對應的ip和埠號,如果之前dns資料快取服務快取過當前網域名稱資訊,就會直接返回快取資訊;否則,發起請求獲取根據網域名稱解析出來的ip和埠號,如果沒有埠號,http預設80,https預設443。如果是https請求,還需要建立tls連線。

chrome 有個機制,同乙個網域名稱同時最多只能建立 6 個tcp 連線,如果在同乙個網域名稱下同時有 10 個請求發生,那麼其中 4 個請求會進入排隊等待狀態,直至進行中的請求完成。如果當前請求數量少於6個,會直接建立tcp連線。

tcp三次握手建立連線,http請求加上tcp頭部——包括源埠號、目的程式埠號和用於校驗資料完整性的序號,向下傳輸

網路層在資料報上加上ip頭部——包括源ip位址和目的ip位址,繼續向下傳輸到底層

底層通過物理網路傳輸給目的伺服器主機

目的伺服器主機網路層接收到資料報,解析出ip頭部,識別出資料部分,將解開的資料報向上傳輸到傳輸層

目的伺服器主機傳輸層獲取到資料報,解析出tcp頭部,識別埠,將解開的資料報向上傳輸到應用層

應用層http解析請求頭和請求體,如果需要重定向,http直接返回http響應資料的狀態code301或者302,同時在請求頭的location欄位中附上重定向位址,瀏覽器會根據code和location進行重定向操作;如果不是重定向,首先伺服器會根據 請求頭中的if-none-match 的值來判斷請求的資源是否被更新,如果沒有更新,就返回304狀態碼,相當於告訴瀏覽器之前的快取還可以使用,就不返回新資料了;否則,返回新資料,200的狀態碼,並且如果想要瀏覽器快取資料的話,就在相應頭中加入字段:

cache-control:max-age=2000

響應資料又順著應用層——傳輸層——網路層——網路層——傳輸層——應用層的順序返回到網路程序

資料傳輸完成,tcp四次揮手斷開連線。如果,瀏覽器或者伺服器在http頭部加上如下資訊,tcp就一直保持連線。保持tcp連線可以省下下次需要建立連線的時間,提示資源載入速度

connection:keep-alive

瀏覽器程序獲取到通知,根據當前頁面b是否是從頁面a開啟的並且和頁面a是否是同乙個站點(根網域名稱和協議一樣就被認為是同乙個站點),如果滿足上述條件,就復用之前網頁的程序,否則,新建立乙個單獨的渲染程序

瀏覽器會發出「提交文件」的訊息給渲染程序,渲染程序收到訊息後,會和網路程序建立傳輸資料的「管道」,文件資料傳輸完成後,渲染程序會返回「確認提交」的訊息給瀏覽器程序

瀏覽器收到「確認提交」的訊息後,會更新瀏覽器的頁面狀態,包括了安全狀態、位址列的 url、前進後退的歷史狀態,並更新web頁面,此時的web頁面是空白頁

渲染程序對文件進行頁面解析和子資源載入,html 通過htm 解析器轉成dom tree(二叉樹類似結構的東西),css按照css 規則和css直譯器轉成cssom tree,兩個tree結合,形成render tree(不包含html的具體元素和元素要畫的具體位置),通過layout可以計算出每個元素具體的寬高顏色位置,結合起來,開始繪製,最後顯示在螢幕中新頁面顯示出來(構建 dom 樹、樣式計算( 把 css 轉換為瀏覽器能夠理解的結構、轉換樣式表中的屬性值,使其標準化、計算出 dom 樹中每個節點的具體樣式)、布局(構建一棵只包含可見元素布局樹、布局計算))

從輸入URL到頁面展示

這個時候有兩種情況,第一種是子網域名稱伺服器返回了這個url對應的ip位址,第二種情況是經過了cdn排程,如果目標 使用了cdn服務,則需要在cdn服務商的平台設定相應的cname記錄,這個記錄是cdn服務廠商的乙個dns伺服器的網域名稱,子網域名稱伺服器會返回這個cname記錄,本地dns伺服器得...

從url輸入到前端頁面展示

老生常談,也有可能在面試裡遇到 1.從 url 輸入到頁面展現背後發生了什麼事?2.一次完整的 http 事務是怎麼乙個過程?3.瀏覽器是如何渲染頁面的?4.瀏覽器的核心有哪些?分別有什麼代表的瀏覽器?5.重新整理頁面,js 請求一般會有哪些地方有快取處理?上邊這一連串的字元,就叫做 url uni...

輸入乙個url到瀏覽器頁面展示都經歷了哪些過程

1 輸入 2 快取解析 3 網域名稱解析 4 tcp連線,三次握手 6 頁面渲染 那肯定是輸入你要訪問的 了,俗稱url 二 快取解析 瀏覽器獲取了這個url,當然就去解析了,它先去快取當中看看有沒有,從 瀏覽器快取 系統快取 路由器快取 當中檢視,如果有從快取當中顯示頁面,然後沒有那就進行步驟三 ...