日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WebKit如何加载web页面

發布時間:2024/4/15 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebKit如何加载web页面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自http://blog.csdn.net/keensword007/archive/2010/09/03/5860837.aspx

?

在WebKit能夠渲染web頁面之前,它必須從網絡加載頁面和子資源。從web加載資源涉及到許多層,本文將集中于WebCore,即WebKit的主要渲染組件,如何參與加載過程。

WebKit包含兩條加載管道,一個用于加載文檔到框架(frame),另一個用于加載子資源(如圖片和腳本)。下圖總結了兩條管道涉及的主要對象:

加載框架(Frame)
FrameLoader負責加載文檔到框架,當您點擊鏈接的時候,FrameLoader開始創建一個新的處在“策略(policy)”狀態的DocumentLoader對象,在該狀態下等待webkit客戶決定如何處理本次加載。通??蛻糁甘綟rameLoader將加載當作導航(navigator)(而不是阻塞式加載)。

一旦客戶指示FrameLoader將加載當作導航,FrameLoader將DocumentLoader遷移到"臨時(provision)"狀態,啟動網絡請求,并等待以判斷網絡請求的結果是下載還是一個新的文檔。

接著,DocumentLoader創建MainResourceLoader,它的任務是通過ResourceHandle接口和平臺相關網絡庫交互。將MainResourceLoader從DocumentLoader分離出來有兩個目的:(1) MainResourceLoader將DocumentLoader從處理ResourceHandle回調的細節隔離開來。(2) MainResourceLoader的生命周期與DocumentLoader的生命周期(與Document緊密關聯)分離。

一旦加載系統從網絡接收到足夠的信息,判斷出接收的資源確實表示一份文檔,FrameLoader將DocumentLoader遷移到"已提交(committed)"狀態,Frame開始顯示新的文檔。

?

加載子資源(Subresource)
當然,顯示一個web頁面需要的不僅僅是組成文檔的HTML,還需要加載圖像、腳本以及其它文檔引用到的子資源。DocLoader就是負責加載這些子資源的(注意,雖然DocumentLoader和DocLoader名稱上相似,但它們的職責卻大不相同)。

我們以加載圖片為例。要加載一個圖像,DocLoader首先檢查Cache是否在內存中已經有一份圖像的副本(如CachedImage對象)。如果Cache中已經存在,DocLoader會立即響應。甚至進一步提高效率,Cache總是將解碼過的圖像放在顯存,這樣WebKit就不需要對同一圖像做兩次解碼。

如果圖像不在Cache中,Cache將創建一個新的CacheImage對象表示該圖像。CacheImage對象將要求“Loader“對象創建SubresourceLoader來啟動網絡請求。SubresourceLoader在子資源加載管道中所起的作用和MainResourceLoader在主資源加載管道中所起的作用類似,都是直接和ResourceHanle的平臺相關接口交互。

?

總結

以上是生活随笔為你收集整理的WebKit如何加载web页面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。