從點選到呈現 詳解一次HTTP請求(4)

2021-06-22 20:49:04 字數 654 閱讀 1896

歷經千辛萬苦,我們請求的響應終於到達了客戶端的瀏覽器,響應到達瀏覽器之後,瀏覽器首先判斷狀態碼,如果是 200 開頭的就好辦,直接進入渲染流程,如果是 300 開頭的就要去相應頭裡面找 location 域,根據這個 location 的指引,進行跳轉,這裡跳轉需要開啟乙個跳轉計數器,是為了避免兩個或者多個頁面之間形成的迴圈的跳轉,當跳轉次數過多之後,瀏覽器會報錯,同時停止。如果是 400 開頭或者 500 開頭的狀態碼,瀏覽器也會給出乙個錯誤頁面。

當瀏覽得到乙個正確的 200 響應之後,接下來面臨的乙個問題就是多國語言的編碼解析了,響應頭是乙個 ascii 的標準字符集的文字,這個還好辦,但是響應的正文本質上就是乙個位元組流,對於這一坨位元組流,瀏覽器要怎麼去處理呢,首先瀏覽器會去看響應頭裡面指定的 encoding 域,如果有了這個東西,那麼就按照指定的 encoding 去解析字元,如果沒有的話,那麼瀏覽器會使用一些比較智慧型的方式,去猜測和判斷這一坨位元組流應該使用什麼字符集去解碼。相關的筆記可以看這裡,瀏覽器對編碼的確定

dom 樹構造好了之後,就是根據 dom 樹和 css 樣式表來構造 render 樹了,這個才是真正的用於渲染到頁面上的乙個乙個的矩形框的樹,對於 render 樹上每乙個框,需要確定他的 x y 座標,尺寸,邊框,字型,形態,等等諸多方面的東西,render 樹一旦構建完成,整個頁面也就準備好了,可以上菜了。

Extjs 點選一次button觸發多次請求

事件觸發兩次的三種原因 1.容器的多次初始化 隱蔽級別 錯誤表現為在 中將乙個容器初始化了兩次,例如 此行 乍一看是正常的獲取乙個控制器然後初始化,其實getcontroller方法已經將控制器初始化了,這時再呼叫init 方法就會註冊兩次,一般犯了一次這樣的錯誤,看了原始碼以後就不會再犯了,畢竟每...

重灌Ubuntu系統 從第一次到下一次

home下的所有東西 root下看看有沒有東西 root bashrc etc profile可以保留乙份。用軟碟通製作u盤系統 用軟碟通開啟.iso檔案 寫入硬碟映象 寫入方式預設hdd 如果發現製作好了進不去系統,可以選擇raw。u盤啟動 看情況選擇安裝選項 安裝完成之後u盤可能會顯示只有十幾k...

從Linux到Ubuntu 巨大的一次飛躍

今年10月 11日,自 ubuntu 7.10 的候補版本 即所謂 candidate ubuntu 的使用者猛然增加,呈現一種 爆發之勢 這種說法,有何根據?根據10月20 日www.w3counter.com 公布的統計數字,在10月 10日至10月 20日期間,全球實際 linux 使用者數猛...