有极速快乐十分吗|极速快乐十分走势图|

WebKit內核加載渲染網頁的過程

WebKit引擎快速的原因
服務器君一共花費了177.223 ms進行了6次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

在WebKit渲染網頁之前,它需要將頁面和所有引用的資源加載完畢。其中會涉及到不同層面的工作。在本文中,我將重點關注WebCore(WebKit中主要渲染組件)是如何在加載過程中發揮作用的。

WebKit包含兩條加載流水線,其中一條負責將文檔加載到frames當中,另一條負責加載其他資源(比如圖片、腳本一類)。下圖描述了兩條流水線中涉及的主要對象。

加載Frames

FrameLoader負責將文檔加載到frames當中,當點擊鏈接時,FrameLoader會創建一個新的DocumentLoader對象,并置于“policy”狀態,接著就等待WebKit客戶端決定該如何處理這次加載。通常,客戶端會告訴FrameLoader將加載操作視為一次導航(而不是一次加載阻塞)

一旦客戶端告訴FrameLoader將加載視作導航,FrameLoader將DocumentLoader置于“provisional”狀態,此時將開始網絡請求并等待結論:這個網絡請求最終是下載一個文件還是一份可解析的文檔。

DocumentLoader接下來會創建MainResourceLoader對象,它的作用是與瀏覽器所運行的系統所提供的網絡庫打交道,網絡庫通過ResourceHandle接口提供。將MainResourceLoader和DocumentLoader分離開主要有兩個目的:

  1. MainResourceLoader處理ResourceHandle回調過程與DocumentLoader分離。
  2. MainResourceLoader對象的生命周期與DocumentLoader的生命周期解耦(DocumentLoader的生命周期與Document對象綁定在一起)。

一旦加載系統通過網絡獲得足夠多信息,以便把文檔進行呈現,FrameLoader將DocumentLoader置于“committed”狀態,這時Frame對象就要顯示這個新加載的文檔了。

加載子資源

網頁不僅僅由HTML組成。我們還需要加載其中的圖片、腳本等等。DocLoader對象就來負責加載這些資源(注意DocLoader和DocumentLoader名字很像,但是分工是不同的)。

我們以加載圖片為例。為了加載一張圖片,DocLoader首先詢問Cache是否已經有該圖片的副本(以CachedImage對象存在)。如果存在,DocLoader則可快速響應。為了更加高效,Cache經常在內存中保存解碼之后的圖片數據,這樣避免解碼兩次。

如果圖片沒有在Cache中,Cache會創建一個CachedImage對象來表示這個圖片。CachedImage對象讓Loader對象來發起網絡請求,Loader會創建SubresourceLoader來做這個事情。SubresourceLoader所扮演的角色與剛剛介紹的MainResourceLoader的角色類似。

改進點

WebKit加載流水線當中有很多需要改進的地方。FrameLoader過于復雜,除了加載frame以外還承擔了很多其他工作。比如,FrameLoader有好幾個名為“load”的方法,很容混淆。它來負責創建窗口,看上去和加載frame沒有什么關系。另外,加載流水線的若干階段沒有必要像現在耦合的這么緊,層次劃分也不合理,存在不同層次的對象互相訪問,比如:MainResourceLoader將獲取到的字節直接丟給FrameLoader而不是DocumentLoader。

如果研究了上面的圖,你會發現Cache只會被子資源利用。主要資源的加載并沒有得到WebKit內存緩存的支持。如果能夠統一這兩個加載過程,那么主資源的加載性能也會得到提升。一直以來我們都在不斷優化性能來讓頁面加載的越來越快。

本文地址:http://www.bavugt.tw/librarys/veda/detail/2030,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.bavugt.tw/librarys/veda/detail/2030

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《算法導論(原書第2版)》 科曼(Cormen T.H.) (作者), 等 (作者, 譯者), 潘金貴 (譯者)

《算法導論(原書第2版)》一書深入淺出,全面地介紹了計算機算法。對每一個算法的分析既易于理解又十分有趣,并保持了數學嚴謹性。本書的設計目標全面,適用于多種用途。涵蓋的內容有:算法在計算中的作用,概率分析和隨機算法的介紹。本書專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心算法元素的討論。本書還介紹了對強連通子圖算法正確性的證明,對哈密頓回路和子集求和問題的NP完全性的證明等內容。全書提供了900多個練習題和思考題以及敘述較為詳細的實例研究。

更多計算機寶庫...

有极速快乐十分吗
广州快乐十分开奖结 岚悦欢乐真人麻将 河南麻将游戏 天才麻将少女真人版电影 大冶麻将红中赖子发财杠 怎样下载吉林麻将 河北快3走势图基本 四川体彩快乐12今天开奖号码 今天上海快三开奖 北京小赛车开奖结果