2021-05-12 14:32:11
HTTP請求過程詳解
1、HTTP請求和響應格式
1.1.http請求格式
http請求格式由四部分組成:請求行、請求頭、空行、訊息體
請求行:是請求訊息的第一行,由請求方式(GET/POST/DELETE/PUT)、請求資源路徑、http版本號組成
請求頭:請求頭中的資訊有和快取相關的頭(Cache-Control,If-Modified-Since)、用戶端身份資訊(User-Agent)等等
空行:空行表示訊息頭的內容到此為止,接下來該解析訊息體了,(所以空行必不可少)
訊息體:並不是所有的請求都有訊息體。
------------------------------------------
http響應格式和請求格式類似,包括:狀態行、響應頭、空行、訊息體
狀態行:由http版本號、狀態碼、狀態說明組成
響應頭:響應頭是伺服器傳遞給用戶端用於說明伺服器的一些資訊,以及將來繼續存取該資源時的策略。
空行:空行表示訊息頭的內容到此為止,接下來該解析訊息體了,(所以空行必不可少)
訊息體:就是伺服器返回的資料資訊
2、HTTP請求過程
http請求是在三次握手建立tcp連線後開始進行的,基本流程如下:
3、瀏覽器獲取資源和渲染過程
1. 使用者輸入網址(假設是個 HTML 頁面,第一次存取,無快取情況),瀏覽器向伺服器發出HTTP請求,伺服器返回 HTML 檔案; (善用快取,減少HTTP請求,減輕伺服器壓力)
2. 瀏覽器載入 HTML 程式碼,發現 <head> 內有一個 <link> 參照外部 CSS 檔案,則瀏覽器立即傳送CSS檔案請求,獲取瀏覽器返回的CSS檔案; (CSS檔案合併,減少HTTP請求)
3. 瀏覽器繼續載入 HTML 中 <body> 部分的程式碼,並且 CSS 檔案已經拿到手了,可以開始渲染頁面了; (CSS檔案需要放置最上面,避免網頁重新渲染)
4. 瀏覽器在程式碼中發現一個 <img> 標籤參照了一張圖片,向伺服器發出請求。此時瀏覽器不會等到圖片下載完,而是繼續渲染後面的程式碼; (圖片檔案合併,減少HTTP請求)
5. 伺服器返回圖片檔案,由於圖片佔用了一定面積,影響了後面段落的排布,因此瀏覽器需要回過頭來重新渲染這部分程式碼; (最好圖片都設定尺寸,避免重新渲染)
6. 瀏覽器發現了一個包含一行 JavaScript 程式碼的 <script> 標籤,會立即執行該js程式碼; (script最好放置頁面最下面)
7. js指令碼執行了語句,它令瀏覽器隱藏掉程式碼中的某個 <div>,突然就少了一個元素,瀏覽器不得不重新渲染這部分程式碼; (頁面初始化樣式不要使用js控制)
8. 終於等到了 </html> 的到來,瀏覽器渲染完畢
9. 如果換膚的話,JavaScript 讓瀏覽器換了一下 <link> 標籤的 CSS 路徑;
10. 瀏覽器向伺服器請求了新的CSS檔案,重新渲染頁面。
有了上面的過程所以才會看到一個頁面除了主要的請求地址,還多出了許多其他請求,類似的如下圖:
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-10/147814.htm
相關文章