Webkit之资源加载
一、webkit资源分类
webkit中有多种资源,大致分为以下几种:
- HTML文本
 - CSS样式文本 - CachedCSSStyleSheet
 - 字体 - CachedFont
 - 图片 - CachedImage
 - 只读资源 - CachedRawResource
 - JavaScript文本 - CachedScript
 - SVG - CachedSVGDocument
 - 视频字幕 - CachedTextTrack
 - 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之资源加载的更多相关文章
- 聊聊浏览器(webkit)资源加载机制
		
一些准备 在开始这个话题之前,我们有必要简单回顾一下 浏览器(webkit)的网页渲染过程(如果想要详细了解这个过程,可以戳我几年前写的一篇文章.): 我们知道,浏览器在渲染过程中,如遇到节点需要依赖 ...
 - webkit 子资源加载过程
		
从主控文档和子资源表单的页面.描述框架记叙文页主文档,布局.子元素.包含图片.CSS.JS等.为了显示网页,先要把资源载入到内存. 载入就是指把须要的资源载入到内存这一过程. Webkit用到非常多缓 ...
 - 理解WebKit和Chromium: Chromium的多进程资源加载机制
		
转载请注明原文地址:http://blog.csdn.net/milado_nju ##概述 前面介绍了WebKit中的资源加载机制,其实它只是一个框架性的东西,实际的资源加载依赖于各个WebKit移 ...
 - WebKit资源加载和网络栈
		
webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 WebKit资源加载 ...
 - 【原】从一个bug浅谈YUI3组件的资源加载
		
篇前声明:为了不涉及业务细节,篇内信息统一以某游戏,某功能代替 前不久,某游戏准备内测客户端,开发人员测试过程中发现某功能突然不灵了,之前的测试一切ok,没有发现任何异常,第一反应是,游戏内浏览器都是 ...
 - 【Chromium中文文档】多进程资源加载
		
多进程资源加载(需要更新) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture ...
 - Chrome设计文档-多进程资源加载
		
原文:Multi-process Resource Loading 背景 浏览器主进程及browser process处理所有的网络通信.原因有三点: Browser process可以控制每一个re ...
 - Chromium多进程资源加载
		
webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 多进程 资源的实际加 ...
 - High Performance Networking in Google Chrome  进程间通讯(IPC) 多进程资源加载
		
小结: 1. 小文件存储于一个文件中: 在内部,磁盘缓存(disk cache)实现了它自己的一组数据结构, 它们被存储在一个单独的缓存目录里.其中有索引文件(在浏览器启动时加载到内存中),数据文件( ...
 
随机推荐
- Python 处理文件
			
1.从现有文件中获取信息 使用Python中的模块,可以从现有文件中获取信息.使用“os”模块和“stat”模块可以获取文件的基本信息: import os import stat import ti ...
 - 用户id有则更新,无则添加 使用replace into (代替 insert into)
			
app登录成功后,调用后台,更新channel_id public function set_pushchannel($device,$channelid,$iv='' ) $sql = " ...
 - jQuery控制表格行移动,序号不变
			
@model Gd.NetSign.Controllers.DTO.SysPamaterDTO @{ ViewBag.Title = "SysPamatList"; //Layou ...
 - lucene索引的创建与搜索
			
package com.cs.multi; import java.io.File;import java.io.IOException; import org.apache.lucene.analy ...
 - 读取文件—open()、read()
			
摘自:http://www.iplaypython.com/sys/open.html 在Windows下的powershell打开python: Win+R打开运行窗口,输入powershell,输 ...
 - UI弹出键盘和收回键盘
			
点击textfield,会自动弹出键盘 要让键盘收回来,先设置个代理:[field setTextFieldDelegate:self]; 可设置成自己,也可设置成其他对象,只要在对应的类中,遵循U ...
 - .net dynamic动态加属性
			
class Test : System.Dynamic.DynamicObject { public override bool TryGetMember(System.Dynamic.GetMemb ...
 - CentOS 7 多网卡绑定
			
根据官方文档Red_Hat_Enterprise_Linux-7-Networking_Guide-en-US用nmcli做起来还是相当容易的.下面把俺的步骤贴下. 1.查看目前网卡的名称和状态.#n ...
 - JPA 系列教程19-jpa-uuid主键生成策略
			
ddl语句 CREATE TABLE `t_user` ( `id` varchar(32) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY K ...
 - Jekyll: .md to .html with self defined themes..
			
theme is from here $ gem install jekyll bundler ~ $ jekyll new my-awesome-site ~ $ cd my-awesome-sit ...