有极速快乐十分吗|极速快乐十分走势图|

WebKit内核加载渲染网页的过程

WebKit引擎快速的原因
服务器君一?#19981;?#36153;了210.126 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

在WebKit渲染网页之前,它需要将页面和所有引用的资源加载完毕。?#28210;?#20250;涉及到不同层面的工作。在本文中,我将重点关注WebCore(WebKit中主要渲染组件)是如何在加载过程中发挥作用的。

WebKit包含两条加载流水线,?#28210;?#19968;条负责将文档加载到frames当中,另一条负责加载其他资源(比如图片、脚本一类)。下图描述了两条流水线中涉及的主要对象。

加载Frames

FrameLoader负责将文档加载到frames当中,当点击链?#37038;保現rameLoader会创建一个新的DocumentLoader对象,并置于“policy”状态,接着就等待WebKit客户端决定该如何处理这次加载。通常,客户端会告诉FrameLoader将加载操作?#28216;?#19968;次导航(而不是一次加载阻塞)

一旦客户端告诉FrameLoader将加载视作导航,FrameLoader将DocumentLoader置于“provisional”状态,此时将开始网络请求并等待结论:这个网络请求最终是下载一个文件还是一份可解析的文档。

DocumentLoader接下来会创建MainResourceLoader对象,它的作用是与浏览器所运行的系统所提供的网络库打交道,网络库通过ResourceHandle接口提供。将MainResourceLoader和DocumentLoader分离开主要有两个目的:

  1. MainResourceLoader处理ResourceHandle回调过程与DocumentLoader分离。
  2. MainResourceLoader对象的生命周期与DocumentLoader的生命周期解耦(DocumentLoader的生命周期与Document对象绑定在一起)。

一旦加载系统通过网络获得足够多信息,以便把文?#21040;?#34892;呈现,FrameLoader将DocumentLoader置于“committed”状态,这时Frame对象就要显示这个新加载的文档了。

加载子资源

网页不仅仅由HTML组成。我们还需要加载?#28210;?#30340;图片、脚本等?#21462;ocLoader对象就来负责加载这些资源(注意DocLoader和DocumentLoader名字很像,但是分工是不同的)。

我们以加载图片为例。为了加载一张图片,DocLoader首先询问Cache是否已经有该图片的副本(以CachedImage对象存在)。如果存在,DocLoader则可快速响应。为了更加高效,Cache经常在内存中保存解码之后的图片数据,这样避免解码两次。

如果图片没有在Cache中,Cache会创建一个CachedImage对象来表示这个图片。CachedImage对象让Loader对象来发起网络请求,Loader会创建SubresourceLoader来做这个事情。SubresourceLoader所扮演的角色与刚刚介绍的MainResourceLoader的角色类似。

改进点

WebKit加载流水线当中有很多需要改进的地方。FrameLoader过于复杂,除了加载frame以外还承担了很多其他工作。比如,FrameLoader有好几个名为“load”的方法,很容混淆。它来负责创建窗口,看上去和加载frame没有什么关系。另外,加载流水线的若干阶段没有必要像现在耦合的这么紧,层次划分也不合理,存在不同层次的对象互相访问,比如:MainResourceLoader将获取到的字节直接丢给FrameLoader而不是DocumentLoader。

如果研究了上面的图,你会发现Cache只会被子资源利用。主要资源的加载并没有得到WebKit内存缓存的支持。如果能够统一这两个加载过程,那么主资源的加载?#38405;?#20063;会得到提升。一直以来我们都在不断优化?#38405;?#26469;让页面加载的越来越快。

本文地址:http://www.bavugt.tw/librarys/veda/detail/2030,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.bavugt.tw/librarys/veda/detail/2030

如果你认为这篇文章?#26723;?#26356;多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系?#24120;?#22240;为在特定领域有一个足够量的知?#35835;?足够良好的知识结构,系统化以后就足以应?#28304;?#37327;未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足?#38405;?#25324;面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《敏捷软件开发(原则模式与?#23548;?》 马丁 (作者), 邓辉 (译者)

《敏捷软件开发:原则模式与?#23548;酚上?#35465;全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷开发和极限编程方面的?#25913;希?#26159;由敏捷开发的创始人之一所撰写的。1.讲述在预算和?#23548;?#35201;求下,软件开发人员和项目经理如何使用敏捷开发完?#19978;?#30446;;2.使用真实案例讲解如何用极限编程来设计、测试、重构和结对编程;3.包含?#24605;?#20855;价值的可多次使用的C++和JAVA源代码;4.重点讲述了如何使用UML和设计模式解决面向客户系统的问题。

更多计算机宝库...

有极速快乐十分吗
综合分布图 手机炒股 博彩注册送体验金 易彩堂怎样赚钱 快乐时时彩 甘肃十一选五26日开奖 双色球基本走势图100期 北单3串1进球平均奖金 gta怎么快速卖车赚钱 pk10牛牛怎么玩