经由沙盒执行的推测性的资源预提取的利记博彩app

文档序号:8287855阅读:276来源:国知局
经由沙盒执行的推测性的资源预提取的利记博彩app
【专利说明】
[0001] 相关专利申请的交叉引用
[0002] 本申请要求享有以下专利申请的优先权的利益:2012年8月17日递交的、名称 为"Speculative Resource Prefetching via Sandboxed Execution" 的美国临时专利 申请序列No.61/684, 601以及2012年8月16日递交的、名称为"Speculative Resource Prefetching via Sandboxed Execution" 的美国临时专利申请序列 No. 61/683, 996,故以 引用方式将二者的全部内容并入本文。
技术领域
[0003] 本发明涉及用于在网络浏览器中渲染HTML文档的方法、系统和设备,更具体地 说,本发明涉及将网络浏览器操作并行化的方法。
【背景技术】
[0004] 在过去几年中,无线通信技术和移动电子设备(例如,蜂窝电话、平板设备、膝上 型计算机等)已日益普及,并且越来越多的被使用。为了与增长的消费者需求保持同步,移 动电子设备已经变得功能更加丰富,并且现在通常包括多个处理器、片上系统(SoC)、以及 允许移动设备用户在他们的移动设备上执行复杂且耗电的软件应用(例如,网络浏览器、 视频流应用等)的其它资源。由于这些改进和其它改进,智能电话和平板计算机已日益普 及,并且作为很多用户选择的平台,正在取代膝上型计算机和台式机器。
[0005] 现在移动设备用户能够通过经由他们移动设备上的浏览器应用来访问互联网,从 而轻松且方便地完成他们日常任务中的很多任务。随着移动设备持续日益普及,能够更好 地使用现代移动设备的多处理能力的网络浏览器将是消费者所期望的。

【发明内容】

