加速文档加载的制作方法

文档序号:10540864阅读:217来源:国知局
加速文档加载的制作方法
【专利摘要】用于加速文档加载的方法、系统和装置,所述装置包括在计算机存储介质上编码的计算机程序。在一些实现中,文档的资源是从第一源所请求的,并且所述文档的元数据是从与所述第一源不同的第二源所请求的。所请求的元数据是从所述第二源接收的,并且所请求的资源是从所述第一源接收的。基于所接收到的元数据的所述文档的第一表示被提供用于显示。在提供所述第一表示之后,生成所述文档的将所述第一表示的部分与所述文档的附加部分组合的第二表示,并且所述第二表示被提供用于显示。
【专利说明】
加速文档加载
技术领域
[0001 ]本说明书一般地描述用于加速文档加载的技术。
【背景技术】
[0002]许多类型的电子设备通过网络(诸如互联网)访问网页和其它文档。单个文档可以包括来自多个资源的内容。例如,文档的URL可以识别超文本标记语言(HTML)文件,并且该HTML文件可以引用附加组件,诸如样式表、图像、广告、要显示在内联帧中的其它HTML文件以及其它组件。在用户利用web浏览器请求文档的时间与文档的有用视图被显示的时间之间常常存在显著的延迟。

【发明内容】

