Webkit之資源加載

1、webkit資源分類web

webkit中有多種資源,大體分爲如下幾種:網絡

  1. HTML文本
  2. CSS樣式文本 - CachedCSSStyleSheet
  3. 字體 - CachedFont
  4. 圖片 - CachedImage
  5. 只讀資源 - CachedRawResource
  6. JavaScript文本 - CachedScript
  7. SVG - CachedSVGDocument
  8. 視頻字幕 - CachedTextTrack
  9. XSL樣式表 - CachedXSLStyleSheet

類圖以下:框架

HTML文本是網頁的主資源,它描述了網頁的框架、佈局。其它的即是子資源,是組成網頁的子元素。curl

2、webkit資源加載主線佈局

Webkit 的加載分爲兩條線路,一條是主資源(即HTML文本)的加載,另外一條是子資源的加載。主資源裏有子資源的描述信息,因此首先要加載主資源,而後加載子資源。字體

資源加載抽象流程圖:url

從流程圖中咱們看到,並非等待加載主資源完成後再來解析HTML和加載子資源,而是邊加載主資源而後解析HTML,邊加載子資源。spa

4、webkit資源加載模型.net

資源加載都是交給CachedResourceLoader來作,最後交給ResourceLoadScheduler完成,而ResourceHandle則是與平臺相關的網絡實現(cf或curl等)3d

5、webkit資源加載過程

6、主資源和子資源的加載

主資源和子資源的加載都是經過上面的"ResourceLoaderProcess"實現的,而CachedResourceLoader則是它們的共同入口。

 1 class CachedResourceLoader {
 2 public:
 3     CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRequest&);
 4 
 5      CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&);
 6      CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourceRequest&);
 7      CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedResourceRequest&);
 8      CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&);
 9      CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&, bool isSVG);
10      CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceRequest&);
11      CachedResourceHandle<CachedSVGDocument> requestSVGDocument(CachedResourceRequest&);    
12 
13      CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourceRequest&);
14      CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, CachedResourceRequest&);
15      CachedResourceHandle<CachedTextTrack> requestTextTrack(CachedResourceRequest&);
16 };

CachedResourceLoader有主資源和子資源加載的方法

主資源加載:

子資源加載:(以加載圖片資源爲例)

 

參考:

http://blog.csdn.net/milado_nju/article/details/8927821

http://blog.csdn.net/horkychen/article/details/26435373

相關文章
相關標籤/搜索