1、webkit資源分類web
webkit中有多種資源,大體分爲如下幾種:網絡
類圖以下:框架
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