瀏覽器地址欄輸入URL(網址??)
????(1) 服務器進行URL解析??:驗證URL格式,提取協議、域名等
????(2) 服務器進行DNS查詢??:將域名轉換為IP地址(可能涉及緩存或DNS預取)
????(3) 與服務器建立連接??:通過TCP三次握手(HTTPS還需TLS協商)
????(4) 瀏覽器發送請求??:瀏覽器構造HTTP請求頭(含Cookie、User-Agent等)。請求方法:GET(獲取資源)、POST(提交數據)、PUT/DELETE(RESTful API)
服務器處理請求
服務器返回資源
靜態資源 vs 動態資源??
- ??靜態資源??(如HTML/CSS/JS文件):服務器直接讀取文件,返回 200 OK 和內容。
- ??動態資源??(如PHP/Python接口):通過后端程序(如Django、Node.js)處理,可能查詢數據庫后生成響應。
服務器響應報文:狀態碼、緩存控制、html文件
瀏覽器渲染階段??
??(1) 解析響應??
- ??Content-Type處理??:
- text/html:觸發HTML解析。
- application/json:交由JavaScript處理(如 fetch().then())。
- image/png:解碼為位圖并顯示。
??(2) 構建DOM/CSSOM??
??HTML解析??:
- 邊下載邊解析,遇到 <script> 默認阻塞(除非標記 async/defer)。
- 容錯機制:自動補全缺失標簽(如 <p> 未閉合)。
??CSS解析??:
- 生成CSSOM樹,選擇器從右向左匹配(如 .box a 先找所有 <a> 再過濾)。
??(3) 渲染管線(Rendering Pipeline)??
- ??布局(Layout)??:計算每個節點的幾何屬性(盒模型、浮動)。
- ??繪制(Paint)??:將布局轉換為像素(如文本、邊框)。
- ??合成(Composite)??:分層渲染(如 transform: translateZ(0) 觸發GPU加速)。
后續交互(AJAX/WebSocket)??
??(1) AJAX(異步通信)??
- 基于XMLHttpRequest或Fetch API,不刷新頁面更新數據。
??(2) WebSocket(全雙工通信)??
- ??握手階段??:HTTP Upgrade頭切換協議。
- ??持續通信??:建立后通過幀(Frame)雙向傳輸數據(如聊天室、實時游戲)。