[0003]为了加速将文档给用户的呈现,设备能够通过网络请求文档并且还从另一源请求元数据,诸如文档的布局或格式化信息。元数据能够允许设备在渲染文档的过程中的早期确定文档的准确布局。
[0004]常常,加载文档的过程牵涉一个一个地发现文档的组件。当文档的组件被顺序地发现时,每个新组件的发现可以随着新组件被识别、预取并处理而引入附加延迟。在许多实例中,处理组件揭示了必须预取并处理其他附加的组件以完成对文档的渲染。随着文档的新组件被发现并被处理,web浏览器可以重复地改变文档的所显示的视图。对文档中的元素进行再定位和重定大小(常常被称为“回流”)能够在文档的组件仍在被检索并被处理的同时以妨碍用户对所显示内容的消耗的方式,移动内容。
[0005]为了减少在向用户呈现文档时的延迟,可以在通常能够在常规的资源发现期间计算信息之前,提供指示与文档有关的布局、格式化或其它信息的元数据。在客户端设备试图加载文档之前,计算系统能够分析该文档以识别或者生成能够加速文档的呈现的元数据。例如,计算系统能够识别并提取渲染文档所需的各种级联样式表(CSS)的部分。例如,计算系统还能够确定文档中的元素在文档被完全地被渲染并且文档中的脚本已被解释之后的最终大小和位置。所识别的CSS文件的部分以及元素的大小和位置可以被存储为与文档对应的元数据,并且能够响应于客户端的请求设备而被提供。因为文档的布局改变的不如页面的文本、图像或其它内容一样频繁,所以即使在内容提供者更改页面的内容之后,元数据也将常常提供与文档的布局有关的准确信息。
[0006]当客户端设备导航到文档时,该客户端设备的web浏览器可以通过网络请求文档。Web浏览器还可以单独地请求用于加速文档的呈现的元数据。例如,web浏览器可以向元数据服务发送请求,其中所述请求包括正在被加载的文档的统一资源定位符(URL)。元数据服务可以接着提供先前为文档所生成并存储的元数据。因为web浏览器能够在识别在文档内所引用的特定资源或嵌入的组件之前请求文档的元数据,所以能够在文档的任何部分被接收并处理之前请求元数据。结果,到web浏览器接收到或者处理文档的HTML文件或其它部分的时候,指示文档的布局特性的元数据可能已经存在于客户端设备处。使用元数据,即使在文档的附加组件仍然在被发现、下载和处理的时,web浏览器也能够提供具有准确的布局和格式化的文档的早期视图。
[0007]在一些实现中,包括到登录页面的链接的引用(referring)网页能够包括用于加速登录页面的加载的元数据。当引用页面被加载时,登录页面的元数据自动地被检索。当用户与引用页面中的链接交互时,用户的客户端设备已经具有登录页面的元数据并且能够迅速地提供登录页面的视图。在一些实现中,引用页面是包括到搜索结果文档的链接的搜索引擎结果页面。引用页面可以包括用于对搜索结果文档中的一个或多个的加载进行加速的元数据。此外,或者作为替选,引用页面可以使得搜索结果文档的元数据在与到搜索结果文档的链接的用户交互之前或者响应于与到搜索结果文档的链接的用户交互而被检索。
[0008]在一般方面中,方法包括:从第一源请求文档的资源;在接收所请求的资源之前,从与所述第一源不同的第二源请求所述文档的元数据;从所述第二源接收所请求的所述文档的元数据;从所述第一源接收所请求的所述文档的资源;提供基于从所述第二源所接收到的元数据的所述文档的第一表示以用于显示;以及在提供了基于来自所述第二源的所述元数据的所述文档的所述第一表示以用于显示之后:(i)生成将所述第一表示的部分与所述文档的附加部分组合的第二表示;以及(ii)提供将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示以用于显示。
[0009]这个方面的其它实现包括对应的系统、装置和计算机程序,所述计算机程序被配置成被编码在计算机存储设备上执行所述方法的动作。一个或多个计算机的系统能够借助安装在所述系统上的在操作时使所述系统执行动作的软件、固件、硬件或它们的组合被如此配置。一个或多个计算机程序还能够借助具有当由数据处理装置执行时使得所述装置执行动作的指令被如此配置。
[0010]实现可以包括以下特征中的一个或多个。例如,从与所述第一源不同的所述第二源请求所述文档的元数据包括:从第二源请求未被所述文档的资源所识别的所述文档的元数据。提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括:以由从所述第二源所接收到的所述元数据所指示的位置和大小来提供包括从所接收到的所述文档的资源所指示的可显示元素在内的所述文档的第一表示。提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括:在接收指示用于对所述元素进行显示的区域的所述文档的资源之前,基于所接收到的元数据来确定用于对所述文档的元素进行显示的区域;以及提供为所述元素而保留所述表示的区域的所述文档的所述第一表示。生成将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示包括:按照由从所述第二源所接收到的元数据所指示的位置和大小,生成添加了所述文档的附加可显示元素的第二表示。
[0011]实现可以包括以下特征中的一个或多个。例如,从所述第二源接收所请求的所述文档的元数据包括接收包括来自级联样式表资源的样式数据的元数据,所述样式数据包括被用在所述文档中的一个或多个样式的所述级联样式表资源中的数据,并且所述样式数据排除未被用在所述文档中的一个或多个样式的所述级联样式表资源中的数据。从所述第二源接收所请求的所述文档的元数据包括接收来自所述文档的字体资源的数据。从所述第二源接收所请求的所述文档的元数据包括在客户端设备处接收指示通过与所述客户端设备不同的设备对所述文档的清染的布局或格式化的特性的数据。所述文档包括Javascr ipt内容,所述Javascript内容当被处理时,影响所述文档的一个或多个元素的布局。从所述第二源接收所请求的所述文档的元数据包括接收指示反映处理所述Javascr ipt内容的效果的所述一个或多个元素的布局的数据。从所述第二源接收所请求的所述文档的元数据包括接收指示所述文档的折叠线的位置的数据。所述方法包括:基于指示所述文档的折叠线的位置的所述数据,识别用于显示在所述文档的折叠线上方区域中的内容;以及对所述文档的内容的处理进行优先排序,使得用于显示在所述折叠线上方区域中的所识别的内容在处理用于显示在所述折叠线上方区域外的内容之前被处理。
[0012]本说明书中所描述的主题的一个或多个实现的细节在以下附图和描述中被阐述。通过本描述、附图和/或权利要求,本主题的其它潜在的特征、方面和优点将变得显而易见。
【附图说明】
[0013]图1是图示用于加速文档加载的系统的示例的框图。
[0014]图2A至图2C是图示在加载文档的同时示出的用户界面的示例的图。
[0015]图3A至图3C是图示在加载文档的同时示出的用户界面的示例的图。
[0016]图4是图示在加载文档时的事件的时序的示例的图。
[0017]图5是图示用于加速文档加载的过程的示例的流程图。
[0018]图6是图示用于加速文档加载的系统的示例的框图。
[0019]图7和图8是图示用于加速文档加载的过程的示例的流程图。
[0020]各个附图中的相同的附图标记指示相同的元素。
【具体实施方式】
[0021]图1是图示用于加速文档加载的系统100的示例的框图。系统100包括客户端设备110、第一计算系统120、第二计算系统130和网络118。该图示出了图示数据的流动的阶段(A)至(E),以及图示客户端设备110上所示出的用户界面的阶段(E)和(F)。
[0022]在该示例中,用户102在客户端设备110的web浏览器中加载文档。web浏览器从计算系统120请求文档。在接收文档之前,web浏览器还从计算系统130请求用于加速文档的加载的数据,通常被称为元数据或加速数据。web浏览器使用文档的内容和独立被提供的元数据来迅速地给用户102提供文档的视图。在一些实现中,所请求的元数据允许web浏览器在显示文档时减少或者避免回流。所请求的元数据还可以允许web浏览器先提供文档的有意义视图(例如,具有准确的格式化和布局),随后web浏览器能够再通过单独处理文档的内容来提供。
[0023]例如,客户端设备110可以是桌面型计算机、膝上型计算机、蜂窝电话、智能电话、平板计算机、音乐播放器、电子书阅读器、导航系统或其它设备。由计算系统120、130中的每一个所执行的功能能够由独立的计算机系统来执行或者能够跨多个计算机系统分布。网络118可以是有线的或无线的或两者的组合,并且可以包括私人网络和/或公用网络,诸如互联网。
[0024]许多网页和其它文档包括跨多个文件散布的内容。文档的URL可以对应于第一文件,诸如HTML文件。HTML文件可以引用必须被下载以完成文档的一个或多个嵌入式组件。例如,嵌入式组件的示例包括字体、脚本文件、CSS文件、图像、web应用、媒体文件以及其它HTML文件。
[0025]如本文中所使用的,“文档”或“网页”通常是指一起组成整个文档的资源的集合,并且不限于诸如HTML文件的单个文件。例如,与URL “www.example.com”对应的网页可以包括HTML文件 “www.example.com/index.html” 以及诸如CSS文件 “www.example.com/main.css”、图像文件 “www.example.com/image.jpg”、字体文件 “www.example.com/font, woff”的组件,以及在文档的HTML文件或其它组件中所引用的其它资源。网页的嵌入式组件在常常作为单独的文件从单独的URL中被检索时,通常是完全地渲染或者显示网页所需要的,并且由web浏览器自动地检索和处理作为加载网页的过程的一部分。
[0026]当web浏览器加载网页时,web浏览器逐渐发现渲染该网页所需的资源。例如,当web浏览器处理HTML文件时,web浏览器可以确定还需要某些CSS文件、字体文件和其它资源来渲染网页。web浏览器识别并检索这些附加资源,而所述附加资源可以指向用于web浏览器检索以便完成页面的更多的资源。
[0027]例如,网页可以包括引用第一 CSS文件的HTML文件,所述第一 CSS文件引用第二 CSS文件,所述第二 CSS文件引用第三CSS文件。通常,web浏览器确定仅在网页的HTML文件被接收和处理之后才需要第一CSS文件。然后,当web浏览器检索并处理第一CSS文件时存在延迟。根据第一CSS文件的内容,web浏览器确定第二CSS文件是需要的,并且当web浏览器检索并处理第二CSS文件时存在另一延迟。根据第二CSS文件的内容,web浏览器确定第三CSS文件是需要的,并且当web浏览器检索并处理第三CSS文件时存在第三延迟。这个加载过程牵涉顺序地加载并处理四个不同的文件,并且每当另一文件被处理时,网页的回流可以改变为了显示给用户而提供的布局。
[0028]为了避免与顺序的资源发现和加载相关联的延迟,可以在渲染过程中的早期将渲染网页所需的信息中的一些作为元数据来提供。例如,当web浏览器请求网页的HTML文件时,web浏览器还能够从帮助加速页面加载的元数据服务请求网页的元数据。即使在web浏览器确定CSS文件是需要的之前,元数据服务也能够提供多个CSS文件的内容。结果,当web浏览器处理HTML文件时,web浏览器能够利用元数据中的信息来在提供给用户的网页的初始视图情况下提供准确的布局和格式化。
[0029]在一些实现中,设备从第一源请求文档的资源。设备从与第一源不同的第二源请求文档的元数据。设备从第二源接收所请求的文档的元数据,并且从第一源接收所请求的文档的资源。设备提供基于对从第二源所接收到的元数据的文档的第一表示以用于显示。在提供文档的第一表示之后,设备生成文档的将第一表示的部分与文档的附加部分组合的第二表示,并且提供第二表示以用于显示。
[0030]在图1的示例中,在阶段(A)中,用户使用客户端设备110的web浏览器来导航到网页。例如,用户可以录入网页的URL或者与到网页的链接交互。
[0031]在阶段(B)中,客户端设备110的web浏览器发送对网页的内容(例如,文档的实际资源中的一个或多个)的请求112。《4浏览器将请求112发送到计算系统120,所述计算系统120是托管网页的服务器。计算系统120可以由创建或者分发网页的内容提供者来操作,或者由内容递送网络或代表内容提供者提供网页的其它实体来操作。例如,请求112可以是用于检索与网页的URL对应的资源(例如,网页的主HTML文件)的HTTP “get”请求。
[0032]在阶段(C)中,客户端设备110的web浏览器发送对用于加速网页的加载的数据的请求。请求114与请求112分开并且可以被发送到与提供网页的服务器、域或系统不同的服务器、域或系统。例如,web浏览器能够从由计算系统130所提供的元数据服务请求元数据,所述元数据服务可以由独立于内容提供者和计算机系统120的第三方来提供。请求114识别客户端设备110正在加载的网页,这允许元数据服务提供特定于正被加载的网页的元数据。例如,请求114可以指示网页的URL。
[0033]web浏览器能够在接收网页的HTML文件或任何其它资源之前发送对元数据的请求114。元数据服务能够单独(例如,在没有HTML文件内或者在网页的其它组件内所引用的特定资源的识别的情况下)基于网页的识别来提供元数据。结果,能够在大致相同的时间并行发出请求112、114。在一些实现中,web浏览器被配置成每当新文档被加载时便发送对元数据的请求以自动地增强加载过程。例如,每当新文档被加载时,web浏览器可以向在已知位置处的元数据服务(例如,“WWW.example.com/metadata_service”)发送请求,并且请求页面的元数据。
[0034]计算系统130—旦接收了请求114,确定元数据是否可用于请求114中所识别的网页。计算系统130能够具有对数据存储135的访问,所述数据存储135包括许多不同的网页中的每一个的元数据。如关于图6和图7所进一步讨论的,能够基于对网页的渲染的分析提前选择网页的元数据。每个经分析页面的所选择的元数据能够被存储并稍后被提供给设备以加速加载。计算系统130能够在所存储的数据中查找网页的URL并且提供已被指定用于加速网页的加载的任何元数据。
[0035]在阶段(D)中,客户端设备110从计算系统130接收网页的元数据132。所接收到的用于加速网页的加载的数据通常被称为元数据,因为所接收到的数据能够包括关于应该用来显示网页的方式的信息,诸如网页的元素的大小、位置和样式。如在下面进一步讨论的,元数据132能够包括来自网页的资源的数据的副本。元数据132可以附加地或替选地包括通过对网页进行分析而生成的其它数据。
[0036]在阶段(E)中,客户端设备110从计算系统120接收网页的一个或多个资源,诸如HTML文件122。因为请求112、114是在大致相同的时间发出的,所以在大致相同的时间接收到元数据132和HTML文件122。当web浏览器处理HTML文件122时,关于网页的布局的信息以及来自嵌入式组件的信息已经存在于元数据132中。以这种方式,来自嵌入式组件(例如,CSS文件、脚本文件、字体等)的信息甚至在web浏览器发现对那些组件的引用并且确定该信息是需要的之前也能够存在于客户端设备110处。
[0037]所接收到的元数据132可以包括能够加速将网页呈现给用户102的各种类型的信息中的任意。在一些实现中,元数据132指示网页的布局或格式化。元数据132可以包括与网页的先前渲染有关的信息。在一些实现中,元数据132包括与网页的DOM树中的节点以及与这些节点对应的样式有关的信息。在一些实现中,元数据132描述网页的文档设计或页面结构的特性。在一些实现中,元数据132包括来自网页的不可显示内容,并且排除网页的可显示内容。例如,在一些实现中,元数据132可以包括来自除为了显示给用户而指定的图像和文本以外的网页的资源的任何数据。
[0038]在一些实现中,元数据132包括来自网页的嵌入式组件(例如,一个或多个组件中的一部分或全部)的数据。例如,如在下面进一步讨论的,元数据132可以包括网页的一个或多个CSS文件或所述CSS文件的特定部分中的数据的副本。在一些实现中,元数据132指示要下载的组件的列表,而无需包括来自那些组件的数据。例如,元数据可以识别渲染网页所需的CSS资源,以加速所需组件的识别和检索。在一些实现中,元数据132包括来自网页的一些组件的数据,并且仅识别其它组件。
[0039]元数据132中的一些可以指示网页的完整渲染的布局或格式化。例如,元数据132可以指示在网页的视图中所显示的图像和其它元素的位置和大小。元数据132可以指示由另一设备(例如,除客户端设备110以外的设备)根据网页的先前完全渲染所确定的元素的最终大小和位置。例如,所指示的大小和位置可以是当元素在网页中的Javascript代码或其它脚本已被执行之后出现时该元素的大小和位置。结果,已经在元数据132中反映了调整网页的布局的脚本的效果。
[0040]在常规的加载过程中,当web浏览器首先生成网页的布局时,web浏览器通常不知道页面的最终布局。例如,web浏览器也许不能够准确地确定网页中的图像的最终大小。浏览器可以首先估计图像的大小,但是可能必须随着附加资源被发现和处理而改变图像的大小或位置。然而,通过在元数据132中提供图像和其它元素的最终大小,web浏览器的初始渲染能够随着它出现在最终渲染中而准确地放置并调整图像的大小,并且能够避免回流。
[0041]元数据132可以包括嵌入在网页中的脚本文件或脚本的部分。此外,或者作为替选,元数据可以包括与脚本对页面的布局的影响有关的信息,使得能够在实际下载并执行脚本之前就包括布局的适当特征。
[0042]元数据132可以包括来自嵌入在网页中的CSS文件的样式数据。在一些实现中,元数据132包括由网页引用的CSS文件中的数据的整个集合。可以组合或者内联多个CSS文件以改进效率。在一些实现中,元数据132仅包括文档中所选择的CSS文件的部分,并且省略不是渲染网页实际上所需的CSS文件的部分。例如,由网页所引用的各种CSS文件可以总数达50千字节的数据。可能实际上需要仅20千字节的数据来完全地渲染网页。例如,如果在网页中不存在特定类型的元素,则可以省略与该特定类型的元素有关的样式信息。元数据132可以包括CSS数据的适当子集(诸如仅所需的20千字节)以限制所传送的数据的量。
[0043 ]元数据132可以包括在网页中所使用的定制字体。元数据132可以包括被使用的字体文件的列表以及那些字体的URL,而不是包括字体,以允许web浏览器在web浏览器将通常确定字体是需要的之前检索字体。
[0044]在一些实现中,元数据132指示网页的“折叠线”的位置。折叠线的位置能够表示针对给定屏幕大小的页面的可见部分。通常,折叠线是指在其中显示资源的显示区域的边缘或边界,诸如用于网页的显示区域的底部边缘。当在web浏览器中显示文档时,该文档通常延伸超过web浏览器的初始查看区域,并且用户通常必须在文档内滚动或者以其它方式导航,以展现在显示区域中最初未呈现的内容。文档的最初可在用户的显示器上的浏览器内查看的部分被称为文档的折叠线上方区域。例如,在用户滚动以展现附加内容之前,折叠线上方区域可以是在资源被渲染和显示之后在显示区域中所示出的文档的部分。通常可以通过在浏览器内向下滚动来展现的资源的剩余部分被称为文档的折叠线下方区域。
[0045]在一些实现中,元数据132指示哪些图像对于给定屏幕大小来说是可见的。元数据132可以指示在屏幕或显示区域的不同大小下可见的图像的多个不同的集合。web浏览器可以使用与网页的折叠线以及可见图像有关的信息来对网页的部分的处理进行优先级排序。例如,可以在将不变得可见直到用户通过滚动来展现它们为止的网页的其它部分之前,处理在折叠线上方区域中可见的网页的部分。
[0046]元数据132可以排除网页的可查看内容。例如,网页中的文本、图像以及其它可见元素从元数据132中被排除,并且不由计算系统130提供。例如,在不包括要向用户示出的实际文本的情况下,元数据132可以指示文本的字体和样式以及在其中将显示文本的区域的位置和大小。类似地,元数据132能够指示图像在页面的布局中的大小和位置,并且不包括图像本身。
[0047]在一些实现中,元数据132可以包括网页的可查看内容。例如,元数据132可以包括来自网页的图像。元数据132可以包括文档的实际图像,或者可以包括用于在文档的早期视图中使用的较低分辨率的图像或压缩图像。在一些实例中,提供将在文档中可见的图像中的不到全部。例如,所提供的图像的子集可以包括位于文档的中心区域处的图像和/或至少最小大小的图像,并且可以排除文档的其它图像。在一些实现中,元数据包括用于显示在文档的折叠线上方区域中(例如,在由用户滚动之前可见的文档的顶部部分或初始视图中)的图像,并且排除用于在文档的折叠线下方区域(例如,通过滚动展现的部分)中显示的图像。可以使用用于选择要在元数据中提供的图像的其它标准。在一些实现中,可以提供网页的任何部分来加速对页面的加载。
[0048]在阶段(F)中,客户端设备110的web浏览器使用元数据132来提供网页的视图,如用户界面150中所示。web浏览器被配置为使得web浏览器的布局引擎根据元数据132中的信息来创建页面的视图。元数据132能够允许web浏览器比通过单独分析网页更迅速地提供网页的视图。此外,网页的初始视图能够包括比将在没有元数据的情况下最初提供的布局更准确的布局。
[0049]web浏览器提供的视图能够包括像在元数据132中所指示的那样格式化或者布置的网页的内容的一部分。例如,网页的HTML文件可以包括用于显示给用户102的文本,并且该文本可以用由元数据132中的CSS所定义的样式被示出。结果,初始视图可能比单独基于HTML文件的视图更准确,并且能够在比用于对网页中所引用的CSS资源进行发现和检索所需要的时间少的时间内提供视图。还可以使用包括在元数据132中的字体数据来显示文本。类似地,可以以由元数据132所指示的大小和位置来显示网页的图像和其它元素。
[0050]在一些实现中,web浏览器可以在处理之前或者在接收网页的HTML文件或其它内容之前提供基于元数据132的网页的视图。例如,如果比网页的HTML文件更早地接收到元数据132,则web浏览器可以完全基于元数据132的生成初始视图。例如,初始视图可以包括根据元数据中的CSS信息和/或布局信息被格式化的来自元数据132的图像以及来自元数据132的网页的标题或其它部分。
[0051]如果图像或其它元素的内容在web浏览器提供网页的初始视图时不可用,则web浏览器可以插入占位符或者以其它方式保留元素将占据的空间。在已经检索到元素之后,可以将web浏览器插入到已被保留的所指定的空间中。因为元素的最终大小和位置在初始布局被生成时是已知的,所以能够以正确的大小和位置将元素插入到网页中,而不用置换网页的内容。
[0052]在一些实现中,元数据132指示web浏览器推迟调用Javascript或其它脚本,直到在使用元数据132中的信息来呈现网页的初始视图之后为止。结果,能够无延迟地提供网页的视图用于处理Javascript或其它脚本。
[0053]通常,Javascript内容不使更多的可见内容被添加到网页的视图。在许多实例中,能够在不用处理Javascr ipt内容的情况下示出网页的大部分。然而,在其它实例中,Javascript或其它可调用的内容可能影响显示给用户的内容。例如,Javascript代码可以调整网页中所显示的元素的位置或大小。作为另一示例,当Javascript代码被浏览器中断时,所述Javascript代码可以将元素插入到web浏览器为网页构建的文档对象模型(DOM)中。元素的插入可以使其它元素(诸如位于DOM树中的已插入元素下方的元素)改变网页的布局中的位置。
[0054]当web浏览器推迟对Javascript内容的处理时,web浏览器仍然能够使用元数据132来以准确的大小和位置对元素进行布局。元数据132能够指示在所有脚本和元素已被发现和处理之后网页的最终布局的特性。通过使用已经考虑到由Javascript或其它可调用内容所引起的任何改变的元数据132中所指示的布局特性,web浏览器可以在Javascript内容被处理之前生成准确的布局。结果,即便当影响页面布局的Javascript内容尚未被处理时,web浏览器也能够提供具有准确布局的视图。
[0055]在用户界面150被显示的同时,web浏览器继续用于加载网页的资源发现过程。网页的每个组件以资源在元数据132不可用的情况下将被正常地处理的相同方式被识别、被检索并进而被处理。可以通过计算系统120或其它系统、通过网页内所指定的相同URL请求和接收这些组件。随着新资源被发现和检索到,web浏览器使新近检索到的内容与网页的初始视图混合。在用户界面150中,显示区域151a、152b被设置在可能尚未接收到可显示内容的元素旁边。在用户界面150被首先显示时,web浏览器可能尚未发现资源,或者可能正在等待资源的传送完成。因为网页的元数据132指示这些元素的大小和位置,所以在布局中保留空间,使得可以在不用更改网页的布局的情况下稍后插入所述元素。
[0056]在一些实现中,被包括在元数据132中的资源(例如,数据已经存在于客户端设备110处的资源)也在接收到元数据132之后在资源发现过程期间被单独地下载到客户端设备110。例如,即使元数据132包括网页的CSS文件中的数据,web浏览器也可以继续发现、检索并处理由内容发布者所提供的原始CSS文件。通过处理如从发布者直接接收到的原始资源,web浏览器可以验证已被生成的布局的正确性。网页的原始资源与元数据132之间的差异被解析有利于原始资源。例如,如果CSS文件指示网页的布局的一个方面与元数据132中所指示的不同,则web浏览器更新视图以反映CSS文件中有什么。网页的元数据通常改变的不频繁。然而,网页的实际资源将是最当前的,并且在一些实例中,元数据132可能不包括对元数据的最近改变。完成能够验证正确性的资源发现过程能够确保对网页的任何最近改变被最终被合并在呈现给用户102的视图中。
[0057]在一些实现中,在资源发现过程期间不单独下载被包括在元数据132中的文档的部分。例如,当元数据132包括网页的资源或这些资源的部分时,web浏览器可以使用元数据132中的信息,而不用从托管网页的服务器附加地下载资源。例如,web浏览器可以确定元数据132包括显示网页所需的CSS文件的部分,并且结果,可以确定不从HTML文件中所指示的URL下载CSS文件。元数据132可以指示哪些资源或部分或资源被包括在元数据132中,以允许web浏览器确定哪些资源可能不需要被单独地下载。
[0058]当客户端设备110接收到并处理网页的附加资源时,客户端设备100可以提供对网页的视图的更新。网页的布局引擎可以在资源发现过程正在进行的同时对视图做出多个增量更新。这些更新将网页的附加内容与用户界面150中的视图进行组合。每个更新能够提供网页的更完整视图。可以添加新内容,并且一些元素(诸如用户界面150中的占位符)可以被网页的实际内容所代替。通过这系列的更新,用户102能够体验从用户界面150中的网页的初始或初步视图到网页的完整最终视图的无缝转变。元数据132的使用允许web浏览器为初始视图的网页生成正确的最终布局。结果,使附加内容合并或者混合牵涉将内容放置在初始布局中,并且可以在没有页面的布局的回流或更改的情况下完成页面加载过程。
[0059]在阶段(G)中,客户端设备110的web浏览器在发现并处理网页的组件中的所有之后,提供作为网页的最终完成视图的用户界面160。在提供用户界面150时不可用的元素已被插入到视图中。例如,为尚不可用的元素而保留的显示区域151a、152a已被页面的实际内容151b、152b(例如,可显示文本、图像或其它内容)所代替。文档中的Javascript以及其它脚本或指令也已被调用。在网页的初始视图中,一些用户交互处理程序(诸如点击处理例程)在Javascript或其它代码的调用被推迟时可能没有被激活。然而,随着资源发现过程继续进行,处理Javascript并且添加网页的交互处理程序和其它功能方面。
[0060]—般而言,使用元数据132来加速网页的加载不要求对组成网页的实际资源作出任何变更。与文档重写的文档压缩不同,图1的示例牵涉网页的原始未修改内容整体地到客户端设备110的传输。元数据132是作为除由内容发布者提供的网页的未更改内容之外的补充信息来提供的。可以仅依靠元数据132来提供网页的早期视图,直到web浏览器有时间检索并处理网页(包括由网页的源服务器所提供的原始元数据)为止。当发现过程完成时,提供给用户的网页的视图可以完全基于由内容发布者提供的网页的原始资源。
[0061]此外,在图1的示例中,网页的原始内容是从网页的源服务器(计算系统120)接收的,并且数据的流动不通过诸如代理服务器的第三方系统或内容递送网络被再路由或者传递。网页的数据在客户端设备110与源服务器之间的流动保持完整的,并且独立于网页的原始内容的传送通过单独的通道来提供元数据132。结果,可以通过安全连接(例如,使用超文本传送协议安全(HTTPS)连接)将网页从内容发布者传送到客户端设备110,并且仍然受益于使用这些技术的更快加载。
[0062]用于加速文档加载的元数据能够由第三方生成和提供,而无需包括文档中的任何定制特征或对文档的任何修改。不需要修改或者适应于网页来利用图1的技术。结果,能够通过将第三方服务配置成提供元数据来容易地完成启用加速,而不对内容发布者强加任何限制。如关于图8进一步讨论的,为了许可特定网页被更快地加载,计算系统可以检索所述网页,分析该页面并生成适当的元数据,并且将该元数据存储在数据存储135中,使得能够将该元数据提供给其它设备。
[0063]图2A至图2C是图示在加载文档的同时所示出的用户界面200、210、220的示例的图。该示例图示了在web浏览器在没有利用任何元数据的情况下通过网络加载文档以加速页面加载的同时提供给用户的文档的视图。结果,web浏览器排他地依靠典型的资源发现过程。
[0064]在图2A中,web浏览器提供用户界面200作为文档的初始视图。例如,文档的内容的一部分被示出为包括文档的HTML文件中的文本202。然而,web浏览器尚未发现并处理文档的CSS资源中的所有,并且所以不是根据为该文本而定义的样式来格式化文本的。web浏览器已识别仍然必须被检索并添加到视图的网页的元素,如由占位符204所示。迄今为止接收到并处理的文档的内容不指示这些元素应该被显示在文档中的大小和位置。web浏览器通过在有限信息可用的情况下估计元素的大小和位置来生成布局。
[0065]在图2B中,web浏览器在发现并处理文档的附加组件之后提供用户界面210。用户界面210是文档的更完整视图,但是仍然包括文档的仅一部分。标题元素212、侧边栏214和页脚216已被添加。这些添加要求页面的回流,例如,元素在页面中的再定位以适应布局中的改变。在其中显示文本202的区域已在大小和形状上改变了并且已在文档内移动了。布局的改变可以令用户感到不安,因为用户阅读用户界面200中的文本202在界面改变时将很可能忘记上次读到的地方。
[0066]在图2C中,web浏览器在完成资源发现过程之后提供用户界面220作为文档的最终视图。随着先前所显示的元素已被移动并重定大小,对布局的改变和脚本的处理已再次引起页面的回流。用于文本202的显示区域也已再次改变。此外,在处理文档的CSS内容之后,文本202的文本样式(例如,字体大小、颜色、着重、字体和/或其它格式化)已改变。在加载期间对文档的布局和格式化的改变可能似乎是突然的或分散注意力的,并且对元素的重新布置可以限制文档对用户的有用性,直到文档的最终完整视图(例如,用户界面220)被提供为止。
[0067]图3A至图3C是图示在加载文档的同时示出的用户界面300、310、320的示例的图。该示例图示图2A至图2C中所示出但是当web浏览器使用被提供来加速页面加载的元数据来加载文档时的相同文档的视图。
[0068]在图3A中,web浏览器提供用户界面300作为文档的初始视图。web浏览器已从文档的源服务器接收到文档的内容中的至少一些(例如,HTML文件)^eb浏览器也已经单独地接收到由另一源(例如,从第三方)提供的文档的元数据。文档内容的布局和格式化是基于与正在进行以从源服务器中检索文档并处理它的资源发现过程分别提供的元数据来确定的。元数据能够包括从文档中提取的数据,诸如CSS文件或渲染文档所需的CSS文件的部分。此夕卜,或者作为替选,元数据能够包括根据对文档的在先渲染的分析而确定的与页面的最终布局有关的?目息。
[0069]元数据中的布局和格式化信息被用来安置并格式化文档的内容,诸如HTML文件指示应该被显示给用户的文本202。元数据指示文档中的元素的大小和形状。已经被检索到的元素(诸如文档的HTML文件指示应该被显示的文本202)被放置在由元数据所指示的显示区域中。元数据还指示即使在资源发现过程中元素尚未被发现,其它元素也被放置在文档的最终布局中。用于这些其它元素的空间在布局中被保留,由用虚线示出的显示区域304来指示。在一些实现中,所保留的显示区域304可以包括空白空间(例如,示出文档的背景颜色或背景图像)。在一些实现中,可以包括占位符元素以向用户指示内容将被加载在该区域中,或者指示要加载的内容的类型。
[0070]在图3B中,web浏览器在发现并处理文档的附加资源之后提供用户界面310 jeb浏览器已使所发现的附加内容(诸如图像文件和其它组件)与用户界面300中的初始视图混合。附加元素已被添加到文档代替在布局中设置在那些元素旁边的所保留的显示区域304。即使web浏览器已发现并添加了新内容,文档的布局也尚未改变。回流不会出现,并且文本202如在用户界面300中一样被显示在文档的相同区域中,并且具有相同的字体和样式。正在读取用户界面300中的文本202的用户将能够在屏幕被更新以示出用户界面310的同时不间断地阅读。在一些实现中,可以随着将文档的附加内容与初始视图或后续视图混合而提供文档的多个中间视图。
[0071 ]在图3C中,web浏览器在完成资源发现过程之后提供用户界面320作为文档的最终或完整视图。所保留的显示区域304的全部已充满它们相应的元素。先前视图(例如,用户界面300、310)中所显示的元素如先前一样以相同的大小和位置被示出。因为元数据允许web浏览器在页面的初始视图中生成准确的布局,所以对页面的更新不需要改变布局,并且避免了回流。尽管初始视图不完整(例如,因为一些可显示元素不存在),但是对补充元数据中的信息的使用允许被显示的元素被正确地显示。
[0072]用户界面320还可以合并对文档的各种不可见的改变。例如,可以推迟对Javascript的处理以允许按最小延迟提供用户界面300、310。用户交互处理程序或其它功能性在用户界面300、310被提供时可能还不是是激活的。到用户界面320被提供时,文档中的Javascript已被处理。结果,当用户界面320被提供时用户交互处理程序或其它功能性可能在文档中是激活的。即使Javascript内容描述布局或格式化的各方面,在一些实现中也不需要对布局的改变,因为用来生成初始视图(例如,用户界面300)的补充元数据已经指示了 Javascript内容的处理之后的最终布局的特性。
[0073]用户界面320与用户界面220相同,因为在两个示例中文档的相同内容中的全部(例如,由内容发布者提供的原始CSS文件、Javascript文件等)是从相同URL中检索的并且由web浏览器处理。然而,在图3A至图3C中,元数据对于文档的初始和中间视图允许更准确的布局和格式化,所以布局和格式化能够在文档的剩余部分被逐渐添加的同时保持一致。
[0074]图4是图示在加载文档时的事件的时序的示例的图。在该示例中,web浏览器在资源发现过程402期间检索并处理文档的各种资源。web浏览器还在加速过程404中检索并处理附加元数据,以迅速地提供具有准确的布局的文档的视图。正被加载的文档包括HTML文件以及在单独的资源中也是渲染文档所需的三个其它组件。例如,组件可以是CSS文件、Javascript文件、图像文件和其它媒体文件、字体文件、HTML文件或其它类型的资源。HTML文件是指第一组件,该第一组件引用第二组件,该第二组件引用第三组件,使得三个组件被顺序地发现。
[0075]在时间To,Web浏览器例如通过从文档的URL发起对文档的请求来做出对HTML文件的请求。在接收HTML文件之前,web浏览器向另一服务器(诸如第三方元数据服务)做出对用于加速文档的加载的请求。可以在对文档的请求之前、在与对文档的请求大致相同的时间或者在对文档的请求之后做出对元数据的请求。HTML文件和元数据被并行传送,并且可以在大致相同的时间被接收到。在一些实例中,例如,因为元数据可以包括比HTML文件少的数据所以元数据可以在HTML文件之前被接收到,并且可以由为高效传送而优化的服务器系统来提供。
[0076]web浏览器使用HTML文件和元数据来生成在时间!^提供的文档的初始视图。即使在不用通过使用元数据检索并处理文档的三个其它资源的情况下,web浏览器也能够提供文档的被示出的部分被以正确的布局和格式化显示的视图。元数据可以包括三个组件中的一个或多个的部分,从而允许web浏览器在实际资源在资源发现过程402中被检索到之前使用来自组件的数据。元数据还可以指示元素的大小和位置以及与文档有关的其它信息。
[0077]在初始视图被提供之后,资源发现过程402继续。web浏览器检索并处理文档的三个附加组件中的每一个,并且分别在时间T3、TjPT5完成处理这些组件。在时间T3、T4和T5中的每一个处,web浏览器提供文档的更新视图,从而使附加内容与先前所提供的在先布局和视图混合。在不利用元数据的情况下,在资源发现过程402结束之后,文档的布局直到时间T5为止才会结束。然而,通过使用加速过程404来迅速地检索元数据,例如,对于文档的初始视图,最终布局实际上更早地被生成。
[0078]图5是图示用于加速文档加载的过程500的示例的流程图。过程500可以由图1的客户端设备110或另一设备执行。
[0079]设备从第一源请求文档的资源(502)。例如,设备可以发送对在文档的URL处的资源的HTTP GET请求(例如,“GET http://example.com/HTTP/1.1...”)。可以响应于用户导航到网页(例如,通过与链接或其它用户界面元素交互)而发送该请求。
[0080]在第二请求中,设备从与第一源不同的第二源请求文档的元数据(504)。可以响应于触发了第一请求的相同交互而发送第二请求。设备在接收动作(502)中所请求的资源之前发送第二请求,所以可以并行地或相继地传送元数据以及文档的资源。例如,对元数据的请求通过指示正在动作(502)中预取的URL来识别正被加载的文档。
[0081]在一些实现中,元数据是独立于文档的发布者从第三方请求的。可以从被配置成从许多不同的互联网域和内容发布者提供许多不同文档的元数据的预定位置或服务器请求元数据。例如,每当文档被加载时,设备可以被配置成从特定源或源的预定集合中的一个请求元数据。
[0082]设备可以从第二源接收所请求的文档的元数据(506)。即使设备尚未被识别或者具体地请求了资源,所接收到的元数据也可以包括来自文档的资源(例如,CSS文件、字体文件等)的数据的副本。这可以允许设备在识别并检索组成文档的特定资源之前接收文档中的各种资源的内容。
[0083]所接收到的元数据可以包括来自文档的CSS文件的数据。例如,所接收到的元数据可以包括一个或多个CSS文件的全体,或者可以仅包括影响文档的渲染的CSS文件中的数据的子集。所接收到的元数据可以指示文档的布局和格式化信息,例如,包括文档的图像和其它元素在文档的最终渲染中的大小和位置。所接收到的元数据可以包括一个或多个字体文件的数据,或者可以识别在文档中使用的字体文件的URL。所接收到的元数据可以识别文档的图像或其它元素的URL,从而允许web浏览器更迅速地请求这些元素。
[0084]在一些实现中,所接收到的元数据可以包括来自文档的图像。例如,元数据可以包括文档的实际图像,或者可以包括用于在文档的早期视图中使用的较低分辨率图像或压缩图像。在一些实现中,当在元数据中传送图像文件数据时,仅提供将在文档中可见的图像。在一些实例中,提供将在文档中可见的图像中的不到全部。例如,所提供的图像的子集可以包括位于文档的中心区域处的图像和/或至少最小大小的图像,并且可以排除文档的其它图像。在一些实现中,元数据仅将用于显示在文档中的图像包括在文档的折叠线上方区域中(例如,在由用户滚动之前可见的文档的顶部部分或初始视图中)。可以使用用于选择要在元数据提供的图像的其它准则。
[0085]设备从第一源接收所请求的文档的资源(508)。例如,所接收到的资源可以是文档白勺主 HTML文件(例如,文档 “http://example.com/” 的 “http://example.com/index.html,,)。
[0086]设备基于从第二源接收到的元数据来提供文档的第一表示以用于显示(510)。第一表示可以是在用户发起到文档的导航之后提供给用户的文档的初始视图。第一表示可以包括来自使用所接收到的元数据来格式化或者布局的文档的一个或多个资源的内容。
[0087]在提供文档的第一表示之后,设备生成将第一表示的部分与文档的附加部分进行组合的文档的第二表示(512)。设备提供第二表示以用于显示(514)。在提供第一表示之后,设备可以继续发现并处理文档的资源。例如,第二表示可以添加来自在第一表示被提供之后识别和/或接收到的附加资源的文档的内容。例如,新元素可以被插入到第一表示中,代替占位符元素或者插入到为元素而保留的空间内。可以在不用回流(例如,重定大小或者重新布置)第一表示中所示出的元素的情况下提供第二表示。当Javascript或其它内容的处理被推迟时,设备可以处理内容。例如,可以将用户交互处理程序添加到第一表示中的元素。
[0088]例如,因为所接收到的元数据指示了文档的正确布局,可以在第二表示中维持第一表示的布局和格式化。可能仅基于初始HTML文件和元数据的第一表示可以随着增量改变而被无缝地增强,直到完全文档被示出为止。
[0089]图6是图示用于加速文档加载的系统600的示例的框图。系统600包括客户端设备610、计算系统620和网络618。该图示出了图示数据的流动的阶段(A)至(C),以及图示在客户端设备610上示出的用户界面的阶段(D)。
[0090]在图6的示例中,用于加速文档的加载的元数据是在客户端设备610的用户602发起到一个或多个文档的导航之前被提供的。客户端设备610接收包括到目标文档的链接的引用文档。加载引用文档传送用于加速目标文档的加载的元数据。当用户与到目标文档的链接交互时,元数据(例如,与目标文档的布局和格式化有关的信息)已经存在于客户端设备610处。结果,客户端设备610可以在不用从元数据服务请求元数据的情况下执行目标文档的加速加载。
[0091]在阶段(A)中,客户端设备610向计算系统620发送查询612。在阶段(B)中,计算系统620处理查询并且生成要响应于该查询而提供的文档。计算系统620可以将查询提供给搜索引擎并且从该搜索引擎接收搜索结果,或者以其它方式获得响应于查询的信息。例如,计算系统620可以获得识别被识别为与查询相关的搜索结果文档的集合的信息。计算系统620生成识别搜索结果文档的文档,诸如搜索引擎结果页面。
[0092]计算系统620还访问包含用于加速页面加载的元数据的数据存储625。从数据存储625,计算系统620识别搜索结果文档中的一个或多个的元数据,并且将该元数据包括在搜索引擎结果页面中。在一些实现中,计算系统620包括仅最高排名搜索结果文档的元数据,或搜索结果文档(例如,与前三个或前五个搜索结果对应的文档)的仅最高排名子集中的每一个的元数据。在一些实现中,计算系统620包括搜索引擎结果页面中所识别的搜索结果中的每一个的元数据或元数据在数据存储625中可用的所识别的搜索结果中的每一个的元数据。
[0093]元数据632可以包括用于加速页面加载的本文中所描述的类型的数据中的任一种,例如,包括来自搜索结果文档的CSS文件的数据、指示搜索结果文档中的元素的大小和位置的信息、来自搜索结果文档的字体文件的数据、指示渲染搜索结果文档所需的资源的数据等。
[0094]在阶段(C)中,计算系统620提供搜索引擎结果页面630,所述搜索引擎结果页面630包括在该搜索引擎结果页面630中识别的一个或多个搜索结果文档的元数据632。在一些实现中,元数据632被包括在与搜索引擎结果页面630相同的文件中。例如,搜索引擎结果页面630的HTML文件能够包括包含一个或多个搜索结果文档的CSS内容和布局信息的元数据。
[0095]在一些实现中,可以在与搜索引擎结果页面630的HTML文件分开的一个或多个文件中所提供元数据632。文件可以作为搜索引擎结果页面的被指示为完成搜索引擎结果页面630的加载所需的资源或组件被嵌入。结果,在客户端设备610处加载搜索引擎结果页面630可以使客户端设备610从计算系统620或另一系统中检索包含元数据632的附加文件。以这种方式,客户端设备610可以预先缓存搜索结果文档的元数据作为加载搜索引擎结果页面630的部分。
[0096]在阶段(D)中,客户端设备610提供包括搜索引擎结果页面630的视图的用户界面650。用户界面650包括各自包括到对应搜索结果文档的链接作为登陆页面的搜索结果652a至652c。
[0097]当用户602与搜索结果652a至652c中的一个交互时,客户端设备610请求对应的搜索结果文档。客户端设备610还使用对应的搜索结果的元数据632,其在搜索引擎结果页面630的加载期间被传送到客户端设备610,以迅速地生成具有准确的格式化和布局的搜索结果文档的表示。随着资源发现过程继续,客户端设备610更新搜索结果文档的视图,从而将其附加内容与使用元数据632生成的初始视图混合。
[0098]在一些实现中,计算系统620生成搜索引擎结果页面630以包括响应于与搜索结果652a至652c中的一个交互而使元数据632被请求的交互处理程序。例如,不是自动地下载元数据632作为加载搜索引擎结果页面630的一部分,而是用户与到搜索结果文档的链接的交互可以触发对搜索结果文档的第一请求以及对适当的元数据632的第二请求两者。
[0099]图7是图示用于加速文档加载的过程的示例的流程图。过程700可以由图7的计算系统620或另一计算系统来执行。
[0100]计算系统620接收用户输入(702)。例如,计算系统620可以接收由用户提交的搜索查询。
[0101]计算系统620获得响应用户输入的数据(704)。数据识别要响应于用户输入而引用的目标文档。例如,计算系统接收各自指示与搜索查询相关的搜索结果文档的搜索结果。
[0102]计算系统620识别用于加速目标文档的加载的元数据(706)。例如,计算系统620能够访问数据存储以识别与目标文档的布局和格式化有关的先前选择的数据。元数据被指定为与目标文档的URL相对应。在一些实现中,包括多个目标文档(诸如多个搜索结果文档)的元数据。
[0103]计算系统620生成包括到目标文档的链接并且还包括目标文档的元数据的文档(708)。在一些实现中,元数据可以是所生成的文档的一部分(例如,在HTML文件中)。在一些实现中,在客户端设备处加载所生成的文档使得该客户端设备检索目标文档的元数据。例如,计算系统620可以生成具有到搜索结果文档的链接的搜索引擎结果页面。包括搜索引擎结果页面的资源能够包括搜索结果文档中的一个或多个的元数据。替选,搜索引擎结果页面可以包括使得客户端设备请求并接收一个或多个结果文档的元数据的脚本或其它指令。
[0104]计算系统620响应于用户输入而提供所生成的文档(710)。传送或者处理所生成的文档能够传送目标文档的元数据。在加载所生成的文档之后,当客户端设备导航到目标文档时,用于加速目标文档的加载的元数据已经存在于客户端设备处。
[0105]图8是图示用于加速文档加载的过程的示例的流程图。图8的示例描述用于生成文档的元数据并且然后响应于对元数据的请求而提供该元数据的技术。
[0106]计算系统检索文档(802)。例如,能够被爬取网页,使得网页的数据被获得。文档能够作为爬取的一部分被获得以用于索引或其它目的。计算系统可以接收作为文档的组件或者影响文档的显示的所有资源。
[0107]计算系统渲染文档(804)。例如,能够利用web浏览器的布局引擎(例如,web浏览器引擎或渲染引擎)(诸如Webkit或Gecko)来渲染文档。当渲染文档时,布局引擎获得并处理文档的所有资源(包括CSS文件、Javascript文件、字体文件)以及影响文档的显示的所有其它资源。计算系统能够产生客户端设备将通过发现并产生文档中的所有嵌入式资源来产生的相同的渲染结果。计算设备可以在没有对经渲染的内容进行任何可视显示的情况下使用“无头”模式来生成清染。在一些实现中,布局引擎产生清染树和文档对象模型(DOM)树。
[0108]计算系统使用文档的渲染来提取文档的元数据(806)。计算系统分析渲染,例如,检查DOM树、渲染树以及文档的最终布局。所提取的元数据可以包括页面的布局和格式化的各种特性。例如,计算系统可以应用预定规则的集合来确定哪些元素在渲染中可见以及所述元素的大小和位置。因为最终完整渲染被分析,所以布局特性已经反映了通过对页面中的Javascript或其它指令的处理而添加或者调整的任何布局特征。
[0109]计算系统还能够走查DOM树和渲染树以识别文档的哪些资源被实际上用来影响文档的显示。此外,计算系统能够确定特定资源内的哪些部分影响文档的显示。例如,计算系统能够确定特定CSS文件提供文档的样式,但是仅所定义的样式的子集被实际上用在文档中。计算系统在元数据中包括实际上影响文档的显示的CSS数据,并且省略不影响文档的显示的CSS数据。来自文档的多个不同的资源(例如,多个CSS文件、字体文件等)的数据能够被包括在被提取的元数据中。元数据可以附加地或替选地指示DOM树、渲染树的特性。
[0110]此外,或者作为替选,可以基于来自先前已渲染文档的其它用户的数据来生成元数据。例如,在一个或多个用户设备而不是服务器系统上的渲染的特性可以被用来选择元数据。例如,在先渲染可以指示页面的折叠线位于某个设备或某个类别的设备上哪里、哪些图像被显示在折叠线上方、图像和其它元素的大小和位置、哪些CSS数据是渲染文档所需的或关于文档的其它信息。
[0111]所提取的元数据通常排除文档的可视元素。例如,可以排除标题和主体文本,但是可以包括定义文本的样式的CSS数据。类似地,可以排除文档的实际图像,但是可以包括指示图像在布局中的大小和位置的信息。
[0112]文档中的可显示元素改变地频繁,但是文档的总体设计改变地不太频繁。结果,描述文档的格式化和布局的元数据可以保持在比可显示元素更长的时间内有效。例如,网页可以包括包含频繁地被更新的文本在内的主体区域。然而,主体区域的文本样式以及大小和位置可以在数天、数星期或数月内一致。类似地,网页可以包括图像,并且尽管所包括的特定图像可以不时改变,但是该网页可以一致地包括具有相同的位置和/或大小的图像(例如,在300个像素乘300个像素的右上角中)。
[0113]省略可显示内容还可以具有其它优点。例如,如果文档改变并且元数据被用来生成文档的初始视图,则布局和格式化中的不准确可能相较于例如提供过时的图像或文本来说不太分散注意力。类似地,文档的布局和格式化通常是不敏感的,并且可能是为安全内容而提供的。
[0114]计算系统存储所提取的文档的元数据(808)。例如,计算系统能够将元数据与文档的URL或文档的另一识别符相关联。然后,当接收到对识别特定文档的元数据的请求时,能够提供特定于所识别的文档的元数据。
[0115]元数据能够由第三方生成,而无需由文档的作者对文档做出改变。结果,能够对用于提供元数据的服务进行缩放以提供大量文档的元数据。不需要改变对文档或该文档的资源的递送的方式来允许元数据被提供用于加速页面加载。
[0116]能够针对多个文档(包括来自多个发布者或互联网域的文档)中的每一个重复动作(802)至(808)。例如,系统可以存储多个文档的元数据以能够提供多个文档中的任意一个的元数据。
[0117]在文档的元数据已被存储之后,计算系统接收对文档的元数据的请求(810)。例如,计算系统接收识别文档的URL的请求。
[0118]响应于请求,计算系统识别所存储的与文档对应的元数据(812)。例如,计算系统访问被指定为与URL对应的元数据。
[0119]计算系统响应于请求而提供与文档对应的元数据(814)。通过提供元数据,在请求元数据的设备识别作为文档的一部分的特定资源之前,计算系统可以包括生成文档的正确布局所需的资源的部分,诸如CSS文件。
[0120]在一些实现中,动作(802)至(808)作为单独的过程(例如,作为用于生成一个或多个文档的元数据的合集的预处理阶段)被执行。类似地,动作(810)至(814)可以作为单独的过程被执行,例如,以在元数据的库被生成或者由另一系统提供之后提供元数据服务。
[0121]在一些实现中,web浏览器可以被配置成从文档的源服务器而不是从第三方元数据服务请求元数据。例如,能够从相同服务器请求文档的HTML文件以及对用于加速加载的元数据的请求。文档的作者能够单独地识别将帮助设备更迅速地生成文档的初始视图的他们的页面的元数据,并且能够在包含元数据的个别资源被请求之前提供元数据。
[0122]上面所描述的技术允许为通过诸如HTTPS的安全协议所提供的公用文档提取元数据。元数据可以由第三方提供并且被用来即便当文档的资源通过HTTPS被传送到源服务器时也加速页面加载。文档的实际资源不流过第三方服务器,因为元数据是在加载过程中作为附加帮助单独地被提供的。
[0123]在一些实现中,计算系统能够从客户端设备接收与文档的渲染有关的信息。在计算系统不能够访问文档的实例中,由客户端设备提供的关于文档的信息可以被用来识别用于加速页面加载的来自文档的元数据。例如,例如,在渲染文档之后,web浏览器能够提供关于页面中的元素的大小和位置的信息。web浏览器可以指示所使用的格式化和样式,并且可以提供从文档的DOM树或渲染树所导出的信息。一般而言,web浏览器可以指示文档的布局的一般属性同时省略文档中所显示的个性化内容和其它信息。来自许多不同的许多web浏览器的提交可以允许计算系统收集与计算系统不能够检索到的各种页面的渲染有关的信息。在一些实现中,可以给用户提供他们的设备是否向服务器提供信息的选项,并且可以仅当用户已选择允许文档信息的提交时才发送布局和其它文档属性。
[0124]已经描述了许多实现。然而,应当理解,可以在不脱离本公开的精神和范围的情况下做出各种修改。例如,可以使用上面所示出的各种形式的流程,同时步骤被重新排序、添加或者移除。
[0125]本说明书中所描述的实施例以及所有的功能操作可以用数字电子电路或者用计算机软件、固件或硬件(包括本说明书中所公开的结构及其结构等同物)或者用它们中的一个或多个的组合加以实现。实施例可以作为一个或多个计算机程序产品(即,在计算机可读介质上被编码以用于由数据处理装置执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块)被实现。计算机可读介质可以是机器可读存储设备、机器可读存储基质、存储器设备、影响机器可读传播信号的物质的合成物,或它们中的一个或多个的组合。计算机可读介质可以是非暂时性计算机可读介质。术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,通过示例的形式包括可编程处理器、计算机或多个处理器或计算机。装置除了包括硬件之外,还可以包括为所述的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,被生成来对信息进行编码以用于传输到适合的接收器装置的机器生成的电信号、光学信号或电磁信号。
[0126]计算机程序(还被称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且它可以被以任何形式(包括作为独立程序或作为适合于在计算环境中所使用的模块、组件、子例程或其它单元)部署。计算机程序不是必要地对应于文件系统中的文件。可以在保留了其它程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、在专用于讨论中的程序的单个文件中或者在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中存储程序。可以将计算机程序部署为在一个计算机上或者在位于一个站点处或跨越多个站点分布并通过通信网络互连的多个计算机上执行。
[0127]本说明书中所描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流程还可以由专用逻辑电路执行,并且装置还可以作为专用逻辑电路被实现,所述专用逻辑电路例如FPGA(现场可编程门阵列)或ASICX专用集成电路)。
[0128]例如,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器,以及任何类型的数字计算机中的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的必要元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或者操作耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或者向一个或多个大容量存储设备转移数据或两者。然而,计算机不需要具有这样的设备。而且,计算机可以被嵌入在另一设备(例如,平板计算机、移动电话、个人数字助理(PDA)、移动音频播放器、全球定位系统(GPS)接收器,仅举几例)中。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,通过示例的形式包括:半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移除盘;磁光盘;以及⑶-ROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者被合并在专用逻辑电路中。
[0129]为了提供与用户的交互,可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及键盘和用户可以用来向计算机提供输入的指针设备(例如,鼠标或轨迹球)的计算机上实现实施例。其它类型的设备也可以被用来提供用于与用户交互;例如,提供给用户的反馈可以是任何形式的感知反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以包括声学输入、语音输入或触觉输入的任何形式接收来自用户的输入。
[0130]实施例可以被实现在计算系统中,所述计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可以通过其与所公开的技术的实现交互的图形用户界面或Web浏览器的客户端计算机),或一个或多个这样的后端组件、中间件组件或前端组件的任何组合。本系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN” ),例如,互联网。
[0131]计算系统可以包括客户端和服务器。客户端和服务器一般地彼此远离并且通常通过通信网络交互。客户端和服务器的关系通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生。
[0132]虽然本说明书包含许多特定细节,但是这些不应该被解释为对限制,而是相反被解释为特定于特定实施例的特征的描述。还可以在单个实施例中相结合地实现在本说明书中在单独的实施例的场境中所描述的特定特征。相反地,还可以单独地在多个实施例中或在任何适合的子组合中实现在单个实施例的场境中所描述的各种特征。而且,尽管特征可以被在上面描述为在特定组合中行动并因此甚至最初要求被保护为这样,但是来自要求保护的组合的一个或多个特征可以在一些情况下从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变化。
[0133]类似地,虽然在附图中以特定次序描绘了操作,但是这不应该被理解为要求这样的操作被以所示出的特定次序或以顺序次序执行,或者要求执行所有图示的操作,以获得期望的结果。在特定情况下,多任务和并行处理可能是有利的。而且,在上面所描述的实施例中各种系统组件的分离不应该被理解为在所有实施例中都要求这样的分离,并且应该理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或者被封装到多个软件产品中。
[0134]因此,已经描述了特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中所列举的动作可以被以不同的次序被执行并且仍然获得期望的结果。
【主权项】
1.一种由数据处理装置执行的方法,所述方法包括: 从第一源请求文档的资源; 在接收所请求的资源之前,从与所述第一源不同的第二源请求所述文档的元数据; 从所述第二源接收所请求的所述文档的元数据; 从所述第一源接收所请求的所述文档的资源; 提供基于从所述第二源所接收到的元数据的所述文档的第一表示以用于显示;以及 在提供了基于来自所述第二源的所述元数据的所述文档的所述第一表示以用于显示之后: 生成将所述第一表示的部分与所述文档的附加部分组合的第二表示;以及 提供将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示以用于显不O2.根据权利要求1所述的方法,其中,从与所述第一源不同的所述第二源请求所述文档的元数据包括:从第二源请求未被所述文档的资源所识别的所述文档的元数据。3.根据权利要求1所述的方法,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 以由从所述第二源所接收到的所述元数据所指示的位置和大小来提供包括从所接收到的所述文档的资源所指示的可显示元素在内的所述文档的第一表示。4.根据权利要求1所述的方法,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 在接收指示用于对所述文档的元素进行显示的区域的所述文档的资源之前,基于所接收到的元数据来确定用于对所述元素进行显示的区域;以及 提供为所述元素保留表示的区域的所述文档的所述第一表示。5.根据权利要求1所述的方法,其中,生成将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示包括: 按照由从所述第二源所接收到的元数据所指示的位置和大小,生成添加了所述文档的附加可显示元素的第二表示。6.根据权利要求1所述的方法,其中,从所述第二源接收所请求的所述文档的元数据包括:接收包括来自级联样式表资源的样式数据在内的元数据,其中,所述样式数据包括被用在所述文档中的一个或多个样式的所述级联样式表资源中的数据,并且所述样式数据排除未被用在所述文档中的一个或多个样式的所述级联样式表资源中的数据。7.根据权利要求1所述的方法,其中,从所述第二源接收所请求的所述文档的元数据包括:接收来自所述文档的字体资源的数据。8.根据权利要求1所述的方法,其中,从所述第二源接收所请求的所述文档的元数据包括:在客户端设备处接收指示通过与所述客户端设备不同的设备对所述文档的渲染的布局或格式化的特性的数据。9.根据权利要求1所述的方法,其中,所述文档包括Javascript内容,所述Javascript内容当被处理时,影响所述文档的一个或多个元素的布局,并且 其中,从所述第二源接收所请求的所述文档的元数据包括:接收指示反映处理所述Javascript内容的效果的所述一个或多个元素的布局的数据。10.根据权利要求1所述的方法,其中,从所述第二源接收所请求的所述文档的元数据包括:接收指示所述文档的折叠线的位置的数据;并且 其中,所述方法进一步包括: 基于指示所述文档的折叠线的位置的所述数据,识别用于显示在所述文档的折叠线上方区域中的内容;以及 对所述文档的内容的处理进行优先排序,使得用于显示在所述折叠线上方区域中的所识别的内容在处理用于显示在所述折叠线上方区域外的内容之前被处理。11.一种存储计算机程序的计算机可读存储设备,所述程序包括当由一个或多个计算机执行时使所述一个或多个计算机执行操作的指令,所述操作包括: 从第一源请求文档的资源; 在接收所请求的资源之前,从与所述第一源不同的第二源请求所述文档的元数据; 从所述第二源接收所请求的所述文档的元数据; 从所述第一源接收所请求的所述文档的资源; 提供基于从所述第二源所接收到的元数据的所述文档的第一表示以用于显示;以及在提供了基于来自所述第二源的所述元数据的所述文档的所述第一表示以用于显示之后: 生成将所述第一表示的部分与所述文档的附加部分组合的第二表示;以及 提供将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示以用于显不O12.根据权利要求11所述的计算机可读存储设备,其中,从与所述第一源不同的所述第二源请求所述文档的元数据包括:从第二源请求未被所述文档的资源所识别的所述文档的元数据。13.根据权利要求11所述的计算机可读存储设备,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 以由从所述第二源所接收到的所述元数据所指示的位置和大小来提供包括从所接收到的所述文档的资源所指示的可显示元素在内的所述文档的第一表示。14.根据权利要求11所述的计算机可读存储设备,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 在接收指示用于对所述文档的元素进行显示的区域的所述文档的资源之前,基于所接收到的元数据来确定用于对所述元素进行显示的区域;以及 提供为所述元素保留表示的区域的所述文档的所述第一表示。15.根据权利要求11所述的计算机可读存储设备,其中,生成将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示包括: 按照由从所述第二源所接收到的元数据所指示的位置和大小,生成添加了所述文档的附加可显示元素的第二表示。16.一种系统,所述系统包括: 一个或多个计算机以及存储了可操作的指令的一个或多个存储设备,所述指令当由所述一个或多个计算机执行时,使所述一个或多个计算机执行操作,所述操作包括: 从第一源请求文档的资源; 在接收所请求的资源之前,从与所述第一源不同的第二源请求所述文档的元数据; 从所述第二源接收所请求的所述文档的元数据; 从所述第一源接收所请求的所述文档的资源; 提供基于从所述第二源所接收到的元数据的所述文档的第一表示以用于显示;以及在提供了基于来自所述第二源的所述元数据的所述文档的所述第一表示以用于显示之后: 生成将所述第一表示的部分与所述文档的附加部分组合的第二表示;以及 提供将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示以用于显不O17.根据权利要求16所述的系统,其中,从与所述第一源不同的所述第二源请求所述文档的元数据包括:从第二源请求未被所述文档的资源所识别的所述文档的元数据。18.根据权利要求16所述的系统,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 以由从所述第二源所接收到的所述元数据所指示的位置和大小来提供包括从所接收到的所述文档的资源所指示的可显示元素在内的所述文档的第一表示。19.根据权利要求16所述的系统,其中,提供基于从所述第二源所接收到的元数据的所述文档的所述第一表示以用于显示包括: 在接收指示用于对所述文档的元素进行显示的区域的所述文档的资源之前,基于所接收到的元数据来确定用于对所述元素进行显示的区域;以及 提供为所述元素保留表示的区域的所述文档的所述第一表示。20.根据权利要求16所述的系统,其中,生成将所述第一表示的部分与所述文档的所述附加部分组合的所述第二表示包括: 按照由从所述第二源所接收到的元数据所指示的位置和大小,生成添加了所述文档的附加可显示元素的第二表示。
【文档编号】G06F17/30GK105900091SQ201480072796
【公开日】2016年8月24日
【申请日】2014年11月14日
【发明人】拉姆库玛·拉马尼, 罗伯特·J·恩纳尔斯
【申请人】谷歌公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1