[0006] 各个方面包括预提取资源的方法,其包括:由在计算设备的处理器中运行的第一 进程对HTML文档进行扫描,以发现脚本;由第二进程推测性地执行所发现的脚本,以发现 在所述脚本或所述HTML文档中没有明确引用的资源;通过发出下载所发现的资源的请求, 来推测性地预提取资源;以及丢弃通过推测性地执行所发现的脚本而生成的结果。
[0007] 在一方面,推测性地执行所发现的脚本以发现在所述脚本或所述HTML文档中没 有明确引用的资源可以包括:推测性地执行所发现的脚本,以发现在所述计算设备的电子 显示器上渲染所述HTML文档所需要的资源。在另外的方面,推测性地执行所发现的脚本可 以包括:与浏览器操作的执行并行地来推测性地执行所发现的脚本。在另外的方面,推测性 地执行所发现的脚本可以包括:与执行其它脚本并行地并且与浏览器操作的执行并发地来 执行所发现的脚本。
[0008] 在另外的方面,推测性地预提取资源可以包括:与执行其它脚本并行地并且与浏 览器操作的执行并发地来预提取资源。在另外的方面,推测性地执行所发现的脚本可以包 括:执行所发现的脚本中的被确定为最有可能与发现外部资源相关的选择部分。在另外的 方面,推测性地执行所发现的脚本可以包括:仅执行所发现的脚本中的与被识别为与发现 外部资源相关的模式相对应的部分。
[0009] 在另外的方面,并行地来推测性地执行所发现的脚本可以包括:基于启发法来执 行所发现的脚本。在另外的方面,所述方法可以包括:限制由对所发现的脚本的推测性执行 而生成的数据结构的大小。在另外的方面,由第一进程对HTML文档进行扫描以发现脚本可 以包括由HTML扫描器对所述HTML文档进行扫描,以及由第二进程推测性地执行所发现的 脚本可以包括由沙盒脚本执行引擎推测性地执行所发现的脚本。
[0010] 另外的方面包括计算设备,所述计算设备可以包括:用于由第一进程对HTML文档 进行扫描以发现脚本的单元;用于由第二进程推测性地执行所发现的脚本以发现在所述脚 本或所述HTML文档中没有明确引用的资源的单元;用于通过发出下载所发现的资源的请 求来推测性地预提取资源的单元;以及用于丢弃通过推测性地执行所发现的脚本而生成的 结果的单元。在一方面,用于推测性地执行所发现的脚本以发现在所述脚本或所述HTML文 档中没有明确引用的资源的单元可以包括:用于推测性地执行所发现的脚本以发现在所述 计算设备的电子显示器上渲染所述HTML文档所需要的资源的单元。
[0011] 在另外的方面,用于推测性地执行所发现的脚本的单元可以包括:用于与浏览器 操作的执行并行地来推测性地执行所发现的脚本的单元。在另外的方面,用于推测性地执 行所发现的脚本的单元可以包括:用于与执行其它脚本并行地并且与浏览器操作的执行并 发地来执行所发现的脚本的单元。在另外的方面,用于推测性地预提取资源的单元可以包 括:用于与执行其它脚本并行地并且与浏览器操作的执行并发地来预提取资源的单元。在 另外的方面,用于推测性地执行所发现的脚本的单元可以包括:用于执行所发现的脚本中 的被确定为最有可能与发现外部资源相关的选择部分的单元。
[0012] 在另外的方面,用于推测性地执行所发现的脚本的单元可以包括:用于仅执行所 发现的脚本中的与被识别为与发现外部资源相关的模式相对应的部分的单元。在另外的方 面,用于并行地来推测性地执行所发现的脚本的单元可以包括:用于基于启发法来执行所 发现的脚本的单元。在另外的方面,计算设备可以包括:用于限制由对所发现的脚本的推测 性执行而生成的数据结构的大小的单元。在另外的方面,用于由第一进程对HTML文档进行 扫描以发现脚本的单元可以包括用于由HTML扫描器对所述HTML文档进行扫描的单元,以 及用于由第二进程推测性地执行所发现的脚本的单元可以包括用于由沙盒脚本执行引擎 推测性地执行所发现的脚本的单元。
[0013] 另外的方面包括计算设备,所述计算设备包括处理器,所述处理器配置有处理器 可执行指令以执行包括以下操作的操作:由第一进程对HTML文档进行扫描以发现脚本;由 第二进程推测性地执行所发现的脚本,以发现在所述脚本或所述HTML文档中没有明确引 用的资源;通过发出下载所发现的资源的请求,来推测性地预提取资源;以及丢弃通过推 测性地执行所发现的脚本而生成的结果。在一方面,所述处理器可以配置有处理器可执行 指令以执行操作,使得推测性地执行所发现的脚本以发现在所述脚本或所述HTML文档中 没有明确引用的资源可以包括:推测性地执行所发现的脚本,以发现在所述计算设备的电 子显示器上渲染所述HTML文档所需要的资源。
[0014] 在另外的方面,所述处理器可以配置有处理器可执行指令以执行操作,使得推测 性地执行所发现的脚本可以包括:与浏览器操作的执行并行地来推测性地执行所发现的脚 本。在另外的方面,所述处理器可以配置有处理器可执行指令以执行操作,使得推测性地执 行所发现的脚本可以包括:与执行其它脚本并行地并且与浏览器操作的执行并发地来执行 所发现的脚本。在另外的方面,所述处理器可以配置有处理器可执行指令以执行操作,使得 推测性地预提取资源可以包括:与执行其它脚本并行地并且与浏览器操作的执行并发地来 预提取资源。
[0015] 在另外的方面,所述处理器可以配置有处理器可执行指令以执行操作,使得推测 性地执行所发现的脚本可以包括:执行所发现的脚本中的被确定为最有可能与发现外部资 源相关的选择部分。在另外的方面,所述处理器可以配置有处理器可执行指令以执行操作, 使得推测性地执行所发现的脚本可以包括:仅执行所发现的脚本中的与被识别为与发现外 部资源相关的模式相对应的部分。在另外的方面,所述处理器可以配置有处理器可执行指 令以执行操作,使得并行地来推测性地执行所发现的脚本可以包括:基于启发法来执行所 发现的脚本。
[0016] 在另外的方面,所述处理器可以配置有处理器可执行指令以执行还包括以下操作 的操作:限制由对所发现的脚本的推测性执行而生成的数据结构的大小。在另外的方面,所 述处理器可以配置有处理器可执行指令以执行操作,使得:由第一进程对HTML文档进行扫 描以发现脚本可以包括由HTML扫描器对所述HTML文档进行扫描;以及由第二进程推测性 地执行所发现的脚本可以包括由沙盒脚本执行引擎推测性地执行所发现的脚本。
[0017] 另外的方面包括其上存储有处理器可执行软件指令的非暂时性计算机可读存储 介质,所述处理器可执行软件指令被配置为使处理器执行用于预提取资源的操作,所述操 作包括:由第一进程对HTML文档进行扫描,以发现脚本;由第二进程推测性地执行所发现 的脚本,以发现在所述脚本或所述HTML文档中没有明确引用的资源;通过发出下载所发现 的资源的请求,来推测性地预提取资源;以及丢弃通过推测性地执行所发现的脚本而生成 的结果。
[0018] 在另外的方面,所存储的处理器可执行软件指令可以被配置为使处理器执行操 作,使得推测性地执行所发现的脚本,以发现在所述脚本或所述HTML文档中没有明确引用 的资源可以包括:推测性地执行所发现的脚本,以发现在电子显示器上渲染所述HTML文档 所需要的资源。在另外的方面,所存储的处理器可执行软件指令可以被配置为使处理器执 行操作,使得推测性地执行所发现的脚本可以包括:与浏览器操作的执行并行地来推测性 地执行所发现的脚本。在另外的方面,所存储的处理器可执行软件指令可以被配置为使处 理器执行操作,使得推测性地执行所发现的脚本可以包括:与执行其它脚本并行地并且与 浏览器操作的执行并发地来执行所发现的脚本。
[0019] 在另外的方面,所存储的处理器可执行软件指令可以被配置为使处理器执行操 作,使得推测性地预提取资源可以包括:与执行其它脚本并行地并且与浏览器操作的执行 并发地来预提取资源。在另外的方面,所存储的处理器可执行软件指令可以被配置为使处 理器执行操作,使得推测性地执行所发现的脚本可以包括:执行所发现的脚本中的被确定 为最有可能与发现外部资源相关的选择部分。在另外的方面,所存储的处理器可执行软件 指令可以被配置为使处理器执行操作,使得推测性地执行所发现的脚本可以包括:仅执行 所发现的脚本中的与被识别为与发现外部资源相关的模式相对应的部分。
[0020] 在另外的方面,所存储的处理器可执行软件指令可以被配置为使处理器执行操 作,使得并行地来推测性地执行所发现的脚本可以包括:基于启发法来执行所发现的脚本。 在另外的方面,所存储的处理器可执行软件指令可以被配置为使处理器执行还包括以下操 作的操作:限制由对所发现的脚本的推测性执行而生成的数据结构的大小。在另外的方 面,所存储的处理器可执行软件指令可以被配置为使处理器执行操作,使得:由第一进程对 HTML文档进行扫描以发现脚本可以包括由HTML扫描器对所述HTML文档进行扫描;以及由 第二进程推测性地执行所发现的脚本可以包括由沙盒脚本执行引擎推测性地执行所发现 的脚本。
【附图说明】
[0021] 并入本文且构成该说明书的部分的附图示出了本发明的示例性方面。附图以及上 面给出的一般描述和下面给出的详细描述一起用于解释本发明的特征,而非限制所公开的 方面。
[0022] 图1是示出了可以在实现各个方面的计算设备中使用的示例性片上系统(SOC)架 构的部件框图。
[0023] 图2是示出了可以用于实现各个方面的示例性多核处理器架构的功能框图。
[0024] 图3A是示出了用于渲染HTML文档的一方面的浏览器方法的过程流图。
[0025] 图3B是示出了一方面的浏览器系统中的示例逻辑部件、信息流、操作和转换的功 能和过程流图。
[0026] 图4是示出了一方面的浏览器系统中的示例逻辑部件、功能部件、信息流和子系 统的功能框图。
[0027] 图5是根据一方面示出了实现并行的浏览器基础结构的一方面的浏览器系统的 功能框图。
[0028] 图6是示出了在页面加载/渲染操作之前处理HTML文档以发现和预提取资源的 一方面的浏览器方法的过程流图。
[0029] 图7A是示出了使用推测技术和启发法来预测对文档资源的使用的一方面的浏览 器方法的过程流图。
[0030] 图7B是示出了并行地来推测性地预提取资源的一方面的浏览器方法的过程流 图。
[0031] 图7C是示出了并行地预处理脚本的一方面的浏览器方法的过程流图。
[0032] 图8是示出了处理预提取的资源的一方面的浏览器方法的过程流图。
[0033] 图9是示出了适合于与各个方面一起使用的CSS引擎中的示例性功能部件的功能 框图。
[0034] 图10是示出了用于并行地在多个节点上执行规则匹配和级联操作的一方面的样 式化方法的过程流图。
[0035] 图IlA是适合于在各个方面中使用的示例文档对象模型(DOM)树的示图。
[0036] 图IlB是与图IlA中所示的DOM树相对应的任务有向无环图(DAG)的示图。
[0037] 图12是适合于与各个方面一起使用的示例性移动设备的部件框图。
[0038] 图13是适合于与各个方面一起使用的示例性服务器的部件框图。
[0039] 图14是适合于实现各个方面的膝上型计算机的部件框图。
【具体实施方式】
[0040] 将参照附图详细描述各个方面。在可能的情况下,将贯穿全部附图使用相同的附 图标记来指代相同或相似的部分。对特定例子和实施例的引用是出于说明的目的,而非旨 在限制本发明或权利要求的范围。
[0041] 网络浏览器是实现多种标准的复杂的软件应用,需要支持传统行为,并且是高度 动态且交互式的。通常网络浏览器设计者的目标在于实现以下各项的最佳混合:页面加载 的快速响应时间(即使在存在长网络时延的情况下)、高性能(例如,以能够实现网络应用 的交互性)、以及高用户接口响应性以提供良好的用户体验。
[0042] 各个方面提供了网络浏览器、浏览器方法和浏览器系统,所述网络浏览器、浏览器 方法和浏览器系统被配置为通过利用由现代多处理器移动设备架构使用进程的沙盒执行 实现的并发性/并行性,经由对推测性的资源预提取的使用,来实现快速响应时间、高性能 和高用户接口响应性。
[0043] 现代网络文档(例如,HTML页面、HTML文档等)可以引用大量的外部资源,并且 每个所引用的外部资源可以包括对其它外部资源的引用。例如,HTML文档通常包括对图 像、音频、级联样式表(CSS)和JavaScript?的引用,并且所引用的资源(例如,CSS、音频、 JavaScript? )还可以包括对额外的外部资源(例如,图像、音频等)的引用。通常,并非 所有的所引用的外部资源是在移动设备的电子显示器上适当地渲染网页所需要的(或者 甚至是所使用的)。
[0044] 软件开发者越来越多地使用脚本(例如,Javascript code? )来动态地确定特 定的应用-设备组合(例如,网络浏览器-移动设备组合)将需要的资源。例如,脚本可以 评估与客户端应用(例如,浏览器)和计算设备相关的各个因素,以识别要下载的资源。本 质上,这样的脚本可以基于所评估的因素来针对资源(例如,图像、CSS、其它JavaScript? 等)动态地构建URL。因此,HTML文档可能需要如下所述的资源:这些资源在HTML文档中 没有被明确标识,并且仅可以通过执行包括在HTML文档中的JavaScript?代码来确定。
[0045] JavaScript?代码可以改变其包含HTML(以及HTML代码本身)的状态、行为和/ 或表示,并且通常要求HTML解析器顺序地和/或通过遵循在HTML规范中定义的排序规则, 来执行遇到的JavaScript?代码(或脚本)。例如,当HTML解析器遇到脚本标签(即,用 于定义诸如JavaScript?脚本之类的客户端侧脚本的〈script〉标签)时,在HTML解析器 可以继续解析HTML文档的剩余部分之前,其必须等待脚本被下载并且被执行。因此,可以 在JavaScript?脚本(S卩,在〈script〉标签内的JavaScript?代码)的执行内将所有资 源请求串行化(即,要求一个接一个地被执行)。另外,对于HTML文档扫描操作来说,可能 更加难以静态地预测正确渲染网页将需要的资源。
[0046] 各个方面包括如下所述的方法和浏览器:通过在沙盒JavaScript?引擎中推测 性地预提取资源以发现并下载在HTML文档中没有明确请求的资源,来克服现有解决方案 的这些限制和其它限制。可以与其它浏览器操作(例如,HTML解析)和其它资源请求的执 行并行地执行对资源的下载。
[0047] 在一方面,沙盒JavaScript?引擎可以扫描JavaScript代码,并且仅执行与发现 外部资源最相关的代码的选择部分和/或选择操作。因为该沙盒执行和扫描操作仅涉及发 现资源,所述资源为执行脚本以产生网页时所述脚本所请求的,所以扫描操作并不受HTML 规范规则约束,并且不必运行/执行所有的所遇到的代码。此外,通过不完全执行所有遇到 的代码,沙盒JavaScript?引擎可以快速地执行JavaScript扫描操作。
[0048] 在一方面,沙盒JavaScript?引擎可以应用启发法来对JavaScript扫描操作进 一步加速。通过举例的方式,这样的启发法可以包括限制总执行时间(例如,每个脚本或操 作耗费最多IOms等)、循环迭代的数量(例如,仅处理循环的前10个迭代等)、递归深度、 支持的特征、抽象解释等。
[0049] 各个方面的方法和浏览器可以修改浏览器客户端与JavaScript?引擎之间的应 用编程接口(API)。通常,脚本引擎(例如,JavaScript?引擎)提供对浏览器API(即,使 得脚本能够调用浏览器操作的接口)的绑定(即,用于映射语言的API),以调用浏览器操 作(例如,操纵DOM,访问网络等)。各个方面可以监测浏览器API资源请求,并且修改绑定 (或者为脚本引擎提供单独的绑定集),以使得资源请求被重定向到不同的浏览器部件(例 如,预提取器部件)。以这种方式,可以将资源请求和/或收集的信息直接传递给浏览器部 件(预提取器),以用于进一步处理。
[0050] 本文中使用"示例性"一词意指"用作例子、实例或说明"。本文中被描述为"示例 性"的任何实施例不必须被解释为比其它实施例更优选或更具优势。
[0051] 本文中可互换地使用术语"移动设备"和"计算设备",以指代以下各项中的任一项 或全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算 机、平板计算机、智能本、掌上型计算机、无线电子邮件接收器、具有多媒体互联网功能的蜂 窝电话、无线游戏控制器以及包括可编程处理器和存储器的类似的个人电子设备。尽管各 个方面在可能具有受限的处理功率的移动设备(例如,蜂窝电话)中是特别有用的,但是这 些方面在执行使用动态、脚本和/或标记语言编写的脚本和/或应用的任何计算设备中是 一般有用的。
[0052] 本文中使用的术语"片上系统"(SOC)用于指代包含在单个衬底上集成的多个资源 和/或处理器的单个集成电路(IC)芯片。单个SOC可以包含用于数字、模拟、混合信号和 射频功能的电路。单个SOC还可以包括任意数量的通用处理器和/或专用处理器(数字信 号处理器、调制解调器处理器、视频处理器等)、存储块(例如,R〇M、RAM、闪存等)以及资源 (例如,定时器、调压器、振荡器等)。SOC还可以包括用于控制集成资源和处理器以及用于 控制外围设备的软件。
[0053] 本文中使用的术语"多核处理器"用于指代包含两个或更多的独立处理核(例如, (PU核)的单个集成电路(IC)芯片或芯片封装,其中,处理核被配置为读取并执行程序指 令。SOC可以包括多个多核处理器,并且SOC中的每个处理器可以被称为核。本文中使用的 术语"多处理器"用于指代包括两个或更多处理单元的系统或设备,其中,处理单元被配置 为读取并执行程序指令。
[0054] 如本申请中所使用的,术语"部件"、"模块"、"系统"、"引擎"、"管理器"等旨在包括 计算机相关实体,例如但不限于,被配置为执行特定操作或功能的硬件、固件、硬件和软件 的组合、软件、或运行中的软件。例如,部件可以是但不限于,处理器上运行的进程、处理器、 对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,计算设备上运行的应 用和计算设备均可以被称为部件。一个或多个部件可以位于进程和/或执行的线程内,以 及一个部件可以位于一个处理器或核上和/或分布在两个或更多处理器或核之间。另外, 可以通过其上存储有各种指令和/或数据结构的各种非暂时性计算机可读介质来执行这 些部件。部件可以通过本地和/或远程进程、函数或过程调用、电子信号、数据分组、存储器 读/写以及与其它已知的计算机、处理器和/或进程相关的通信方法的方式来进行通信。
[0055] 在本申请中,术语"应用编程接口"以及其缩略语"API ",一般被用来指代可以由第 一软件部件用于与第二软件部件进行通信的任何软件接口。API可以包括用于例程、过程、 函数、方法、数据结构、对象类和变量的规范。API还可以包括用于将API映射到另一高级编 程语言的特性(语法或语义)的工具。这样的工具和/或映射本身可以是API,并且被称为 "语言绑定"或"绑定"。
[0056] 在本申请中,术语"标记语言"一般被用来指代用于注释文本使得处理器可以在语 法上将注释与文本区分开的任何编程语言和/或系统。标记语言的例子包括Scr
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1