一、webkit资源分类

webkit中有多种资源,大致分为以下几种:

  1. HTML文本
  2. CSS样式文本 - CachedCSSStyleSheet
  3. 字体 - CachedFont
  4. 图片 - CachedImage
  5. 只读资源 - CachedRawResource
  6. JavaScript文本 - CachedScript
  7. SVG - CachedSVGDocument
  8. 视频字幕 - CachedTextTrack
  9. XSL样式表 - CachedXSLStyleSheet

类图如下:

HTML文本是网页的主资源,它描述了网页的框架、布局。其它的便是子资源,是组成网页的子元素。

二、webkit资源加载主线

Webkit 的加载分为两条线路,一条是主资源(即HTML文本)的加载,另一条是子资源的加载。主资源里有子资源的描述信息,所以首先要加载主资源,然后加载子资源。

资源加载抽象流程图:

从流程图中我们看到,并不是等待加载主资源完成后再来解析HTML和加载子资源,而是边加载主资源然后解析HTML,边加载子资源。

四、webkit资源加载模型

资源加载都是交给CachedResourceLoader来做,最后交给ResourceLoadScheduler完成,而ResourceHandle则是与平台相关的网络实现(cf或curl等)

五、webkit资源加载过程

六、主资源和子资源的加载

主资源和子资源的加载都是通过上面的"ResourceLoaderProcess"实现的,而CachedResourceLoader则是它们的共同入口。

 class CachedResourceLoader {
public:
CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRequest&); CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&);
CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourceRequest&);
CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedResourceRequest&);
CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&);
CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&, bool isSVG);
CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceRequest&);
CachedResourceHandle<CachedSVGDocument> requestSVGDocument(CachedResourceRequest&); CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourceRequest&);
CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, CachedResourceRequest&);
CachedResourceHandle<CachedTextTrack> requestTextTrack(CachedResourceRequest&);
};

CachedResourceLoader有主资源和子资源加载的方法

主资源加载:

子资源加载:(以加载图片资源为例)

参考:

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

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

Webkit之资源加载的更多相关文章

  1. 聊聊浏览器(webkit)资源加载机制

    一些准备 在开始这个话题之前,我们有必要简单回顾一下 浏览器(webkit)的网页渲染过程(如果想要详细了解这个过程,可以戳我几年前写的一篇文章.): 我们知道,浏览器在渲染过程中,如遇到节点需要依赖 ...

  2. webkit 子资源加载过程

    从主控文档和子资源表单的页面.描述框架记叙文页主文档,布局.子元素.包含图片.CSS.JS等.为了显示网页,先要把资源载入到内存. 载入就是指把须要的资源载入到内存这一过程. Webkit用到非常多缓 ...

  3. 理解WebKit和Chromium: Chromium的多进程资源加载机制

    转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 前面介绍了WebKit中的资源加载机制,其实它只是一个框架性的东西,实际的资源加载依赖于各个WebKit移 ...

  4. WebKit资源加载和网络栈

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 WebKit资源加载 ...

  5. 【原】从一个bug浅谈YUI3组件的资源加载

    篇前声明:为了不涉及业务细节,篇内信息统一以某游戏,某功能代替 前不久,某游戏准备内测客户端,开发人员测试过程中发现某功能突然不灵了,之前的测试一切ok,没有发现任何异常,第一反应是,游戏内浏览器都是 ...

  6. 【Chromium中文文档】多进程资源加载

    多进程资源加载(需要更新) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture ...

  7. Chrome设计文档-多进程资源加载

    原文:Multi-process Resource Loading 背景 浏览器主进程及browser process处理所有的网络通信.原因有三点: Browser process可以控制每一个re ...

  8. Chromium多进程资源加载

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 多进程 资源的实际加 ...

  9. High Performance Networking in Google Chrome 进程间通讯(IPC) 多进程资源加载

    小结: 1. 小文件存储于一个文件中: 在内部,磁盘缓存(disk cache)实现了它自己的一组数据结构, 它们被存储在一个单独的缓存目录里.其中有索引文件(在浏览器启动时加载到内存中),数据文件( ...

随机推荐

  1. 非常简洁的js图片轮播

    <div id="tupian"></div><script>var jpg =new Array();jpg[0]="url(c.j ...

  2. NOIP2001-普及组复赛-第二题-最大公约数和最小公倍数问题

    题目描述 Description 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数条件:  1.P,A是正整数 ...

  3. aspose 解决插入html后字体问题

    /// <summary> /// 添加html /// </summary> /// <param name="strText"></p ...

  4. Alyona and a tree

    Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  5. CSS传统布局之页面布局实例

    传统的页面布局依赖于盒模型+流动模型(flow)+浮动模型(float)+层模型(layer)来实现页面的布局,具体方法是通过盒模型+display属性+float属性+position属性来加以实现 ...

  6. jenkins 中集成JNI的坑

    有包名1.生成class> javac myjni\HelloJNI.java2.生成.h文件> javah -d include myini.HelloJNI3.生成.dll文件> ...

  7. Codeforces Round #375 (Div. 2)A. The New Year: Mee

    A. The New Year: Meeting Friends time limit per test 1 second memory limit per test 256 megabytes in ...

  8. 关于个人网站选择虚拟主机还是VPS服务器的讨论

    还记得当初才开始学习建站的时候,选择的第一款虚拟主机是全HTML的主机,那时候的虚拟主机还分为HTML或者是ASP,PHP的都很少,在国内接触的学习较多还是以ASP为主,PHP是最近几年才开始流行.如 ...

  9. HDU 5754 Life Winner Bo

    四种棋子实质上都是一样的思路: 如果某位置的棋子,它下一步可以走到的位置中 能找到有后手胜的位置,那么该位置先手必胜. 如果某位置的棋子,它下一步可以走到的位置中 全是先手胜,那么该位置后手必胜. 其 ...

  10. H5的新应用-拖到页面上的元素

    -------------------------- <script type="text/javascript">                        // ...