用于提供网页的二进制表示的系统和方法

文档序号:6533290阅读:470来源:国知局
用于提供网页的二进制表示的系统和方法
【专利摘要】用于提供网页的二进制表示的系统100和200与方法300和400。服务器102可以编译诸如超文本标记语言(“HTML”)文档的源页面202,以创建源页面204的编译表示。编译表示的创建可以包括:产生用于与源页面相关联的内容206的文档对象模型(“DOM”)205。该编译的页面可以作为随机访问文件或纯文本被发送218到客户端104,其中,以不是串表示208的一个或多个数据类型来编码数据。客户端104可以接收编译页面,并且直接地作为用于页面的DOM?212来加载编译页面,不需要解析HTML文本串。服务器102和客户端104可以例如通过交换或验证与页面216相关联的编译器词典来协调编译页面的数据格式。
【专利说明】用于提供网页的二进制表示的系统和方法
[0001]对于相关申请的交叉引用
[0002]本申请要求在2012年3月13日提交的美国临时专利申请N0.61/610,096的申请日的权益,其公开由此通过引用被并入在此。

【背景技术】
[0003]万维网的出现已经将比以往更多的信息置于当今用户的指尖处。各种网站迎合几乎每种需要和兴趣,提供对参考信息、商业和金融文档与社交网络等的访问。广泛的宽带因特网接入提供了比以往更快的对于这些站点的访问。
[0004]然而,虽然当今的高速因特网服务那么快,但是浏览web的行为不是瞬时的。当用户选择在页面上的链接或在文本域中输入统一资源定位符(URL)时,在从主机请求数据、向客户端发送数据和在浏览器中渲染数据时存在延迟。通常,作为超文本标记语言(HTML)文档来提供网页。这些文档由文本串构成,该文本串限定了相关联的网页的结构和内容。为了利用文本串来显示网页,诸如web浏览器的在客户端上执行的软件解析和处理该文本串。这些文本串的解析和处理需要时间和客户端的系统资源。在诸如移动装置的、具有很少的系统资源致力于web内容的显示的电子装置上,这些解析和处理步骤可能引起在相关联的web内容的显示上的显著延迟。作为文本串发送HTML内容也可能是低效的,因为串数据类型可能要求比替选品更多的数据和更大的存储器占用。


【发明内容】

[0005]描述了用于提供网页的二进制表示的系统和方法。服务器可以编译诸如超文本标记语言(“HTML”)文档的源页面以创建源页面的编译表示。编译表示的创建可以包括产生用于与源页面相关联的内容的文档对象模型(“D0M”)。所编译的页面可以作为随机访问文件或纯文本被发送到客户端,其中,以非串表示的一个或多个数据类型来编码数据。客户端可以接收编译页面,并且将该编译的页面直接地作为用于该页面的DOM加载,而不需要解析HTML文本串。服务器和客户端可以例如通过交换或验证与页面相关联的编译器词典来协调(reconcile)编译页面的数据格式。
[0006]本公开的方面提供了一种用于提供网页的二进制表示的计算机实现的方法。所述方法可以包括:使用处理器来解析网页源文档,以识别一个或多个页面元素,所述源文档包括限定网页的文本,其中,所述源文档是以超文本标记语言(“HTML”)来编写的;利用所述处理器来使用所识别的一个或多个页面元素而产生与网页的文档对象模型结构对应的二进制表示,所述第一二进制表示包括所述一个或多个页面元素向非纯文本的格式的转换;以及提供所述二进制表示,使得响应于来自客户端装置的请求,向所述客户端装置提供所述二进制表示,以渲染所述网页而不用解析所述网页源文档。可以使用二进制表示词典来产生所述二进制表示,所述二进制表示词典限定与所述一个或多个页面元素中的每一个对应的至少一个二进制指令。所述二进制表示包括用于识别所述二进制表示词典的版本的数据。所述二进制表示可以包括树结构,并且所述一个或多个页面元素中的每一个可以是在所述树结构中的节点。所述第一二进制表示可以进一步包括与所述网页相关联的内容。所述二进制表示可以进一步包括与所述网页相关联的层叠样式表信息。所述二进制表示可以与版本标识符相关联。所述方法可以包括:确定自从使用所述版本标识符产生所述二进制表示起所述网页源文档是否已经改变;并且如果自从产生了所述二进制表示起所述网页源文档已经改变,则使用所述网页源文档来产生新的二进制表示。所述版本标识符可以是时间戳或散列值中的至少一个。
[0007]本公开的方面提供了一种用于处理以二进制表示接收的网页的计算机实现的方法。所述方法可以包括:接收以二进制表示的网页,所述二进制表示限定了所述网页的文档对象模型,所述文档对象模型将一个或多个超文本标记语言(“HTML”)页面元素限定为包括至少一对整数值和与所述整数值相关联的一个或多个属性;以及使用处理器通过处理所述二进制表示来渲染所述网页,所述网页的结构由所述文档对象模型限定。所述方法可以进一步包括:协调在渲染所述网页中使用的第一二进制表示词典版本与在编译所述网页中使用的第二二进制表示词典版本。所述方法可以进一步包括:仅当所述第一二进制表示词典版本大于或等于所述第二二进制表示词典版本时,渲染所述网页。所述方法可以包括:当所述第一二进制表示词典版本不大于或等于所述第二二进制表示词典版本时,请求更新的二进制表示词典。所述渲染可以由在所述处理器上执行的浏览器布局引擎执行。所述方法可以进一步包括:响应于用户的对于观看HTML源文档的请求而请求所述网页的所述HTML源文档。所述二进制表示可以包括树结构,所述树结构限定所述文档对象模型和所述一个或多个页面元素,递增地接收所述二进制表示,并且所述方法可以进一步包括:当渲染每一个页面元素时,请求与所述一个或多个页面元素对应的数据。
[0008]本公开的方面提供了一种用于提供网页的二进制表示的处理系统。所述处理系统可以包括存储器,用于存储网页源文档和所述网页源文档的二进制表示;耦合到所述存储器的至少一个处理器。所述处理器可以被配置为:解析所述网页源文档以识别一个或多个页面元素,所述网页源文档包括限定网页的文本,其中,所述源文档是以超文本标记语言(“HTML”)来编写的;使用所识别的一个或多个页面元素来产生与网页的文档对象模型对应的二进制表示,所述二进制表示包括所述一个或多个页面元素向非纯文本的格式的转换;以及提供所述二进制表示,使得响应于来自客户端装置的请求,可以向所述客户端装置提供所述二进制表示,以渲染所述网页而不用解析所述网页源文档。可以使用二进制表示词典来产生所述二进制表示,所述二进制表示词典可以限定与所述一个或多个页面元素中的每一个对应的至少一个二进制指令。所述二进制表示可以包括用于识别所述二进制表示词典的版本的数据。所述二进制表示可以包括树结构,并且所述一个或多个页面元素中的每一个是在所述树结构中的节点。所述二进制表示可以包括所述网页的内容。所述二进制表示可以包括与所述网页相关联的层叠样式表信息。所述二进制表示可以与版本标识符相关联,并且所述方法可以包括:确定自从使用所述版本标识符产生所述第一二进制表示起所述网页源文档是否已经改变;并且如果自从产生了所述第一二进制表示起所述网页源文档已经改变,则使用所述网页源文档来产生新的二进制表示。所述版本标识符可以是时间戳或散列值中的至少一个。
[0009]本公开的方面提供了一种非瞬时计算机可读存储介质,包括指令,所述指令在被处理器执行时使得所述处理器执行一种方法。所述方法可以包括:接收以二进制表示的网页,所述二进制表示限定所述网页的文档对象模型,所述文档对象模型将一个或多个超文本标记语言(“HTML”)页面元素限定为包括至少一对整数值和与所述整数值相关联的一个或多个属性;并且使用处理器通过处理所述二进制表示来渲染所述网页,所述网页的结构由被所述文档对象模型限定。所述指令可以进一步包括:协调在渲染所述网页中使用的第一二进制表示词典版本与在编译所述网页中使用的第二二进制表示词典版本。所述指令可以进一步包括:仅当所述第一二进制表示词典版本大于或等于所述第二二进制表示词典版本时,渲染所述网页。所述指令可以包括:当所述第一二进制表示词典版本不大于或等于所述第二二进制表示词典版本时,请求更新的二进制表示词典。所述渲染可以由在所述处理器上执行的浏览器布局引擎执行。所述指令可以包括:响应于用户的对于观看HTML源文档的请求而请求所述网页的所述HTML源文档。所述二进制表示可以包括树结构,所述树结构限定所述文档对象模型和所述一个或多个页面元素,递增地接收所述二进制表示,并且所述指令可以进一步包括:当渲染每一个页面元素时,请求与所述一个或多个页面元素对应的数据。

