一种基于嵌入式浏览器css引擎并行化方法

文档序号:9304473阅读:205来源:国知局
一种基于嵌入式浏览器css引擎并行化方法
【技术领域】
[0001]本发明涉及嵌入式浏览器的层叠样式表CSS引擎处理的技术领域,特别涉及一种CSS引擎并行化的处理方法。
【背景技术】
[0002]层叠样式表(Cascading Style Sheets,简写CSS),是由W3C定义和维护的标准,一种用来为结构化文档如HTML文档或XML应用添加样式(字体、间距和颜色等)的计算机
;五古
P口口 ο
[0003]相对于传统HTML的表现而言,CSS能够对网页中对象的位置排版进行像素级的精确控制。CSS规范的广泛使用和嵌入式浏览器的广泛使用,使CSS引擎成为嵌入式浏览器中必不可少的部分。CSS引擎完成的功能是将网页中的CSS样式描述准确无误地解析出来,并对每个DOM节点(文档对象模型,DOM树是由结构文档生成的树结构,DOM节点是DOM树中的节点)进行样式匹配、样式运用,最终使样式效果得以实现。
[0004]现有的CSS引擎技术对样式表的处理是线程阻塞式的,解析CSS样式时页面解析受到影响;另外在选择符匹配过程中,现有CSS引擎并没有对选择符分类和DOM节点进行分组匹配,匹配的效率影响了页面的加载。本发明通过采用新开线程的方式达到页面解析和样式解析并行执行,选择符在不同的线程分别匹配,加快了浏览器的处理速度。

【发明内容】

[0005]本发明的目的在于,为克服上述问题,本发明通过CSS引擎的并行处理,加快网页的加载速度,带来更好的用户体验,即本发明提供一种基于嵌入式浏览器CSS引擎并行化的处理方法。
[0006]为了达到上述目的,本发明提供一种基于嵌入式浏览器CSS引擎并行化的处理方法,所述方法包含:
[0007]步骤101:启动主线程进行页面解析;
[0008]步骤102)新建线程下载当页面解析过程中收到的外部样式表或图片资源;
[0009]步骤103)再次新建线程,采用再次新建的线程解析收到的CSS样式,且一种CSS样式采用一个新建的线程进行解析;
[0010]步骤103)经过一段时间,主线程完成页面解析,其余新建线程完成样式解析;
[0011]步骤104)开启选择器匹配线程,将页面解析和样式解析的输出结果输入选择器匹配线程,完成DOM节点与选择器的匹配,最终生成渲染树。
[0012]可选的,上述的页面解析是对采用结构化文档语言编排的页面的进行的解析;其中,所述结构化文档语言包含:HTML、XML或XHTML。
[0013]可选的,上述步骤103)进一步包含:
[0014]步骤103-1)主线程为收到的每个CSS样式赋予一个唯一的ID编号,针对每个CSS样式建立新线程;
[0015]步骤103-2)采用新线程解析每个携带了编号的CSS样式;
[0016]步骤103-3)样式解析完成,并将解析后的CSS样式根据ID编号进行排序,其中所述的ID编号用于:根据ID编号恢复各解析后的CSS样式在页面中的位置。
[0017]可选的,上述步骤102)和步骤103)之间还包含:扫描并记录所述外部样式表中选择符种类的数量。
[0018]可选的,上述步骤104)进一步包含:
[0019]步骤104-1)开启选择器匹配线程;
[0020]步骤104-2)判断记录的选择符种类的数量值,当该数量值大于3时进入步骤104-3);否则进入步骤104-4);
[0021]步骤104-3)根据选择符种类调用4种线程中的一种进行DOM节点与选择符匹配,最终生成渲染树;
[0022]其中,所述的4种线程为:ID匹配线程,标签匹配线程,类匹配线程和其它线程;所述的ID匹配线程根据ID选择符进行匹配,所述标签匹配线程根据标签进行匹配,所述类匹配线程根据类名匹配,所述其它线程对剩余的选择符种类进行匹配;
[0023]步骤104-4)将页面解析输出的DOM节点随机分组,然后为每个组单独分配一个线程,采用分配的线程将DOM节点与选择符匹配,最终生成渲染树。
[0024]采用上述的技术方案后,本发明具有以下优点:
[0025]1、对于外部CSS样式表较多的网页,通过并行加载,减少网页延迟带来的加载速度慢;
[0026]2、通过多开线程,可以减少处理延时;
[0027]3、加快了浏览器的响应速度,带来更好的用户体验效果;
【附图说明】
[0028]图1为本发明的一种基于嵌入式浏览器CSS引擎并行化的处理方法的流程图;
[0029]图2为CSS样式解析的并行执行方式;
[0030]图3为选择器匹配DOM节点的过程图。
【具体实施方式】
[0031]为了使本发明的目的、实现方法和优点更加清楚明白,下面结合具体实施例对本发明作进一步的描述。
[0032]本发明的一种基于嵌入式浏览器CSS引擎并行化的处理方法的流程如图1所示,具体包括如下步骤:
[0033]1、HTML页面解析过程中遇CSS样式表;
[0034]2、页面解析部分新开线程将CSS样式表加载下来,此时页面解析仍在执行;
[0035]3、页面解析过程中遇到CSS样式1,调用CSS解析器解析;
[0036]4、页面继续解析,当遇CSS样式2时,新开线程解析CSS样式2 ;
[0037]5、当样式解析完成后,根据ID号恢复其顺序;
[0038]6、页面解析完成后,CSS选择器开始将CSS样式表中的样式规则匹配到DOM节点;
[0039]7、匹配完成后输出一棵标注了 DOM节点信息的渲染树,CSS引擎的工作完成。
[0040]上述技术方案中CSS选择器匹配部分是根据选择符的类型或DOM节点分不同的线程进行匹配的:当选择符类型较多时,不同的选择符利用不同的线程处理,当选择符类型单一时,将DOM节点随机分组,在多核环境下通过work-stealing算法利用不同的核心并行匹配。
[0041]总之,本发明的技术方案为:页面解析部分属于浏览器的主线程,它负责为CSS样式解析新建线程,管理所有的CSS样式表;从外部看,CSS引擎的输入是文档对象模型(D0M树)和一个CSS样式集,经过CSS引擎的处理,输出标注了 CSS样式的一棵渲染树;css引擎的功能包括三部分:获取外部CSS样式表及图片资源、CSS样式解
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1