我們經常用瀏覽器上網,但是大家想過沒有在瀏覽器和伺服器之間是怎麼互動的嗎?
接下給大家說說web頁面請求的原理(高手直接跳過)。
首先我們不要把伺服器想的太神聖了,其實他也就是一台 沒有顯示器的電腦,處理速度比普通電腦快罷了。
伺服器端安裝的iis軟體,在客戶端是瀏覽器;
客戶端:
當我們在瀏覽器輸入**並回車後,如果你是第一次訪問這個**例如www.itcast.cn,
你的瀏覽器並不知道這個**的ip,所以第一次請求時發向dns伺服器,
伺服器端:
首先在伺服器端有乙個監聽請求的東東,那是什麼呢?是socket,負責監聽請求的sockets發現有請求到達,
他會根據socket.accept()立即建立乙個socket負責與傳送請求的 瀏覽器進行通訊(瀏覽器本來就是用socket與伺服器通訊的,
因此瀏覽也就是乙個socket),因為監聽請求的的socket占用乙個執行緒,因此我們也建立另乙個執行緒專門處理客戶端瀏覽器的請求。
接下來分析請求的頁面的路徑和頁面的型別:如果發現請求的是靜態頁面,我麼直接讀取靜態頁面頁面,
並生成響應報文頭(text/html),通過socket發回給瀏覽器;如果請求的是的話,生成響應報文頭(image/jpeg),
和內容一起發回給客戶端,想css,js之類的都是基本一樣的處理方式;
如果傳送來的請求是動態頁面,那伺服器該怎麼處理請求呢(iis沒有直接處理動態頁面的能力),其實iis是通過可擴充套件外掛程式來處理的,
例如asp.net做的動態頁面是通過 netframework來處理的 ,其他的暫時不理會(偶不會啊)!當頁面處理完畢後,
將處理完的結果交給socket,由socket 發回給瀏覽器。
如果客戶端請求的頁面在伺服器端不存在,伺服器給客戶端發回的響應報文中提示有錯誤資訊404,
還有其他一些錯誤資訊**,在這裡就不再多說了!
瀏覽器渲染頁面的原理及流程
瀏覽器將網域名稱通過網路通訊從伺服器拿到html檔案後,如何渲染頁面呢?1.根據html檔案構建dom樹和cssom樹。構建dom樹期間,如果遇到js,阻塞dom樹及cssom樹的構建,優先載入js檔案,載入完畢,再繼續構建dom樹及cssom樹。2.構建渲染樹 render tree 3.頁面的重...
瀏覽器渲染頁面的原理及流程
1.根據html檔案構建dom樹和cssom樹。構建dom樹期間,如果遇到js,阻塞dom樹及cssom樹的構建,優先載入js檔案,載入完畢,再繼續構建dom樹及cssom樹。js會對dom節點進行操作,瀏覽器無法 未來的dom節點的具體內容,為了防止無效操作,節省資源,只能阻塞dom樹的構建。2....
瀏覽器渲染頁面的原理及流程
我們可能都知道瀏覽器含有乙個渲染引擎,用來渲染視窗所展示的內容。預設情況下,渲染引擎可以顯示html xml文件及,它也可以借助外掛程式 一種瀏覽器擴充套件 顯示其他型別資料,例如使用pdf閱讀器外掛程式,用於顯示pdf格式。但是其具體的渲染原理和流程估計也有很多人都不知道或者不清楚吧。這些天研究了...