【专利附图】

【附图说明】
[0010]图1是描述本公开的方面的一种用于提供网页的二进制表示的系统的示例的系统图。
[0011]图2是根据本公开的方面的在客户端和服务器之间的数据流的示例的图示。
[0012]图3是根据本发明的方面的一种用于创建网页的二进制表示的方法的示例的流程图。
[0013]图4是根据本发明的方面的一种用于使用网页的二进制表示来访问网页的方法的示例的流程图。

【具体实施方式】
[0014]当参考下面的优选实施例的说明和附图考虑时,可以明白本公开的方面、特征和优点。下面的说明不限制本公开;而是,范围由所附的权利要求和等同物限定。虽然在附图中将根据示例实施例的特定过程示出为以线性方式出现的,但是这不是要求,除非在此明确地声明。可以以不同的顺序或同时地执行不同的过程。
[0015]本公开描述了用于提供网页的二进制表示的系统和方法。本公开的方面提供了直接过程,用于加速web内容的加载时间并且减小在客户端可以渲染该网页内容之前从服务器向客户端发送的数据量。系统的元件涉及将源网页编译为编译页面,使得客户端可以直接地加载编译页面,而不需要解析超文本标记语言(“HTML”)文本数据。
[0016]服务器可以托管web内容,并且客户端装置可以从服务器请求web内容。服务器可以响应于客户端请求而提供web内容的编译版本。该编译版本可以是网页的二进制表示,诸如以二进制格式而不是以通常提供HTML页面的文本串格式表示网页的结构和/或内容的所产生的D0M。以该格式来提供web内容允许客户端装置更快的处理,因为客户端装置可以不解析HTML文档发送的文本数据来渲染web内容。
[0017]图1是描述根据本公开的方面的用于提供网页的二进制表示的系统100的示例的系统图。如图1中所示,这样的系统的示例包括服务器102,服务器102经由网络138耦合到客户端104。服务器102可以可操作用于托管web内容,将web内容编译为二进制表示,并且向客户端104提供web内容和/或二进制表示。服务器102可以是计算装置,诸如膝上型计算机、台式计算机、上网本、机架安装的服务器、智能电话、蜂窝电话、平板计算机或包含用于执行指令的可编程硬件或软件的任何其他装置。虽然本公开的方面总体上涉及便携装置,但是服务器102可以被实现为具有便携和非便携组件(例如,用于收集位置信息的在具有移动接口的机架安装的服务器上执行的软件)的多个装置。服务器102可以包括处理器106、存储器108和通常在通用计算机中存在的其他组件。处理器106可以是能够执行计算机代码的任何处理器。替选地,处理器106可以是专用控制器,诸如专用集成电路(“ASIC”)或其他处理装置。
[0018]服务器102可以具有通常与无线移动装置相结合地使用的所有组件,诸如中央处理单元(“CPU”)、存储数据和指令的存储器(例如,RAM和ROM)、电子显示器(例如,液晶显示器(“LCD”)屏幕或触摸屏)、用户输入(例如,键盘、触摸屏或麦克风)、相机、扬声器、网络接口组件和用于将这些元件彼此连接的全部组件。这些组件中的一些或全部可以全部被内部存储在例如由塑料外壳和LCD屏幕限定的壳体的同一壳体内。
[0019]存储器108可以存储由处理器106能够访问的信息,该信息包括可以被处理器106执行的指令110和数据112。存储器108可以是可操作用于存储能够被处理器106访问的信息的任何类型的存储器,包括非瞬时计算机可读介质或存储可以借助于电子装置读取的数据的其他介质,诸如硬盘驱动器、存储卡、只读存储器(“ROM”)、随机存取存储器(“RAM”)、数字通用盘(“DVD”)或其他光盘以及其他能够写入和只读的存储器。该系统和方法可以包括上述部分的不同组合,由此,在不同类型的介质上存储指令和数据的不同部分。
[0020]指令110可以是要被处理器106直接(诸如机器码)或间接(诸如脚本)执行的任何指令集合。例如,指令110可以在计算机可读介质上作为计算机代码存储。在这一点上,可以在此可交换地使用术语“指令”和“程序”。可以以用于由处理器106直接处理的对象码格式或以包括脚本或根据需要解释或预先编译的独立源代码模块的集合的任何其他计算机语言来存储指令110。
[0021]指令110可以包括托管应用114,用于向客户端装置102提供web内容,诸如源页面118或编译页面120。托管应用114可以是能够提供这样的内容的任何应用,诸如APACHE、NGINX 或 INTERNET INFORMAT1N SERVICES(因特网信息服务)等。例如,托管应用114可以可操作用于接收网络内容请求,诸如超文本传送协议(“HTTP”)GET请求,并且响应于该请求而提供内容。
[0022]指令110可以进一步包括页面编译器116。页面编译器116可以将源页面118的HTML文本转换为在编译页面120中存储的编译数据集。例如,页面编译器116可以解析源页面118的文本以确定页面的结构和内容。页面编译器116可以将该结构和内容的元素转换为除了在源页面118内包含的文本数据之外的数据格式。编译页面120的格式可以由编译器词典122指定。例如,编译器词典122可以指定页面结构的特定元素(例如,特定页面属性、标签或元素标识符)被存储为特定数据类型(例如,整数、向量、映射、串)。页面编译器116可以进一步将编译页面120与特定时间或日期戳相关联,以指示何时产生了编译页面120。页面编译器116可以创建每一个页面的多个二进制表示。例如,页面编译器116可以产生:页面的第一未压缩的二进制表示,其最小化渲染页面必须进行的处理量;以及页面的第二压缩的二进制表示,其压缩数据以进一步减小文件大小,但是要求浏览器的更多处理来渲染。
[0023]页面编译器116也可以将编译页面与版本标识符相关联,版本标识符可以识别用于产生编译页面的编译器词典122的版本。页面编译器116可以被实现为独立的应用,或者它可以被集成到托管应用114内。例如,页面编译器116可以被集成到托管应用114内,以当web内容被托管应用114加载、访问和托管时动态地验证该web内容,并且在提供替选的编译器词典122的情况下重建编译页面120。当提供web内容时,页面编译器116可以验证要提供的内容可以在托管之前被转换为编译页面120。在响应于来自客户端的请求而动态地产生编译页面120的情况下,可以零碎地向客户端提供编译页面120,并且如其被编译地交织和提供结构和内容。
[0024]处理器106可以根据指令110来检索、存储或修改数据112。例如,虽然该架构不被任何特定数据结构限制,但是该数据可以在计算机寄存器中被存储在关系数据库中作为具有多个不同字段和记录的表格、在可扩展标记语言(“XML”)文档中或在纯文本中。也可以以诸如但是不限于二进制值或统一码的任何计算机可读格式来格式化该数据。进一步仅举例而言,图像数据可以被存储为位图,该位图由根据压缩或未压缩、无损(例如,BMP)或有损(例如,JPEG)和基于位图或向量(例如,SVG)的格式以及用于绘制图形的计算机指令存储的像素的网格构成。该数据可以包括足以识别相关信息的任何信息,诸如数字、描述性文本、专用代码、对于在相同存储器的其他区域或不同存储器(包括其他网络位置)中存储的数据的引用或由用于计算相关数据的函数使用的信息。
[0025]数据112的部分可以包括源页面118、编译页面120和编译器词典122。源页面118可以包括用于限定web内容集合的HTML文档。该HTML文档包括文本数据集合,从其可以构造网页。虽然以文本格式存储的数据可以容易为用户读取和编辑,但是该文本必须在它可以用于创建网页之前被程序解析。
[0026]编译页面120可以是源页面118的二进制表示。可以以平台独立的数据格式来存储编译页面120。例如,可以以两个不同版本来存储编译页面120,一个版本用于小端的客户端,并且一个版本用于大端的客户端。替选地,可以以单个格式来存储编译页面120。例如,可以以小端格式来存储编译页面120,以缓解对于某些硬件配置的采用,并且明白具有大端格式的硬件配置将在接收时转换数据。
[0027]编译页面120可以具有由编译器词典122限定的特定格式。例如,编译页面120可以包括用于版本标识符的整数值、用于页面的元素的列表的向量、用于DOM的元素的树结构与用于每一个标签的映射结构和相关联的标签属性等。可以例如通过使用用于粗体或斜体文本的特定整数值或用于指示标签是超链接的特定整数值,使用整数来识别某些HTML特征和标签。
[0028]例如,编译页面可以具有下面的结构:
[0029]Vers1n:1nteger
[0030]DOM:tree<pair<Type, index〉〉
[0031]Type:Element type|Contents type
[0032]ElementList:vector<Element>
[0033]Element:pair<Tag, AttributeList>
[0034]Tag: enum[a, body, b, em, html,…]
[0035]AttributeList:map<AttributeKey, AttributeValue>
[0036]AttributeKey: string
[0037]AttributeValue:pair<string, QuoteType〉
[0038]QuoteType:enum[None, Single, Double]
[0039]ContentList:vector<Content>
[0040]Content: string
[0041]“vers1n(版本)”项可以描述所支持的一组TagId(标签标识符)(例如,客户端可能要求词典的版本 >=这个版本)。“D0M”项可以限定一般树,其可以被存储为左子右兄弟二叉树,并且然后以宽度优先顺序被写出为阵列,以最小化该树的存储器占用。客户端可以选择将树处理为用于深度优先搜索的更一般的结构。为了容易实现,该树也可以以预排序被写出,并且以空标记作为第一近似。客户端可以选择将该树处理为用于深度优先搜索的更一般的结构。“Type(类型)”字段可以指定要使用哪个表来对数据查找在树中的入口。可以向enum的尾部加上新的HTML特征,并且可以在enum中保留已经过时的标签,以保证在版本上的一致性。客户端可以选择将给定的Tagld实现为无操作(例如,将不执行操作)。有可能将一些HTML标签合并为具有伪属性的单个Tagld。例如,b、em、i和强可以全部是具有描述样式的属性的样式Id。“QuoteType”项可以识别在文档中使用的引号的类型,以便避免错误畸形的HTML。“Content”项可以识别与元素相关联的串内容。对于国际实现方式,可能重要的是,该串数据遵守HTML页面的原始编码。如此一来,可以使用UTF-8来编码该元素。如上所述,可以产生与不同的数据格式对应的多个二进制表示。不同的格式可以压缩原始HTML文件的数据以进一步减小文件大小。客户端可以指示当请求页面时应当提供哪种格式。例如,在客户端被带宽限制时(例如,在3G网络上的移动装置)的情况下,客户端可以请求页面的压缩表示,并且在客户端未被带宽限制时(例如,在W1-Fi网络上的同一移动装置)的情况下,客户端可以请求未压缩的表示。
[0042]二进制表示可以包括将不同的页面元素转换为二进制格式。例如,HTML文档包括一个或多个标签和与那些标签相关联的内容。二进制表示可以包括用于每种类型的标签的特定指令码(例如,8比特的数据)。虽然描述了 8比特的指令码(允许255个不同的标签指令类型),但是可以利用不同大小的指令码来限定更少或更多的标签。标签也可以与样式信息(例如,<em>、<b>或<a>)相关联。这些样式可以每一个与指令值相关联。该样式可以被16比特索引表示为样式表,诸如在编译器词典122中保持的表,或者可以作为编译页面120的一部分提供样式表,使得每一个编译页面可以提供独特的样式集合。每种样式可以与一种或多种颜色与字体渲染和位置信息相关联。作为二进制表示发送web内容的益处的示例,考虑下面的HTML数据:
[0043]<title>pagetitle</title>
[0044]为了将这个数据作为源页面118从服务器102向客户端104发送,服务器102将发送21字节的数据,在HTML文档中的每一个字符一个字节。替选地,作为编译的表示,页面信息可以作为8字节被如下发送:
[0045]09 09 70 61 67 65 74 69 74 6C 65
[0046]“09”可以是用于指示标签是“标题”标签的指令,“09”指示在标题中的字符的数量,并且“70 61 67 65 74 69 74 6C 65”表示文本“pagetitle”的ASCII值。可以在编译器词典122中定义与每一个标签和伴随句法相关联的值的定义。编译器词典122可以与编译页面120 —起被发送到客户端,或者服务器102和客户端104可以执行握手过程,用于验证客户端104在使用编译器词典122的适当版本来处理编译的页面。客户端104可以利用在编译页面120内嵌入的版本号来验证可以正确地处理编译页面120。
[0047]也可以在多于一个文件中提供编译页面120。例如,第一文件可以通过有页面的DOM结构,并且第二文件可以提供有与DOM元素相关联的内容(例如,与特定标签相关联的文本)。这些文件可以被服务器102单独地高速缓存和保持,使得在假定结构未改变的情况下,对于页面的内容的改变不必导致页面的结构的重新编译。
[0048]编译页面120也可以包括源页面118的样式信息。例如,源页面118可以包括被存储为层叠样式表(“CSS”)文件的样式属性集合,诸如大小、形状和颜色。该CSS文件也可以包括要被浏览器解析和处理的文本数据,并且因此可以受益于编译为二进制格式。如此一来,可以连同页面的结构和内容来提供第三“样式”文件。虽然将结构、内容和样式描述为被单独和不同地提供,但是这些元素也可以被划分为组件部分,并且以交织的格式被提供到客户端104。例如,可以在发送另外的结构元素或样式数据之前,将页面的一些结构元素连同与那些结构元素相关联的内容元素一起提供。
[0049]虽然图1在功能上将处理器106和存储器108图示为在同一方框内,但是处理器108和存储器110可以实际上包括可以或可以不被存储在同一物理壳体内的多个处理器和存储器。因此,对处理器、计算机或存储器的引用将被理解为包括对于可以或可以不并行地运行的处理器、计算机或存储器的集合的引用。
[0050]客户端104可以可操作用于从服务器102请求web内容,并且例如经由浏览器132来显示web内容。客户端104可以被与服务器102类似地配置有处理器124和存储器126。如相对于服务器102所述,存储器126可以包括指令集128和数据集130。处理器124执行指令128以控制客户端104的操作。指令128可以包括浏览器132。
[0051]浏览器132可以用于请求、接收和显示web内容,诸如编译页面120。当接收到诸如源页面118的标准HTML文档时,浏览器可以解析文档的文本,并且处理被解析的文本以产生用于页面的D0M。浏览器132可以与这个产生的DOM交互以向用户显示页面,并且允许与该页面的交互。当接收到诸如编译页面120的页面的二进制表示时,浏览器132可以将该二进制表示直接地加载到DOM内,而不必解析该页面的文本。浏览器132可以包括二进制表示处理应用134,用于解释二进制表示,并且将二进制表示的内容加载到DOM内。二进制表示处理应用134可以被直接地集成在浏览器132内,诸如在以浏览器132的最低资源加载层级处(例如,以WEBKIT,在一些常用浏览器中包括的布局引擎)或作为浏览器插件。在其中二进制表示处理应用134直接地与浏览器集成的情况下,二进制表示处理应用134可以更换在浏览器132内的DOM的先前实现,并且允许经由二进制表示处理应用134对DOM进行操纵和访问。
[0052]在一些情况下,除了编译页面120之外,客户端104也可以请求源页面118。例如,用户可能希望观看与所显示的内容相关联的页面源。浏览器132可以可操作用于响应于用户的这样的请求而从服务器102请求源页面118。
[0053]服务器102可以在网络138的第一节点处,并且客户端104可以在网络138的第二节点处。服务器102和客户端104可以可操作用于与网络的其他节点直接地或间接地进行通信。例如,客户端104可以包括移动装置,该移动装置可操作用于经由网络138与服务器102进行通信,使得服务器102使用网络138来经由客户端104向用户发送和显示web内容。服务器102也可以包括多个计算机,该计算机与网络的不同节点交换信息,以用于接收、处理和向客户端装置发送数据的目的;在该情况下,客户端104可以在除了包括服务器102的计算机的任何一个之外的网络的不同节点处。
[0054]网络138和在服务器102和客户端104之间的中间节点可以包括各种配置,并且使用各种协议,该各种协议包括因特网、万维网、内联网、虚拟专用网、本地以太网、使用专用于一个或多个公司的通信协议的专用网、蜂窝和无线网络(例如,W1-Fi)、即时消息传送、HTTP和简单邮件传送协议(“SMTP”)以及上述部分的各种组合。虽然在图1中描述了仅单个客户端装置,但是应当明白,典型的系统可以包括大量的连接的计算机。
[0055]虽然将一些功能指示为在服务器102上发生并且将其他功能指示为在客户端104上发生,但是可以通过具有单个处理器的单个计算机来实现各个方面。根据所述系统和方法的一个方面,可以在客户端104上实现在服务器102上执行的操作,并且反之亦然。
[0056]虽然当如上所述发送或接收信息时获得某些优点,但是所述系统和方法的其他方面不限于信息的发送的任何特定的方式。例如,在一些方面中,可以经由诸如光盘或便携驱动器的介质来发送信息。在其他方面,可以将信息以非电子格式发送并且手动地输入到系统内。
[0057]图2是根据本公开的方面的在客户端104和服务器102之间的数据流200的示例的图示。数据流200描述了从服务器102向客户端104发送编译的网页的过程。服务器102可操作用于托管web内容集合,并且将那个web内容编译为二进制表示。该二进制表示被发送到客户端104以渲染,使得客户端不必解析以低效格式存储的数据,诸如纯文本。网页可以因此通过下述方式被更快地向用户显示:以本原格式来处理网页内容,而不用解析或转换文档的文本。
[0058]服务器102托管由HTML文档202表示的网页。HTML文档202包含描述网页的结构和内容的文本信息。页面的结构和内容被存储为由纯文本表示的一系列标签。
[0059]在行为214处,HTML文档202被编译为页面DOM 204和内容集206的二进制表示。可以通过下述方式来编译HTML文档202:解析文本以识别在文档中包含的标签、样式和内容等。该解析的文本可以被转换为二进制表示204,其中,不同的页面元素对应于特定的二进制值或指令。二进制表示204可以包括DOM 205和内容集206。可以在如上所述的编译器词典中枚举在页面元素和二进制值之间的关系(参见图1)。
[0060]客户端104可以在行为216处向服务器102发送对于网页的请求。该请求可以是HTTP GET请求或请求HTML文档的任何其他方法。客户端104可以在该请求中指示客户端104能够支持web内容的二进制表示。在该请求中的该标签可以引导服务器102使用二进制表示204而不是标准HTML文档来响应。服务器102可以通过向客户端104提供二进制表示204来响应于HTTP GET请求,其中,其被存储为二进制表示208,包括DOM 209和内容集210。页面的二进制格式允许客户端104处理页面DOM 209,而不必解析文本以确定页面的结构和内容。因此,客户端104可以作为页面的结构直接地向存储器内加载包括页面DOM209的二进制表示208。而没有中间的文本解析过程。
[0061]与DOM 209相关联的内容210可以作为相同的二进制表示的一部分或在单独的请求/响应行为中在客户端104和服务器102之间传输。例如,页面DOM 208可以包含标签集和格式化信息,其限定页面的结构,但是那些标签的实际内容可能未被客户端104接收至IJ。如此一来,客户端104可以从服务器102请求页面内容206。服务器102可以在从服务器102接收到请求时评估页面应当在哪里被重新编译为新的二进制表示204。在其中重新编译页面的情况下,服务器102可以当重新编译个体页面元素时发送它们,而不是等待整个页面被转换为二进制表示。响应于初始请求而被发送到客户端的响应报头可以指示编译是可能的(即,在开始重新编译之前未出现验证错误)。响应于接收到适当的响应报头,客户端可以正常地渲染,并且在页面中的脚本可以通常地操纵D0M,而不需要如对于传统的HTML文档执行的、客户端将接收的数据变换为单独的内部表示。
[0062]在行为220处,客户端104可以利用二进制表示208来在浏览器中渲染网页,以提供渲染的网页212。
[0063]图3是根据本公开的方面的用于创建网页的二进制表示的方法300的示例的流程图。方法300可操作用于将文本HTML文档转换为二进制表示,使得web浏览器可以解释该二进制表示以渲染与HTML文档相关联的网页。方法300可以被诸如如上所述的服务器102 (参见图102)或可操作用于使用处理器执行指令的任何计算装置的服务器执行。
[0064]在行为302处,验证HTML文档以确保可以将该文档处理为二进制表示。例如,编译器应用可以识别在HTML文档中包括的标签,以确保每一个标签与在编译器词典中的特定二进制值相关联。在一些情况下,可以将HTML文档的部分转换为二进制表示,并且如果某些标签或内容未被包含在该词典内,则可以不将其部分如此进行。例如,如果未根据W3C标准而良好地形成HTML文档,则不可能创建该文档的二进制表示。当接收到HTML文档时可以执行验证检查,以确保当请求该文档时,它可以被正确地转换为二进制表示。
[0065]在行为304处,解析HTML文档以识别描述与该HTML文档相关联的页面的信息。例如,可以在页面内识别每一个HTML标签、样式和相关联的内容,以编译为二进制表示。解析过程可以利用编译器词典来识别页面的特定元素。所识别的页面元素可以用于创建在二进制表示中的页面结构。
[0066]在行为306处,创建与HTML文档相关联的页面的二进制表示。在行为304处识别的页面元素可以每一个与特定的指令码或二进制值相关联。这些指令码可以以下述方式被输入在二进制表示中:它们可以被客户端读取和处理以重建网页,而不必从HTML文档解析原始的HTML文本。也可以在这个过程期间压缩二进制表示,虽然压缩可能不在所有情况下最佳,因为当读取二进制表示时需要解压缩该表示。因此可以利用压缩来减小在要求在客户端侧上的另外的处理时发送的数据量,或者,可以将二进制表示未压缩地发送以最小化由客户端进行的处理量。如上所述(参见图1),可以对于给定的HTML文档产生多个二进制表示。例如,第一二进制表示可以最小化渲染时间(例如,未压缩的数据),而另一个二进制表示可以压缩数据以进一步减小文档大小。
[0067]可以响应于客户端对于与HTML内容相关联的网页的请求而产生二进制表示,或者可以在该请求之前产生该二进制表示。服务器102可以周期地产生所托管的HTML文档的二进制表示,以确保该二进制表示在来自客户端的请求时可立即用于发送到客户端,或者,服务器102可以根据需要来产生二进制表示。
[0068]在行为308处,存储二进制表示以发送到客户端。也可以与版本标识符一起存储二进制表示。版本标识符可以识别二进制表示的某些方面。例如,版本标识符可以用于识别用于创建二进制表示的源HTML文档、创建二进制表示的日期或时间和/或用于创建二进制表示的编译器词典的版本。版本标识符可以用于确定是否应当重建二进制表示(例如,如果版本标识符指示在超过I天、I星期或I月之前创建了二进制表示,则应当重建它)。
[0069]在行为310处,可以检测在HTML文档中的改变。当HTML文档改变时,可能需要重新编译该文档以产生新的二进制表示或者改变所存储的二进制表示。例如,方法300可以监视在源HTML文档中的时间戳、校验和或文件散列(例如,MD5校验和)中的改变,并且当发生该改变时启动HTML文档的重新编译。如果检测到改变,则方法300返回到行为304以创建新的二进制表示。否则,方法300结束。
[0070]图4是根据本公开的方面的用于使用网页的二进制表示来访问网页的方法400的示例的流程图。为了处理在二进制表示中编码的网页,接收该页面的客户端可能需要确定响应于客户端的请求而提供的页面未以标准文本格式被编码。例如,客户端可以被编程或配置为识别服务器已经提供了在二进制表示中编码的网页,并且应当相应地处理页面。月艮务器可以经由特殊消息指示以特定格式提供了那个页面,或者,客户端可以识别未以文本格式编码所接收的页面。客户端也可以使用编译器词典来确定所接收的二进制表示的格式,该编译器词典指示哪些指令码与哪些页面元素相关联。客户端可以进一步请求二进制表示的特定版本。例如,如果客户端被带宽限制,则该客户端可以请求网页的压缩版本,或者如果客户端未被带宽限制,则该客户端可以请求未压缩的表示。客户端可以经由与服务器的协调过程来确定要使用哪个编译器词典。客户端可以使用二进制表示来创建页面的D0M,而不必从HTML文档解析文本,因此减少了在客户端渲染页面之前由客户端执行的处理量。
[0071]在行为401处,进行关于客户端是否被带宽限制的确定。例如,如上所述(参见图1),客户端可以是移动装置,其可以使用3G和W1-Fi两者来访问网络。当客户端可以仅访问3G网络时,该客户端可能希望因为使用网络的更慢的可用速度和/或增加的成本而限制所使用的带宽量。因此,客户端可以请求web内容的更小、压缩的二进制表示。在客户端未被带宽限制的情况下(例如,经由W1-Fi连接),客户端可以请求未压缩的二进制表示,以减少用于在浏览器中渲染页面所需的处理量。虽然描述了带宽限制情况以说明其中不同的二进制表示适当的情况,但是其他因素也可能影响所请求的表示的类型(例如,可用系统资源、浏览器能力、电池水平、页面的类型等)。例如,在未限制装置电池电力的情况下,该装置可以请求更复杂的表示(例如,压缩的表示),因为不要求该装置处理器在节能模式中运行。也可以使用因素的组合,例如通过当带宽被限制并且该装置依赖于电池电力来运行时请求较不复杂(例如,未压缩)的表不。
[0072]在行为402和403处,请求页面。所请求的页面的版本可能取决于在行为401处是否确定了客户端被带宽限制。在客户端未被带宽限制的情况下,可以在行为402处请求页面的未压缩版本。在客户端被带宽限制的情况下,可以在行为403处请求页面的压缩版本。虽然所描述的两种类型的表示涉及是否压缩了页面,但是也可以适当地使用二进制表示的其他格式和版本(例如,不同的编译器词典版本、不同的数据编码格式、是否包括其他产生和得出的页面元素等)。例如,客户端104可以向托管网页的服务器102发送HTTP GET请求。客户端104可以例如通过下述方式来明确地请求网页的二进制表示:发出特殊请求命令,该命令指示客户端能够处理页面的二进制表示。在一些方面,用户能够将客户端配置为确定是否请求网页的二进制表示或标准HTML文档。客户端104可以在对于服务器102的初始请求中包括标记,以指示客户端104能够处理网页的二进制表示。服务器102可以使用在响应报头中的标记来响应于客户端102。客户端102也可以通过调查文件的前几个字节来识别有效的HTML/编译的HTML。客户端102也可以请求使用编译器词典的特定版本(例如,客户端比刀刃更旧)。如此一来,服务器102可以被配置为支持更旧的版本。如果请求不同的版本,则服务器102可以本地存储给定HTML文件的多个编译的版本。
[0073]在行为404处,接收网页的二进制表示。可以从诸如如上所述(参见图1和3)的源网页产生二进制表示。可以向二进制表示提供特定标记或标识符,以向客户端指示以二进制表示中提供了该网页。
[0074]在行为406处,客户端可以协调用于产生网页的二进制表示的编译器词典的版本。编译器词典可以确定哪些二进制指令值对应于特定页面元素。通过识别在二进制表示中的特定版本,可以在客户端和服务器之间协调编译器词典。替选地,客户端和服务器可以执行握手过程以验证编译器词典的版本。服务器可以向客户端发送编译器词典。编译器词典的发送可以自发地发生(例如,服务器不验证客户端在发送之前没有正确的版本),或者,编译器词典的发送可以在验证客户端没有正确的版本后发生。客户端可以从在编译页面中嵌入的版本标识符来确定版本,并且如果客户端没有正确的版本则请求编译器词典的更新的版本。可以提供编译器词典使得该词典的更新版本与使用较旧版本编码的网页兼容。
[0075]在行为408处,使用二进制表示来加载网页。例如,由二进制指令限定的页面的元素可以被加载到与页面相关联的DOM内。如上所述,可以通过与浏览器一起加载的浏览器插件来处理二进制表示,或者浏览器可以将二进制表示的处理并入浏览器的布局引擎内。可以从使用布局引擎的集成获得某些优点,因为直接的集成可以允许以较少的转换步骤来显示与二进制表示相关联的页面。
[0076]加载页面的过程可以包括在浏览器中作为DOM创建页面结构。在加载操作期间,浏览器可以执行另外的请求操作以请求在二进制表示中限定的内容。例如,浏览器可以识别用于识别页面的元素的、在二进制表示中的树结构,并且从服务器请求那些元素。这些所请求的元素也可以作为二进制表示被提供。例如,如上所述(参见图1和2),可以将页面的元素分离为页面结构、页面内容和页面样式的二进制表示,并且在单独的数据元素中提供到客户端。
[0077]在行为410处,使用二进制表示或由客户端接收的表示来渲染页面。在渲染过程期间,处理所接收的二进制表示以确定应如何在web浏览器中显示页面。虽然渲染过程涉及准备要显示的网页,但是可能不在浏览器中实际显示页面。例如,可以在后台浏览器实例中加载网页,或者可以在相对于用户隐藏的浏览器实例中预渲染网页。
[0078]如上所述的所示方法的阶段不意欲是限制性的。该方法的功能可以在比所示的更少或更大数量的阶段中存在,并且即使对于所述方法,事件的具体顺序可以与在附图中所示的不同,并且包括另外的阶段或省略所示的阶段。
[0079]如上所述的系统和方法有益地提供了用于以快速的有效的方式来提供web内容的直接方法和系统。通过在发送到客户端之前将HTML文档转换为二进制表示,可以更快地显示相关联的页面,并且同时消耗较少的带宽。虽然这样的表示不能被人立即读取,也可以通过允许原始源页面的同时或根据需要的发送来保持用于提供页面源的遗传支持。二进制表示需要浏览器的较少的处理,因为浏览器不必将整个文本文档解析为机器可读指令。二进制表示也可以直接地再现DOM,使得浏览器可以在也保持依赖于DOM的操纵的组件(例如,JAVASCRIPT)的功能的同时立即显示DOM。
[0080]因为在不偏离由权利要求限定的本公开的情况下可以利用如上所述的特征的这些和其他变化和组合,应当通过例示而不是通过限制由权利要求限定的本公开来看待实施例的上面的描述。也可以明白,本公开的示例的提供(以及表述为“诸如”、“例如”和“包括”等的子句)不应当被解释为将本公开限于特定示例;而是该示例意欲仅说明许多可能实施例的一些。
【权利要求】
1.一种用于提供网页的二进制表示的计算机实现的方法,所述方法包括: 使用处理器来解析网页源文档,以识别一个或多个页面元素,所述源文档包括限定网页的文本,其中,所述源文档是以超文本标记语言(“HTML”)来编写的; 利用所述处理器来使用所识别的一个或多个页面元素而产生与网页的文档对象模型结构对应的二进制表示,所述第一二进制表示包括所述一个或多个页面元素向非纯文本的格式的转换;以及, 提供所述二进制表示,使得响应于来自客户端装置的请求,向所述客户端装置提供所述二进制表示,以渲染所述网页而不用解析所述网页源文档。
2.根据权利要求1所述的方法,其中,使用二进制表示词典来产生所述二进制表示,所述二进制表示词典限定与所述一个或多个页面元素中的每一个对应的至少一个二进制指令。
3.根据权利要求2所述的方法,其中,所述二进制表示包括识别所述二进制表示词典的版本的数据。
4.根据权利要求1所述的方法,其中,所述二进制表示包括树结构,并且所述一个或多个页面元素中的每一个是在所述树结构中的节点。
5.根据权利要求1所述的方法,其中,所述第一二进制表示进一步包括与所述网页相关联的内容。
6.根据权利要求5所述的方法,其中,所述二进制表示进一步包括与所述网页相关联的层叠样式表信息。
7.根据权利要求1所述的方法,其中,所述二进制表示与版本标识符相关联,并且所述方法进一步包括: 确定自从使用所述版本标识符产生所述二进制表示起所述网页源文档是否已经改变;以及 如果自从产生了所述二进制表示起所述网页源文档已经改变,则使用所述网页源文档来产生新的二进制表示。
8.根据权利要求7所述的方法,其中,所述版本标识符是时间戳或散列值中的至少一个。
9.一种用于处理以二进制表示接收的网页的计算机实现的方法,所述方法包括: 接收以二进制表示的网页,所述二进制表示限定所述网页的文档对象模型,所述文档对象模型将一个或多个超文本标记语言(“HTML”)页面元素限定为包括至少一对整数值和与所述整数值相关联的一个或多个属性;以及 使用处理器通过处理所述二进制表示来渲染所述网页,所述网页的结构由所述文档对象模型限定。
10.根据权利要求9所述的方法,进一步包括:协调在渲染所述网页中使用的第一二进制表示词典版本与在编译所述网页中使用的第二二进制表示词典版本。
11.根据权利要求10所述的方法,进一步包括:仅当所述第一二进制表示词典版本大于或等于所述第二二进制表示词典版本时,渲染所述网页。
12.根据权利要求10所述的方法,进一步包括:当所述第一二进制表示词典版本不大于或等于所述第二二进制表示词典版本时,请求更新的二进制表示词典。
13.根据权利要求9所述的方法,其中,所述二进制表示包括树结构,所述树结构限定所述文档对象模型和所述一个或多个页面元素,所述二进制表示是递增地接收的,并且所述方法进一步包括:当渲染每一个页面元素时,请求与所述一个或多个页面元素对应的数据。
14.一种用于提供网页的二进制表示的处理系统,所述处理系统包括: 存储器,用于存储网页源文档和所述网页源文档的二进制表示;以及 至少一个处理器,所述至少一个处理器耦合到所述存储器,所述处理器被配置为: 解析所述网页源文档以识别一个或多个页面元素,所述网页源文档包括限定网页的文本,其中所述源文档是以超文本标记语言(“HTML”)来编写的; 使用所识别的一个或多个页面元素来产生与网页的文档对象模型对应的二进制表示,所述二进制表示包括所述一个或多个页面元素向非纯文本的格式的转换;以及 提供所述二进制表示,使得响应于来自客户端装置的请求,能够向所述客户端装置提供所述二进制表示,以渲染所述网页而不用解析所述网页源文档。
15.根据权利要求14所述的处理系统,其中,使用二进制表示词典来产生所述二进制表示,所述二进制表示词典限定与所述一个或多个页面元素中的每一个对应的至少一个二进制指令。
16.根据权利要求15所述的处理系统,其中,所述二进制表示包括识别所述二进制表示词典的版本的数据。
17.根据权利要求16所述的处理系统,其中,所述二进制表示进一步包括与所述网页相关联的层叠样式表信息。
18.根据权利要求14所述的处理系统,其中,所述二进制表示与版本标识符相关联,并且所述方法进一步包括: 确定自从使用所述版本标识符产生所述第一二进制表示起所述网页源文档是否已经改变;以及 如果自从产生了所述第一二进制表示起所述网页源文档已经改变,则使用所述网页源文档来产生新的二进制表示。
19.根据权利要求18所述的方法,其中,所述版本标识符是时间戳或散列值中的至少一个。
20.一种包含指令的非瞬时计算机可读存储介质,所述指令在被处理器执行时使得所述处理器执行一种方法,所述方法包括: 接收以二进制表示的网页,所述二进制表示限定所述网页的文档对象模型,所述文档对象模型将一个或多个超文本标记语言(“HTML”)页面元素限定为包括至少一对整数值和与所述整数值相关联的一个或多个属性;以及 使用处理器通过处理所述二进制表示来渲染所述网页,所述网页的结构由所述文档对象模型限定。
【文档编号】G06F17/21GK104185845SQ201380014036
【公开日】2014年12月3日 申请日期:2013年3月8日 优先权日:2012年3月13日
【发明者】多米尼克·哈曼 申请人:谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1