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

相关文章
相关标签/搜索