您好,登錄后才能下訂單哦!
瀏覽器訪問一個網站所經歷的步驟
Chrome搜索自身的DNS緩存
搜索操作系統自身的DNS緩存(瀏覽器沒有找到緩存或緩存已經失效)
查看Chrome瀏覽器的DNS緩存信息(chrome://net-internals/#dns):
讀取本地HOST文件
瀏覽器發起一個DNS的一個系統調用
寬帶運營商服務器查看本身緩存
運營商服務器發起一個迭代DNS解析的請求
運營商服務器把結果返回操作系統內核同時緩存起來
操作系統內核把結果返回瀏覽器
最終瀏覽器拿到www.imooc.com對應的IP地址
瀏覽器獲得域名對應的IP地址后,發起HTTP“三次握手”
TCP/IP連接建立起來后,瀏覽器就可以向服務器發送HTTP請求了。(使用了比如說,用HTTP的GET方法請求一個跟域名,協議可以采用HTTP1.0。)
服務器端接受到了這個請求,根據路徑參數,經過后端的一些處理之后,把處理后的一個結果的數據返回給瀏覽器。如果是慕課網的頁面就會把完整的HTML頁面代碼返回給瀏覽器。
瀏覽器拿到了慕課網的完整的HTML頁面代碼,在解析和渲染這個頁面的時候,里面的JS、CSS、圖片靜態資源,他們同樣也是一個個HTTP請求都需要經過上面的主要的七個步驟。
瀏覽器根據拿到的資源對頁面進行渲染,最終把一個完整的頁面呈現給了用戶。
一些概念
1. 什么是回調?
回調是異步編程時的基礎,將后續邏輯封裝成起始函數的參數,逐層嵌套
2. 什么是同步/異步?
同步是指:發送方發出數據后,等接收方發回響應以后才發下一個數據包的通訊方式。
異步是指:發送方發出數據后,不等接收方發回響應,接著發送下個數據包的通訊方式。
3. 什么是I/O?
磁盤的寫入(in)磁盤的讀取(out)
4. 什么的單線程/多線程?
一次只能執行一個程序叫做單線程
一次能執行多個程序叫多線程
5. 什么是阻塞/非阻塞?
阻塞:前一個程序未執行完就得一直等待
非阻塞:前一個程序未執行完時可以掛起,繼續執行其他程序,等到使用時再執行
6. 什么是事件?
一個觸發動作(例如點擊按鈕)
7. 什么是事件驅動?
一個觸發動作引起的操作(例如點擊按鈕后彈出一個對話框)
8. 什么是基于事件驅動的回調?
為了某個事件注冊了回調函數,但是這個回調函數不是馬上執行,只有當事件發生的時候,才會調用回調函數,這種函數執行的方式叫做事件驅動~這種注冊回調就是基于事件驅動的回調,如果這些回調和異步I/O(數據寫入、讀取)操作有關,可以看作是基于回調的異步I/O,只不過這種回調在nodejs中是有事件來驅動的
9. 什么是事件循環?
事件循環Eventloop,倘若有大量的異步操作,一些I/O的耗時操作,甚至是一些定時器控制的延時操作,它們完成的時候都要調用相應的回調函數,從而來完成一些密集的任務,而又不會阻塞整個程序執行的流程,此時需要一種機制來管理,這種機制叫做事件循環.
總而言之就是:管理大量異步操作的機制叫做事件循環
Event Loop:
回調函數隊列。異步執行的函數會被壓入這個隊列; 隊列被循環查詢。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。