批处理优化渲染和获取架构的制作方法

文档序号:12287929阅读:217来源:国知局
批处理优化渲染和获取架构的制作方法与工艺

万维网是丰富的信息源。如今,估计有超过一万亿的独特网页。这些页面中的许多是动态创建的(例如,纽约时报的主页),并且具有指向诸如图像和视频的嵌入式内容的链接,其可影响渲染的网页的内容和外观。例如,当浏览器执行诸如JavaScript代码的脚本时,这可影响对于用户而言网页看起来如何并且在浏览器完成渲染网页之后改变页面的内容和/或视觉外观。作为另一示例,一些网页使用样式表,其告诉浏览器如何改变文本的外观。典型的网页可具有数以百计这样的附加嵌入式项,其中一些是专门设计用于浏览器渲染引擎的或者针对浏览器渲染引擎。通过渲染处理生成的附加信息可有助于诸如互联网搜索引擎的下游系统。尽管对于单个用户的web浏览器而言实时地渲染单个网页相对简单,但是实时地渲染大量的页面(诸如万维网上的所有页面(1万亿个页面)或者甚至仅仅是万维网上的前1%的页面(100亿个页面))会困难很多。



技术实现要素:

实现方式包括针对下游用户(诸如网页索引系统)的网页的批处理(batch)渲染优化的渲染服务器和获取服务器。当下游用户识别出具有一个或更多个嵌入式项的网页(例如,利用其URL)时,下游用户可请求渲染服务器渲染URL以生成渲染结果。渲染服务器可包括许多(例如,数以万计)的渲染引擎。每个渲染引擎对针对批处理渲染优化的浏览器内核进行仿真,包括使用消除许多渲染错误的虚拟时钟。在渲染期间,随着渲染引擎发现嵌入式项,渲染引擎向获取服务器请求嵌入式项。获取服务器包括以每个嵌入式项的标识符(例如,它的URL)作为键的嵌入式项以及由web爬取器检索的该项的内容的数据仓库。在数据仓库中查找嵌入式项之前,获取服务器可利用重写规则来重写URL。当URL的内容与另一嵌入式项(例如,由重定向URL表示)重复时,重写规则可用重定向URL来替换URL。如果所请求的嵌入式项是重复的,则获取服务器可重写URL以使用重定向URL,这允许使用已经检索的重定向URL的内容,代替获取所请求的URL的内容。这种消除重复方法可显著减少由获取服务器作出的爬取请求的实际数量并且改善渲染引擎的响应时间。重写规则还可指示URL被列入黑名单。在一些实现方式中,获取服务器可存储嵌入式图像的尺寸,而非实际内容。当渲染引擎请求图像时,获取服务器可生成具有该图像的尺寸的虚假图像,并且将该虚假图像返回给渲染引擎。当渲染引擎完成了网页渲染时,它可将渲染结果提供给下游用户(诸如索引引擎),该下游用户可使用渲染结果中的信息来增强对网页的处理。

在一个方面,一种计算机系统包括至少一个处理器和存储器,该存储器存储有嵌入式项的内容的数据仓库以及当由所述至少一个处理器执行时使得所述系统执行操作的指令。所述操作包括从批处理进程(a batch process)接收渲染网页的请求并且识别网页中的嵌入式项。所述操作还包括基于重写规则确定所述嵌入式项具有与先前获取的嵌入式项的内容重复的内容,并且响应于所述确定,从数据仓库提供所述先前获取的嵌入式项的内容,利用所述先前获取的嵌入式项的内容生成网页的渲染结果,并且将渲染结果提供给批处理进程。

本文所述的主题的一个或更多个实现方式可包括下列特征中的一个或更多个。例如,确定所述嵌入式项具有与先前获取的嵌入式项的内容重复的内容可包括将所述嵌入式项与重写规则的模板进行匹配,所述重写规则包括重定向标识符。在这样的实现方式中,提供所述先前获取的嵌入式项的内容包括使用重定向标识符来定位所述先前获取的嵌入式项的内容,和/或模板可包括没有查询串的URL。

作为另一示例,所述嵌入式项可以是第一嵌入式项,并且所述操作还可包括:识别网页中的第二嵌入式项;确定第二嵌入式项是否被列入黑名单;当第二嵌入式项被列入黑名单时返回错误,而不获取第二嵌入式项的内容;生成没有第二嵌入式项的内容的渲染结果。作为另一示例,所述操作可包括当生成渲染结果时使用虚拟时钟,所述虚拟时钟独立于真实时间而前进。作为另一示例,所述操作可包括当生成渲染结果时使用虚拟时钟,其中在等待所述先前获取的嵌入式项的所提供的内容的同时,所述虚拟时钟不前进。

作为另一示例,所述嵌入式项可以是第一嵌入式项,并且所述操作可包括:识别网页中的第二嵌入式项;确定第二嵌入式项包括图像;利用尺寸表生成指定第二嵌入式项的尺寸的虚假图像;以及使用所述虚假图像来生成渲染结果。

在另一方面,一种计算机实现的方法包括:从批处理进程接收渲染网页的请求;将虚拟时钟和任务列表初始化以用于渲染所述网页,其中,当对嵌入式项的请求未完成时并且当任务准备好运行时所述虚拟时钟保持静止。所述方法还包括:当所述虚拟时钟与任务列表中的停止任务的运行时间匹配时生成网页的渲染结果,并且将所述渲染结果提供给批处理进程。

本文所述的主题的一个或更多个实现方式可包括下列特征中的一个或更多个。例如,将任务列表初始化可包括向停止任务添加运行时间,该运行时间被设定为添加到所述虚拟时钟的预定时间。所述预定时间可为至少5秒。作为另一示例,所述方法还可包括:当没有对嵌入式项的请求未完成并且任务列表中仅存在运行时间大于所述虚拟时钟的任务时,使所述虚拟时钟前进至任务列表中的任务的运行时间。作为另一示例,所述方法还可包括:识别网页中的嵌入式图像;请求嵌入式图像的内容;响应于所述请求,接收指定嵌入式图像的尺寸但是内容为空的虚假图像;以及使用所述虚假图像来生成渲染结果。作为另一示例,所述批处理进程可以是索引引擎,并且所述方法还包括基于渲染结果中的信息使网页的排名降低和/或使用渲染结果来索引动态生成的内容。

在另一方面,一种方法包括从批处理渲染进程接收对网页中的嵌入式项的统一资源定位符(URL)的请求,并且应用重写规则以确定重写的URL。所述方法还可包括确定重写的URL的内容是否存在于数据仓库中,并且当所述内容存在时,将所述内容提供给批处理渲染进程。当所述内容不存在时,所述方法可包括:发起对所述内容的获取,其中,批处理渲染进程被配置为在获取期间在不暂停的情况下等待;从web爬取引擎接收所述内容;将所述内容提供给批处理渲染进程;以及将所述内容存储在数据仓库中。可由批处理渲染进程利用所述内容来生成网页的渲染结果。

本文所述的主题的一个或更多个实现方式可包括下列特征中的一个或更多个。例如,应用重写规则可包括将URL与模板进行匹配,所述模板与重定向URL关联,其中,当URL与模板匹配时,重定向URL被确定为重写的URL,并且其中,当URL未能与模板匹配时,所述URL被确定为重写的URL。作为另一示例,所述方法还可包括基于存储在数据仓库中的嵌入式项的变化率或类型来确定重写的URL的内容失效(stale),并且响应于确定重写的URL的内容失效,从web爬取引擎接收经更新的内容,利用经更新的内容来更新数据仓库,并且提供经更新的内容作为重写的URL的内容。

在另一方面,一种计算机系统包括至少一个处理器和存储器,该存储器存储有通过图像标识符存储的尺寸表以及指令,所述指令在由所述至少一个处理器执行时使得所述系统执行操作。所述操作可包括识别网页中的嵌入式图像,根据尺寸表确定嵌入式图像的尺寸,并且利用所述尺寸生成虚假图像。所述操作还可包括利用虚假图像生成网页的渲染结果。

在另一方面,一种计算机实现的方法包括从批处理进程接收渲染网页的请求并且识别网页中的至少一个嵌入式图像。该方法还包括:从获取服务器接收虚假图像,该虚假图像具有嵌入式图像的尺寸并且内容为空;以及利用所述虚假图像生成网页的渲染结果。在一些实现方式中,该方法可将渲染结果提供给请求网页的批处理进程。

在另一方面,非暂时性计算机可读介质可包括可由形成在基底中的至少一个处理器执行的指令,其使得计算机系统执行上述一个或更多个方法。

本文所述的主题的一个或更多个实现方式可被实施为实现下列优点中的一个或更多个。作为一个示例,由于批处理渲染引擎未连接至输入装置(例如,键盘、鼠标)或输出装置(例如,显示器、触摸屏等),所以渲染引擎可比例如具有机器友好的API而非用户友好的API的实际浏览器渲染器更简单和流畅。另外,由于渲染引擎不需要显示最终渲染的页面或者与用户交互,所以渲染引擎可使用虚拟时钟,该虚拟时钟基于完成的任务而非实际时间来前进,这可快速跟踪渲染进程并且避免常见错误。例如,批处理环境中的获取可比个人web环境慢许多,这可能导致许多超时错误。虚拟时钟掩盖了获取延时,从而避免了超时错误。虚拟时钟还允许更具确定性的结果。例如,在包括日期/时间组件的URL中,并非利用固定的时间替换日期/时间组件,系统可使用虚拟时钟的值。这意味着并非网页中的所有时间参数均将具有相同的值,而是每次网页被渲染时特定时间参数将具有相同的值。这种灵活性允许系统使时间前进(这在一些网页中对于渲染结果的正确性而言重要),同时仍确保所请求的URL集合在渲染器间保持相同(这导致较少爬取请求)。系统还可避免获取不必要的项,例如,列入黑名单的项。存储图像的尺寸,而非图像的实际内容,降低了获取服务器中的对图像的存储要求,使得需要传送至渲染引擎的数据较少,并且进一步改善了渲染引擎处的渲染时间。重写URL避免了获取重复的内容,进一步加速了批处理渲染进程。

附图说明

图1图示出根据所公开的主题的示例系统。

图2是具有嵌入式项的网页的框图。

图3是根据实现方式的批处理渲染引擎的框图。

图4是图示出根据实现方式的批处理渲染引擎可渲染具有嵌入式对象的网页的示例进程的流程图。

图5是图示出根据实现方式的批处理渲染引擎使虚拟时钟前进的示例进程的流程图。

图6是图示出根据实现方式的获取服务器将嵌入式项的内容提供给批处理渲染引擎的示例进程的流程图。

图7是图示出根据实现方式的获取服务器将虚假图像提供给批处理渲染引擎的示例进程的流程图。

图8示出可用于实现所描述的技术的计算机装置的示例。

图9示出可用于实现所描述的技术的分布式计算机装置的示例。

具体实施方式

为了完整地渲染网页,必须首先获得网页中的所有嵌入的外部资源的内容。这些资源可包括(但不限于)外部图像、JavaScript代码和样式表。相同的外部资源经常被嵌入许多不同的网页中。尽管对于单个用户的web浏览器而言实时地(即,当渲染嵌入资源的页面时)请求诸如Google Analytics JavaScript代码的外部网页资源是有效的,但是对于批处理渲染引擎而言这样做既不可行也不有效。例如对于网页索引进程,批处理渲染引擎被设计为有效并快速地一次渲染大量的网页。但是获取嵌入的外部资源会缓慢,并且有时这样的资源对于批处理进程不重要(例如,没有人用户查看最终渲染的产品)。为了改善在批处理环境中渲染网页的处理时间,渲染引擎可利用虚拟时钟来工作,可与获取服务器一起工作以避免重复和不必要的获取,并且可使对网页中的视觉或其它面向用户的元素的处理最小化。

图1是根据示例实现方式的系统的框图。系统100可用于针对作出请求的进程有效且快速地以批处理模式渲染网页。系统100中所示的作出请求的进程是用于互联网搜索引擎的索引引擎,但是实现方式不限于索引引擎作为所渲染的网页的下游用户。例如,作出请求的进程可以是分析页面来诊断缓慢问题或者确定诸如Google Analytics的工具是否正确地设置的分析引擎,或者广告系统,或者依赖于与复杂网页的自动交互(例如,填写表单或者点击元素)的其它系统。因此,尽管系统100可能被描述为使用批处理生成的渲染结果进行索引,系统100可用于渲染结果中提供的信息有用的其它批处理系统。

系统100可以是计算装置或者采取若干不同装置的形式的装置。例如,系统100可以是标准服务器、一组这样的服务器、客户端-服务器系统或者机架式服务器系统。另外,系统100可被实现于个人计算机中。系统100可以是如图8中所描绘的计算机装置800或者如图9中所描绘的计算机装置900的示例。

系统100包括web爬取引擎130、诸如索引引擎110的作出请求的进程、渲染服务器140和获取服务器150。web爬取引擎130、渲染服务器140和获取服务器150一起工作以有效地渲染大量的网页,诸如可在万维网上找到的网页。渲染网页的结果是渲染结果,其包括可用于以及否则不可用于作出请求的进程的各种数据元素。

索引引擎110可包括被配置为执行一个或更多个机器可执行指令或者软件、固件或其组合的片段以创建索引115的一个或更多个处理器。例如,索引引擎110可经由web爬取引擎130从服务器190接收信息。索引引擎110可处理所接收的网页的内容以生成索引115。服务器190可以是可通过互联网访问的托管一个或更多个网页或者嵌入一个或更多个网页中的资源的任何类型的计算装置。由爬取引擎130访问的网页可包括诸如样式表、JavaScript、图像等的嵌入式项,其中一些可更改所渲染的网页的内容和布局。尽管索引引擎110可索引经由爬取引擎130提供了什么,索引引擎可要求渲染服务器140提供网页的浏览器渲染的渲染结果,其包括否则不可用于索引引擎110的布局信息和动态内容。索引引擎110可使用渲染结果内容来增强索引115中关于文档可用的信息。例如,索引引擎110可基于网页图像中的文本的位置或大小来更改网页中的文本元素的排名。例如,首屏出现(above-the-fold)(例如,无需滚动就可见)的文本可被认为比线下文本更重要。作为另一示例,广告中的文本可被认为不如网页重要。另外,由于一些内容被动态地生成(例如,直至网页被渲染之后才可用),所以索引引擎110可使用渲染结果来索引动态地生成的内容。尽管为了简明起见图1中未示出,在一些实现方式中,索引引擎110可分布于或更多单独的计算装置上。

类似索引引擎110,查询引擎120可包括使用索引115来识别查询182的搜索结果(例如,使用传统或其它信息检索技术)的一个或更多个服务器。查询引擎120可包括从诸如客户端180的请求者接收查询182的一个或更多个服务器。查询引擎120可利用索引115来识别响应于查询的文档,并且将来自响应文档的信息作为搜索结果184提供给请求者。在一些实现方式中,查询引擎120还可使用渲染结果数据仓库148中的渲染结果来提供缩略图作为搜索结果184的一部分。查询引擎120可包括例如利用一个或更多个排名信号来计算响应于查询的文档的得分的排名引擎。一个或更多个排名信号可基于从与文档关联的渲染结果获得的内容。排名引擎可利用所述得分来对响应于查询找到的文档进行排名。

系统还可包括web爬取引擎130。web爬取引擎130可包括被配置为执行一个或更多个机器可执行指令或者软件、固件或其组合的片段的一个或更多个处理器。web爬取引擎130可以是诸如标准服务器、一组这样的服务器、客户端-服务器系统或者机架式服务器系统的计算装置。在一些实现方式中,web爬取引擎130可与系统100的其它组件(诸如获取服务器150或索引引擎110)共享诸如存储器或硬件处理器的组件。web爬取引擎130可爬取可在万维网上找到的网页。当web爬取引擎130接收所爬取的网页(即,所爬取的网页的内容)时,web爬取引擎130可将内容提供给请求者,其可以是索引引擎110或获取服务器150。web爬取引擎130还可将内容存储在数据仓库(未示出)中并且向请求者提供位置。如本文所用,网页的内容表示提供给网页渲染引擎并且用于渲染网页以用于显示在web浏览器中的HTML代码,并且包括指向嵌入网页中的外部对象(诸如样式表、JavaScript、其它网页或图像文件)的任何链接。web爬取引擎130还可由获取服务器150用来获取这些嵌入式项的内容。web爬取引擎130可将嵌入式项的内容提供给获取服务器150,或者可将所获取的内容存储在数据仓库(诸如嵌入式项表152)中。web爬取引擎130可通知请求者嵌入式项何时被爬取。

如先前提及的,系统100包括获取服务器150。获取服务器150可包括被配置为执行一个或更多个机器可执行指令或者软件、固件或其组合的片段的一个或更多个处理器。获取服务器150可以是诸如标准服务器、一组这样的服务器、客户端-服务器系统或者机架式服务器系统的计算装置。在一些实现方式中,获取服务器150可与系统100的其它组件(诸如渲染服务器140、web爬取引擎130或索引引擎110)共享诸如存储器或硬件处理器的组件。获取服务器150被配置为请求web爬取引擎130获取特定嵌入式项的内容(例如,通过其URL)并且接收所获取的内容和所请求的嵌入式项的爬取时间。获取服务器150可直接从web爬取引擎130或者从web爬取引擎130更新的嵌入式项表152接收内容和获取时间。获取服务器150可从渲染引擎142接收对嵌入式项的请求。获取服务器150可向请求渲染引擎142提供响应。该响应可包括获取的或者存储在嵌入式项表152中的内容、基于图像尺寸表156的虚假图像(mock image)或者错误响应。在一些实现方式中,获取服务器150可通过将嵌入式项的内容和爬取时间发送至请求嵌入式项的渲染服务器140的渲染引擎142来提供嵌入式项的内容。另选地,获取服务器150可通过通知渲染引擎142嵌入式项的内容和爬取时间可经由嵌入式项表152中的指定位置获得来提供内容,并且渲染引擎142可从该数据仓库检索网页的内容和爬取时间。

获取服务器150可将URL重写规则154应用于所请求的嵌入式项(例如,所请求的URL)。URL重写规则154包括当URL与和另一URL相同的内容关联时用于重写URL的规则。这常常发生在网站所有者想要浏览器每次请求资源时下载内容,并且因此提供动态生成的URL或者缓存清除(cache-busting)URL时。这样的URL常常具有作为URL的部分嵌入的时间戳或随机串,其使得每次例如通过生成缓存清除URL的JavaScript渲染网页时URL是独特的。然而,从托管服务器提供的动态生成的URL的内容没有改变,或者没有按照对于批处理渲染目的有意义的方式改变。获取服务器150可使用URL重写规则154来更有效地响应对嵌入式项的请求。例如,URL重写规则154可包括模式或模板,与规则的模板匹配的URL返回相同的内容(例如,重复的内容)。在一些实现方式中,模板可通过利用获取日志并且识别具有重复内容的URL所共有的URL中的模式来比较各种URL的内容的离线或批处理进程来确定。获取日志可例如由web爬取引擎130或获取服务器150维持。模板也可由用户输入。如果所请求的嵌入式项具有与模板中的一个匹配的URL,则URL重写规则154可告知获取服务器150所请求的项是重复的并且指示它利用与先前获取的内容关联的重定向URL(例如,具有嵌入式项表152中的内容的URL)重写所请求的URL。先前获取的嵌入式项的URL可被认为重定向URL。这允许获取服务器150避免不必要地获取,加速其对请求批处理渲染引擎142的响应,并且消除由过多的获取请求导致的托管服务器的压力。当然,如果所请求的URL不与URL重写规则154中的模板匹配,则重写URL可导致所请求的URL没有改变。

URL重写规则154还可包括列入黑名单的URL的模式或模板。如果所请求的嵌入式项与列入黑名单的URL模式匹配,则系统可返回预定错误而非尝试获取该URL的内容。列入黑名单的URL可在确定该内容不需要被用于批处理渲染的目的之后由用户输入URL重写规则154中。其一个示例是许多网页包括的Google Analytics JavaScript代码。该JavaScript代码可被认为对所渲染的页面的布局而言不重要,并且不需要为了批处理渲染引擎的目的而运行。因此,为了渲染效率,可利用URL重写规则154将一些嵌入式项列入黑名单。在一些实现方式中,并非针对列入黑名单的URL返回错误,系统可利用如上所述的重定向URL将URL重写为嵌入式项表152中的永不失效并且具有适合于嵌入式项的预定内容的条目。在一些实现方式中,URL重写规则可在URL与模板匹配时将它标记为列入黑名单。URL重写规则154可显著减少经由web爬取引擎130获取的嵌入式项的数量,从而改善对资源的任何请求的获取服务器150响应时间并且使任何特定服务器190上的获取量最小化。使获取量最小化确保了系统不会用获取请求淹没服务器190。在一些实现方式中,获取服务器150和/或web爬取引擎130可被配置为限制在服务器190处进行的获取请求的数量,并且如果请求超过该限制,则系统可开始对请求进行排队。如果队列变得过大,则系统可能无法处理获取请求。因此,URL重写规则154还可使获取量最小化。

在一些实现方式中,获取服务器150可包括图像尺寸表156。图像尺寸表156可以是将图像URL与图像的已知尺寸关联的键值存储。已知尺寸可在获取图像时确定。利用所请求的图像的尺寸,获取服务器150可生成具有与所请求的图像相同的尺寸,但是内容为空或者仅具有瓦片作为内容的虚假图像。虚假图像是具有与所请求的图像相同的尺寸但是没有相同的图像数据的有效图像。由于获取服务器150为批处理渲染引擎获取内容,所以实际图像对于渲染结果而言可能不重要,但是图像的尺寸可能影响所渲染的页面的布局。使用虚假图像而非实际图像使得文件大小非常小(例如,仅每图像几十字节),这节省了传送虚假图像时的网络带宽以及用于批处理渲染引擎的处理器和存储器资源。在一些实现方式中,图像尺寸表156可以是诸如SSTable的键值存储,但是尺寸表156可以是通过图像标识符存储尺寸的任何数据结构。

系统100可包括嵌入式项表152。嵌入式项表152可以URL作为键并且可存储从web爬取引擎130返回的嵌入式项的获取的内容。在一些实现方式中,嵌入式项表152还可存储爬取历史。例如,在一些实现方式中,嵌入式项表152可包括在一段时间(例如,七天、两周等)内获取的内容。嵌入式项表152还可包括基于爬取历史的变化率。在一些实现方式中,嵌入式项表152可被实现为BigTable、关系数据库、Hadoop分布式文件等。获取服务器150可使用嵌入式项表152来快速地返回先前获取的嵌入式项的内容。由于获取服务器150可处理对数以千计的批处理渲染引擎的请求,所以所请求的嵌入式项之前响应于早前获取请求已经获取过的可能性很高。当所获取的内容位于嵌入式项表152中时,获取服务器150可利用嵌入式项表152中的内容来响应请求,而非要求web爬取引擎130提供内容。这减轻了存储获取的内容的服务器190的负担并且允许获取服务器150更快速地响应对嵌入式项的请求。获取服务器150还可通过利用URL重写规则154消除重复URL来减少爬取请求。

如果在渲染进程的任何阶段,一个或更多个所请求的嵌入式项的内容没有存储在嵌入式项表152中或者已失效,则获取服务器150可指示web爬取引擎130调度对所请求的嵌入式项的爬取。一旦web爬取引擎130已爬取所请求的嵌入式项,它就通知获取服务器150。然后获取服务器150可将所获取的内容连同爬取时间一起存储在嵌入式项表152中。如果嵌入式项是图像,则获取服务器150可另选地或另外地将所获取的图像的尺寸连同爬取时间一起存储在图像尺寸表156中。然后,获取服务器150可将所请求的内容发送回请求渲染引擎142,或者对于图像文件,可将具有所述图像尺寸的虚假图像发送回请求渲染引擎142。

系统100包括渲染服务器140。渲染服务器140可包括被配置为执行一个或更多个机器可执行指令或者软件、固件或其组合的片段的一个或更多个处理器。渲染服务器140可以是诸如标准服务器、一组这样的服务器、客户端-服务器系统或者机架式服务器系统的计算装置。在一些实现方式中,渲染服务器140可与系统100的其它组件(诸如获取服务器150或索引引擎110)共享诸如存储器或硬件处理器的组件。渲染服务器140从索引引擎110或者其它作出请求的进程接收请求,以渲染特定网页。换言之,渲染服务器140可接收所请求的网页的URL。渲染服务器140可包括一个或许多个渲染引擎142。在一些实现方式中,渲染服务器140包括数以万计的渲染引擎142并且可执行负载平衡以选择渲染引擎142来渲染网页。一旦选择渲染引擎142,该渲染引擎142就尝试将网页渲染为渲染结果。网页可被称作嵌入器网页,因为它通常包括附加嵌入式项。

每个渲染引擎142被配置为模拟用于个人web浏览器的渲染器,但是针对批处理渲染进行了优化。因此,在渲染引擎142接收嵌入器网页之后,它可开始填充任务列表,任务表示渲染引擎142为了生成渲染结果而进行的工作。尽管许多任务可被调度为立即运行,一些任务可在未来调度。针对渲染引擎142的批处理优化中的一个是使用虚拟时钟并且向任务列表添加指示渲染在预定时间完成的任务。例如,在一些实现方式中,任务可指示渲染在当前时间加20秒完成。所述预定时间可基于大部分网页设计者将网页设计为看起来完成的时间,例如,任何动画或布局改变被设计为在所述预定时间内完成。由于大多数用户无法接受为页面加载等待非常长时间来,所以所述预定时间可介于5和20秒之间,但是对于一些情况它可能更长。由于虚拟时钟的使用,渲染引擎142将不会花费整个20秒,并且如果嵌入式项还未被爬取(例如,获取服务器150可将内容置于嵌入式项表152中)则完全渲染经常可在几秒内发生。因此,生成最终渲染结果的任务可被添加到任务列表,其开始时间距当前时间20秒。当前时间基于虚拟时钟的初始化时间,其可为零或者真实时钟的当前时间。

作为渲染进程的一部分(例如,渲染任务之一),渲染引擎142可确定嵌入器网页是否包括诸如样式表、图像文件、Java script等的任何嵌入式项。这些嵌入式项被称作初级嵌入式对象。如果网页不包含任何嵌入式对象,则渲染引擎可立即将网页处理成渲染结果,并且可将渲染结果存储在渲染结果数据仓库148中。然而,如果网页包含嵌入式项,则渲染引擎142可提取所有嵌入式项并且向获取服务器150发送对嵌入式项的内容的请求。所请求的嵌入式项各自由相应的URL表示。然而,渲染引擎142在等待所获取的资源的同时不停止渲染或者暂停。相反,由于渲染引擎142使用虚拟时钟(将在下面更详细地说明),所以等待经由web爬取引擎130获取的资源不会使时钟前进并且渲染引擎142不会暂停。

当接收到所请求的嵌入式项的内容时,渲染引擎142可向任务列表添加处理内容的任务。内容处理的一部分可包括发现所请求的嵌入式对象(即,初级嵌入式对象)本身是否具有嵌入式对象(即,次级嵌入式对象)。如果初级嵌入式对象不包含次级嵌入式对象,则渲染引擎142可继续处理改变图像性质的渲染任务(例如,执行JavaScript代码)。然而,如果初级嵌入式对象包含一个或更多个次级嵌入式对象,则渲染引擎142向获取服务器150请求次级嵌入式对象。该发现和请求嵌入式对象的进程被重复,直至渲染引擎发现、请求并接收了嵌入待渲染的网页中的所有对象的内容(例如,初级、次级、三级等)。

每个嵌入式项请求可以是任务列表中一旦获取服务器150返回了内容就被移除的任务。当内容被返回时,渲染引擎142可添加用于处理内容的任务,其继而可添加诸如改变图像上的不透明度、运行脚本等的附加任务。每个任务可与运行时间关联。一些任务可具有未来运行时间。例如,为了使图像淡入(或淡出),浏览器可向任务列表添加若干任务,每个任务按照时间间隔改变图像的不透明度。如下面更详细地说明的,相对于任务列表,渲染引擎142可使用虚拟时钟(而非实时)来确定任务何时准备好运行。

渲染引擎142施行任务列表中的进程渲染任务,直至渲染完成,例如,生成渲染结果。然后,渲染引擎142可将渲染结果存储在渲染结果数据仓库148中和/或将渲染结果提供给作出请求的进程(例如,索引引擎110)。然后,作出请求的进程(诸如索引引擎110)可将从渲染结果提取的信息用于处理网页。例如,作出请求的进程可使用JavaScript错误、布局信息、样式信息、广告空间信息、获取的资源的列表、效能统计等,其全部可包括在渲染结果中,但是否则不可用于作出请求的进程。

系统100可通过网络170与客户端180和服务器190通信。网络170可以是例如互联网,或者网络170可以是利用例如网关装置、网桥、交换机等实现的有线或无线局域网(LAN)、广域网(WAN)、这些的组合等。经由网络170,查询引擎、web爬取引擎130和/或获取服务器150可与客户端180和/或服务器190通信以及向其/从其传送数据。

系统100还可包括为了简明而未示出的其它组件。例如,索引引擎110、查询引擎120、web爬取引擎130、渲染服务器140和获取服务器150中的一个或更多个可跨一个或更多个计算装置分布。类似地,索引115、渲染结果数据仓库148、嵌入式项表152和图像尺寸表156也可跨多个计算装置存储。在一些实现方式中,系统100的各种组件可共享计算装置的硬件组件,或者可以是同一计算装置的逻辑分区。

图2是具有嵌入式对象的网页的框图。如图中所示,网页200可包含多个嵌入式项。这些嵌入式对象可包括(但不限于)其它网页210、样式表220、图像文件230、所谓的缓存清除URL 240和JavaScript代码250。另外的不同类型的嵌入式对象当然也是可能的。此外,嵌入网页200中的每个对象可嵌入有其它对象。例如,嵌入网页200中的网页210可嵌入有其它网页、图像文件、样式表等。同样,嵌入网页200中的样式表220可嵌入有诸如背景图像文件的其它对象。另外,嵌入网页210或样式表220中的每个对象可自己嵌入有甚至更多对象。为了将这样的网页完整地渲染成图像文件,批处理渲染引擎必须请求嵌入式对象210-250(主级嵌入式对象)中的每一个、嵌入嵌入式对象210-250中的所有对象(次级嵌入式对象)以及嵌入嵌入式对象210-250中的对象中所嵌入的所有对象(三级嵌入式对象)等等。

如上所述,尽管个体用户的web浏览器可有效地实时请求所有这些嵌入式对象并且使用它们来完整地渲染和显示网页200,但是批处理渲染引擎可被优化以使得它不获取重复或不必要的内容,使得它不暂停以等待嵌入式对象的内容,并且使得它尽可能快速地完成渲染,而不管任务的内部定时如何。因此,为了有效地将大量爬取的网页渲染成渲染结果,可采用诸如图1所公开的系统。

图3是根据实现方式的批处理渲染引擎142的一些组件的框图。批处理渲染引擎可包括图3中未示出的附加组件。批处理渲染引擎142包括页面任务列表305、虚拟时钟310和渲染结果315。虚拟时钟310可用于扭曲用于加载网页的时间线并且避免由于等待获取的资源而可能发生大量的错误。虚拟时钟310可在渲染进程的开始处被初始化为零或者当前时钟时间,并且只有当渲染引擎不等待嵌入式项的获取时以及当页面任务列表305中不存在准备好在当前时间运行的任务时才可前进。当虚拟时钟前进时,渲染引擎142基于页面任务列表305使虚拟时钟310前进。换言之,渲染引擎142使虚拟时钟310前进至由接下来发生的任务表示的时间。从这个意义上讲,获取嵌入式项并且运行JavaScript不花费虚拟时间,这可避免实时(或个人)浏览器遇到的整个类别的错误。另外,渲染进程可比任务列表中指定的时间快许多实时完成。例如,尽管任务“生成最终渲染”被设定为发生在20秒,虚拟时钟通常实际在几秒内前进至20秒,这取决于它花费多长时间来实际完成页面任务列表305中的任务。页面任务列表305中的“生成最终渲染”任务是告知批处理渲染引擎142渲染何时完成的停止任务的示例。

渲染引擎142可渲染嵌入器网页的渲染结果315。渲染结果315可包括各种组件。例如,渲染结果315可包括渲染的页面的图像316。图像316可以是将被显示给实时(或个人)web浏览器的用户的图像,并且可用于例如将渲染的页面的缩略图显示给用户。渲染结果315还可包括文档对象模型(DOM)树317。DOM树317表示网页的HTML结构。例如,系统可通过处理DOM树来确定对用户可见的文档的令牌或文本。渲染结果315还可包括布局318。布局318包括用于网页的每个元素的框,所述框指定图像316中的元素的坐标。例如,布局可包括DOM树中的DOM节点的框表示(尽管并非每一个DOM元素均可具有对应渲染框)。框可按照树结构(也被称作渲染树)来组织。因此,例如,表可由布局中的框表示,并且段落可由布局中的另一框表示。因此,布局318提供网页上元素出现在哪里、它在网页上占据多少空间等的指示。因此,布局318提供关于网页有多少为广告、段落有多突出(例如,首屏出现或次屏出现(below-the-fold))、元素是否可见等的信息。布局318因此提供关于网页的元素的几何信息。渲染结果315还可包括错误320。错误320包括作为脚本(例如,JavaScript)运行的结果遇到的错误。渲染结果315还可包括在渲染期间获取的嵌入式资源319的列表,并且可包括作为渲染进程的部分生成的其它元素。因此,渲染结果315提供无法仅仅经由从托管服务器对内容的获取而可用于作出请求的进程的信息。例如,索引引擎可使用渲染结果信息来对索引中的元素进行排名,以避免提供不可见元素作为片段的一部分,并且索引动态生成的内容。动态生成的内容是在渲染网页之后存在但是不在所爬取的内容中的内容。

图4是图示出根据实现方式的批处理渲染引擎可渲染具有嵌入式对象的网页的示例进程400的流程图。进程400可由诸如图1的系统100的系统执行。该系统可使用进程400来应下游进程(诸如广告系统或互联网索引系统)的请求在批处理模式下生成网页的渲染结果。在一些实现方式中,进程400可由渲染服务器的批处理渲染引擎执行,并且可响应于来自作出请求的进程的请求而发起。

进程400可开始于接收渲染网页的请求(405)。在一些实现方式中,请求可包括所请求的网页的URL和/或所获取的内容以及关联的元数据(例如,爬取时间)。在一些实现方式中,并非接收网页的内容,批处理渲染引擎可接收在数据库中网页的内容可用的通知并且可从该数据库检索该内容和关联的元数据(例如,爬取时间)。由于例如作出请求的进程已经获取了内容,可提供所获取的内容。批处理渲染引擎可通过将虚拟时钟初始化并且将向任务列表添加停止任务来开始渲染(410)。例如,批处理渲染引擎可将虚拟时钟设定为零并且向任务列表添加停止任务,其使得渲染引擎确定渲染在预定时间完成。与该停止任务关联的运行时间可以是大多数网页在个体用户的机器上完成加载的时间。例如,该时间可为15或20秒。作为开始渲染的一部分,批处理渲染引擎还可向任务列表添加其它任务,诸如获取网页的内容(如果内容没有被提供的话)以及处理网页的内容。例如,这些任务可按照虚拟时间零而被添加,因此它们可立即开始。

然后,批处理渲染引擎可开始施行任务列表中的任务(415)。例如,作为处理网页的内容的一部分,批处理渲染引擎可识别一个或更多个嵌入式项(420)。然后,批处理渲染引擎可向获取服务器请求嵌入式项的内容(425)。获取服务器可以是图1的获取服务器150。在一些实现方式中,批处理渲染引擎可记录它识别出哪些嵌入式项以及获取服务器是否返回了相应嵌入式项的内容。在一些实现方式中,此嵌入式项的列表可被包括在网页的渲染结果中。在批处理渲染引擎请求了嵌入式项之后,批处理渲染引擎可在等待获取服务器返回内容的同时继续施行准备好运行的其它任务(415)。如果不存在在当前虚拟时间准备好运行的任务,批处理渲染引擎可等待来自获取服务器的响应。尽管获取未完成,批处理渲染引擎不使虚拟时钟前进,因此,批处理渲染引擎不暂停以等待获取。

当接收到来自获取服务器的响应时,批处理渲染引擎可处理嵌入式项的内容(430)。例如,响应于接收到内容,批处理渲染引擎可向任务列表添加诸如解析所接收的嵌入式项的内容的任务。这些任务可被给予指示任务准备好运行的当前虚拟时钟的开始时间(例如,虚拟时钟上的当前时间)。解析所接收的内容(无论是用于原始请求的网页还是用于嵌入式项)可使得批处理渲染进程向任务列表添加附加任务。例如,解析嵌入式项的内容可发现附加嵌入式项(例如,次级嵌入式项),这可使得批处理渲染引擎请求嵌入式项并且当它们被返回时解析其内容。如果内容包括脚本(例如,JavaScript),则运行该脚本可使得执行附加任务,诸如生成布局或改变网页的一个或更多个元素的外观。这些任务中的一些可被调度以在未来开始。例如,按照固定的间隔改变图像的不透明度使得图像对于用户而言看起来就像它正在淡入一样。不透明度的每个改变是任务,并且脚本可使得若干这样的任务被添加到任务列表,每个任务的运行时间是当前虚拟时钟加指定的量。

作为渲染进程的一部分,批处理渲染引擎可确定渲染是否完成(435)。该确定可例如在每次批处理渲染引擎完成任务时或者按照预定时间间隔等进行。当虚拟时钟到达停止任务中指定的时间时渲染可完成。由于在对嵌入式项的获取未完成的同时虚拟时钟不前进,所以当虚拟时钟到达停止任务中指定的时间时,批处理渲染引擎确信已接收到对每个获取请求的响应。因此,批处理渲染引擎从不暂停以等待资源。

如果渲染未完成(435,否),则批处理渲染引擎可继续施行任务列表中的任务,等待对一个或更多个嵌入式项的请求的响应等。如果渲染完成(435,是),则批处理渲染引擎可完结所请求的网页的渲染结果(440)并且将该渲染结果返回给作出请求的进程。渲染结果的元素可能先前已作为通过批处理渲染引擎完成的任务的结果生成。例如,所获取的嵌入式项的列表以及在运行脚本的同时遇到的错误可在渲染完成之前生成。其它元素(诸如确定布局)可在渲染完成之后出现。在一些实现方式中,批处理渲染引擎没有确定布局直至渲染完成之后,除非作为渲染进程的一部分运行的脚本请求元素的位置。即使在渲染完成之前生成布局,批处理渲染引擎也可作为完结渲染结果的一部分最后一次生成布局。因此,完结渲染结果可包括生成新元素和收集已经生成的元素。在一些实现方式中,批处理渲染引擎可将渲染结果存储在存储器中并且可向作出请求的进程提供渲染结果的位置。在一些实现方式中,系统可将渲染结果与指示它何时生成的时间戳一起存储,并且可存储渲染结果的不止一个版本。进程400然后结束,其在批处理模式下利用针对批处理的优化生成了渲染结果。

图5是图示出根据实现方式的批处理渲染引擎使虚拟时钟前进的示例进程500的流程图。进程500可作为确定渲染是否完成(例如,图4的步骤435)的一部分运行,但是它也可在其它时间运行(例如,周期性地运行)。进程500开始于确定批处理渲染引擎是否正在等待嵌入式项的请求(505)。例如,如果批处理渲染引擎向获取服务器请求了嵌入式项并且还未从获取服务器接收到响应,则批处理渲染引擎正在等待。如果批处理渲染引擎正在等待(505,是),则虚拟时钟不前进,并且批处理渲染引擎可施行在当前虚拟时间准备好运行的任务(如果存在的话),或者可等待(510)。此步骤可作为图4的步骤415的一部分执行。如果批处理渲染引擎没有在等待获取请求(505,否),则批处理渲染引擎可确定任务列表中是否存在准备好运行的任务(515)。例如,如果任务列表中的任务具有等于虚拟时钟的运行时间,则任务准备好运行。如果任务准备好运行(515,是),则批处理渲染引擎可施行该任务(520)。施行该任务可向任务列表添加其它任务,其中的一些任务可准备好运行,并且其它任务可具有在未来的运行时间(例如,当前虚拟时钟时间加某一指定的时间)。此步骤也可作为图4的步骤415的一部分执行。如果不存在准备好运行的待决任务(515,否),则批处理渲染引擎可使虚拟时钟前进至任务列表中指定的下一运行时间(525)。换言之,批处理渲染引擎使虚拟时钟翘曲向前,以使得任务列表中排列的下一任务准备好运行。

如果任务列表中排列的下一任务是停止任务(530,是),则渲染完成。如果不是,则批处理渲染引擎可继续施行待决任务(520)。进程500演示了在存在准备好运行的待决任务的同时或者在等待对嵌入式项的获取的同时如何不使虚拟时钟前进。因此,对于这些事件虚拟时钟“保持静止”,这可避免当渲染引擎使用真实时钟时遇到的一类错误。另外,进程500演示了可如何使虚拟时钟扭曲向前,以使得在一些情况下渲染进程可花费比任务规定的定时更少的真实时间(例如,等待使图像淡入或播放动画的时间间隔)。这在嵌入式项可无需爬取而返回时尤其如此,如本文中将更详细说明的。当然,将理解,检查待决任务(515)和获取请求(505)的顺序可反转,并且实现方式不限于图5所示的顺序。

图6是图示出根据实现方式的获取服务器将嵌入式项的内容提供给批处理渲染引擎的示例进程600的流程图。进程600可由诸如图1的系统100的系统执行。该系统可使用进程600来响应来自多个批处理渲染引擎的对嵌入式项的获取请求。在一些实现方式中,进程600可由获取服务器执行并且可响应于来自批处理渲染引擎之一的请求而发起。

进程600可开始于获取服务器接收嵌入式项的URL(605)。该URL可由批处理渲染引擎提供,并且可以是批处理渲染引擎所请求的多个URL中的一个。获取服务器可将重写规则应用于所请求的嵌入式项的URL(610)。该重写规则可以是图1的URL重写规则154。重写规则可包括模板和重定向URL。应用重写规则可包括确定URL是否与重写规则之一的模式或模板匹配。例如,模板可以是移除了任何查询串的URL,并且系统可将查询串从所请求的嵌入式项的URL移除以看它是否匹配模板。作为另一示例,模板可包括例如*和?的通配符,其指示任何字符可与通配符匹配的地方。

如果URL与模式匹配,则重写规则可提供重定向URL并且获取服务器可用重定向URL取代所请求的嵌入式项的URL。应用重写规则的一个原因在于允许获取服务器识别返回相同内容的URL并且使用重定向URL来避免不得不调度不必要的获取。某些类型的通常嵌入的项具有动态生成的URL。例如,一些嵌入式项的URL取决于通过随机数生成器生成的随机数或者由日期和时间函数返回的当前日期和时间。诸如这些的嵌入式对象(称作缓存清除跟踪URL)通常用于确定网页的独特点击(unique hit)或观看次数以用于确定广告成本或收益。尽管这样的嵌入式对象的内容通常是相同的,每次渲染引擎发现对象时为它生成独特URL。因此,对于包含这样的嵌入式项的网页,渲染引擎每次尝试渲染网页时将看到用于对象的新的不同的URL,并且在不应用重写规则的情况下获取服务器将一次又一次获取相同的内容。为了避免这一问题,重写规则可应用模板,其允许获取服务器识别这些URL并将获取请求重定向至存储在重定向URL下的先前获取的内容。

应用重写规则的另一原因在于识别列入黑名单的URL。重写规则还可包括识别列入黑名单的URL的规则或者用于列入黑名单的URL的模式或模板。例如,重写规则可包括模板和关联的重定向URL、错误或标志。如果所请求的嵌入式项的URL与列入黑名单的URL或者列入黑名单的URL的模板匹配,则获取服务器可将该URL识别为被列入黑名单。在一些实现方式中,应用重写规则可使得URL被重定向URL替换。在一些实现方式中,应用重写规则可将URL标记为被列入黑名单,或者可提供错误以作为对由该URL标识的嵌入式项的请求的响应而返回。

如果URL被列入黑名单(615,是),则获取服务器可向请求批处理渲染引擎返回错误(620)。该错误可以是指示无法找到资源的标准浏览器错误,或者告知渲染引擎不需要该资源或者可跳过该资源的特定错误等。如果重写规则提供基于重写规则、硬编码等中的标志选择的重定向URL,该错误可由匹配重写规则从嵌入式项表提供。对该URL的获取请求然后完成,并且进程600结束。

如果URL未被列入黑名单(615,否),则获取服务器可在嵌入式项数据仓库中查找重写的URL(625)。嵌入式项数据仓库可以是图1的嵌入式项表152。如果原始URL与重写规则中标识的模式匹配,重写的URL可以是由重写规则提供的重定向URL。如果URL不与重写规则中的任何模板匹配,则重写的URL可以是原始URL。如果URL在嵌入式项数据仓库中(625,是),则可选地获取服务器可确定所请求的URL是否针对图像(630)。这是可选的,并且在不针对图像进行测试的实现方式中,步骤630可被省略。所请求的嵌入式项是不是图像可基于请求中的信息、URL本身、或者基于嵌入式项数据仓库中用于重写的URL的字段来确定。如果嵌入式项是图像(630,是),则系统可在尺寸表中查找图像的尺寸并且返回具有所述尺寸的虚假图像,如关于图7的进程700更详细说明的。还将理解,在一些实现方式中,获取服务器可在应用重写规则之前、在查找嵌入式项数据仓库之前、或者在确定条目是否失效之后执行步骤630。

如果所请求的嵌入式项不是图像(630,否),则获取服务器可确定嵌入式项表中的条目是否失效(645)。条目是否失效可取决于若干因素,诸如项的变化率、嵌入式项的类型(例如,脚本、样式表、图像等)、浏览器渲染引擎正在渲染的网页的重要性等。在一些实现方式中,嵌入式项表可具有指示条目永不失效的字段或值(例如,对于列入黑名单的嵌入式项的重定向URL)。如果条目没有失效(645,否),则获取服务器可将嵌入式项表中用于重写的URL的内容返回给请求批处理渲染引擎(650),并且进程600针对此嵌入式项结束。在一些实现方式中,返回内容可包括获取服务器提供嵌入式项表中的条目的位置作为响应,并且批处理渲染进程利用该位置来访问内容。

如果嵌入式项表中的条目失效(645,是)或者如果重写的URL不在嵌入式项数据仓库中(625,否),则获取服务器可向web爬取器(例如,图1的web爬取引擎130)请求对URL的获取(635)。当获取服务器接收到所爬取的内容时,无需篡改或进一步处理,它可将所接收的内容存储为嵌入式项数据仓库中的条目(640)。在一些实现方式中,获取服务器可保存嵌入式项的内容和爬取时间,而无需覆写嵌入式项的先前爬取的内容和爬取时间。在一些实现方式中,获取服务器可在嵌入式项表中保持一个条目,并且可不保留嵌入式项的先前爬取。无论如何,一旦被保存在嵌入式项表中,内容就被缓存并且无需再次获取,直至它变得失效。然后,获取服务器可将所获取的内容返回给请求批处理渲染引擎(650),并且进程600结束。

图7是图示出根据实现方式的获取服务器将虚假图像提供给批处理渲染引擎的示例进程700的流程图。进程700可由诸如图1的系统100的系统执行。该系统可使用进程700来响应来自多个批处理渲染引擎的对嵌入网页中的图像的获取请求。在一些实现方式中,进程700可由获取服务器执行,并且可响应于来自批处理渲染引擎之一的请求来发起。在一些实现方式中,获取服务器可独立于其它嵌入式项(例如,图6的进程600)执行进程700。在其它实现方式中,获取服务器可将进程700的元素并入包括其它嵌入式项的进程(例如,图6的进程600)中。

进程700可开始于获取服务器确定所请求的图像在图像尺寸表中是否具有条目(705)。图像尺寸表可以是图1的图像尺寸表156。图像尺寸表包括图像的尺寸,其通过图像的标识符(诸如URL)来存储。如果图像不在尺寸表中(705,否)或者如果图像在尺寸表中(705,是)但是失效(710,是),则获取服务器可例如经由web爬取引擎(诸如图1的web爬取引擎130)调度对图像的获取(715)。在一些实现方式中,获取服务器可使用尺寸表中的信息来确定条目是否失效。在一些实现方式中,获取服务器可使用来自单独的嵌入式项表的信息(如上面关于图6的步骤645所描述的)以确定尺寸是否失效。因此,在一些实现方式中,获取服务器可结合图6的步骤645或者作为其一部分执行步骤710。当接收到图像的内容时,获取服务器可将图像的条目添加到尺寸表中,该条目包括所获取的图像的尺寸(720)。在一些实现方式中,获取服务器还可将所获取的内容存储在嵌入式项表中,如上面作为图6的步骤640的一部分描述的。

如果图像在尺寸表中(705,是)并且未失效(710,否)或者在图像已被获取并存储之后(720),系统可使用来自尺寸表的尺寸生成虚假图像(725)。该虚假图像可具有指定与所请求的图像相同的尺寸但是内容为空的图像文件格式数据。系统可将虚假图像返回(730)给作出请求的批处理渲染引擎,并且进程700结束。

将理解,在一些实现方式中,进程700的一些步骤可为可选的或者可作为其它处理的一部分执行。例如,确定图像的尺寸是否失效可作为图6的步骤645的一部分执行,并且可基于嵌入式项表中的信息。另外,步骤715可作为图6的步骤635的一部分或者结合图6的步骤635来执行。换言之,获取服务器可将进程700的多个方面与进程600的多个方面组合,诸如获取图像的内容、确定缓存的获取的内容是否失效等。当然,获取服务器还可完全独立于进程600来执行进程700。因此,实现方式可包括进程700的变型。

图8示出可用于这里所描述的技术的一般计算机装置800的示例,其可作为图1的系统100和/或客户端170操作。计算装置800旨在表示各种示例形式的计算装置,例如膝上型计算机、台式计算机、工作站、个人数字助理、蜂窝电话、智能电话、平板、服务器以及其它计算装置(包括可穿戴装置)。这里所示的组件、其连接和关系以及它们的功能意在仅为示例,而不意在限制本文档中所描述和/或要求保护的发明的实现方式。

计算装置800包括经由接口808连接的处理器802(例如,基于硅树脂的硬件处理器)、存储器804、存储装置806以及扩展端口810。在一些实现方式中,计算装置800可包括经由接口808连接的收发器846、通信接口844和GPS(全球定位系统)接收器模块848以及其它组件。装置800可通过通信接口844无线地通信,其可在需要的地方包括数字信号处理电路。组件802、804、806、808、810、840、844、846和848中的每一个可被安装在公共母板上或者酌情以其它方式来安装。

处理器802可处理用于在计算装置800内执行的指令,包括存储在存储器804中或者存储装置806上以在外部输入/输出装置(诸如,显示器816)上显示GUI的图形信息的指令。显示器816可以是监视器或者平板触摸屏显示器。在一些实现方式中,连同多个存储器和存储器的类型一起,可酌情使用多个处理器和/或多条总线。另外,可连接多个计算装置800,其中每个装置提供必要操作的部分(例如,作为服务器阵列、一组刀片服务器或者多处理器系统)。

存储器804将信息存储在计算装置800内。在一个实现方式中,存储器804是易失性存储器单元。在另一实现方式中,存储器804是非易失性存储器单元。存储器804还可以是另一形式的计算机可读介质,诸如磁盘或光盘。在一些实现方式中,存储器804可包括通过扩展接口提供的扩展存储器。

存储装置806能够为计算装置800提供大容量存储。在一个实现方式中,存储装置806可以是或者可包括诸如软盘装置、硬盘装置、光盘装置或磁带装置、闪存存储器或者其它相似的固态存储器装置或者装置阵列的计算机可读介质,包括存储区域网络或者其它配置的装置。计算机程序产品可被有形地具体实现于此类计算机可读介质中。计算机程序产品还可包括指令,所述指令在被执行时执行一个或多个方法,诸如上述那些方法。计算机或者机器可读介质是诸如存储器804、存储装置806或者处理器802上的存储器的存储装置。

接口808可以是管理计算装置800的带宽密集操作的高速控制器或者管理带宽较不密集操作的低速控制器,或者这些控制器的组合。可提供外部接口840以允许装置800与其它装置的附近区域通信。在一些实现方式中,控制器808可耦合至存储装置806和扩展端口814。可包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的扩展端口可例如通过网络适配器来耦合至诸如键盘、指点装置、扫描仪的一个或多个输入/输出装置或者诸如交换机或路由器的网络装置。

如图所示,计算装置800可按照多种不同的形式来实现。例如,它可被实现为标准服务器830或者多次实现于一组此类服务器中。它还可被实现为机架服务器系统的一部分。另外,它可被实现于诸如膝上型计算机832、台式计算机834或智能电话836的个人计算机中。整个系统可由彼此通信的多个计算装置800构成。其它配置也是可能的。

图9示出可用于这里所描述的技术的一般计算机装置900的示例,其可以是图1的系统100。计算装置900旨在表示各种示例形式的大型数据处理装置,诸如服务器、刀片服务器、数据中心、大型机以及其它大型计算装置。计算装置900可以是具有多个处理器的分布式系统,可能包括通过一个或多个通信网络互连的附接网络的存储节点。这里所示的组件、其连接和关系以及它们的功能意在仅为示例,而并非意在限制本文档中所描述和/或要求保护的发明的实现方式。

分布式计算装置900可包括任何数量的计算装置980。计算装置980可包括经局域网或广域网、专用光学链路、调制解调器、网桥、路由器、交换机、有线或无线网络等通信的服务器或机架服务器、大型机等。

在一些实现方式中,每个计算装置可包括多个机架。例如,计算装置980a包括多个机架958a-958n。每个机架可包括一个或多个处理器,诸如处理器952a-952n和962a-962n。处理器可包括数据处理器、附接网络的存储装置以及其它计算机控制的装置。在一些实现方式中,一个处理器可用作主处理器并且控制调度和数据分发任务。处理器可通过一个或多个机架交换机958来互连,并且一个或多个机架可通过交换机978来连接。交换机978可处理多个连接的计算装置900之间的通信。

每个机架可包括诸如存储器954和存储器964的存储器以及诸如956和966的存储装置。存储装置956和966可提供大容量存储,并且可包括易失性或非易失性存储装置,诸如附接网络的盘、软盘、硬盘、光盘、磁带、闪存或者其它类似的固态存储器装置或者装置阵列,包括存储区域网络或者其它配置的装置。存储装置956或966可在多个处理器、多个机架或者多个计算装置之间共享,并且可包括存储可由一个或多个处理器执行的指令的计算机可读介质。存储器954和964可包括例如易失性存储器单元、非易失性存储器单元和/或其它形式的计算机可读介质,诸如磁盘或光盘、闪存、高速缓存、随机存取存储器(RAM)、只读存储器(ROM)和其组合。诸如存储器954的存储器还可在处理器952a-952n之间共享。可例如在存储装置956和存储器954上存储诸如索引的数据结构。计算装置900可包括未示出的其它组件,诸如控制器、总线、输入/输出装置、通信模块等。

整个系统(诸如系统100)可由彼此通信的多个计算装置900构成。例如,装置980a可与装置980b、980c和980d通信,并且这些装置可被统称为系统100。作为另一示例,图1的系统100可包括一个或多个计算装置900。一些计算装置可在地理上彼此靠近,而其它计算装置可地理上彼此远离。计算装置900的布局仅是示例,并且系统可采取其它布局或配置。

各种实现方式可包括可在可编程系统上执行和/或解释的一个或多个计算机程序中的实现方式,所述可编程系统包括耦合以从存储系统接收数据和指令以及向存储系统传送数据和指令的形成在基底上的至少一个可编程处理器(可以是专用的或通用的)、至少一个输入装置和至少一个输出装置。

这些计算机程序(也称作程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可利用高级过程化和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所用,术语“机器可读介质”、“计算机可读介质”表示用于向可编程处理器提供机器指令和/或数据的任何非暂时性计算机程序产品、设备和/或装置(例如,磁盘、光盘、存储器(包括读取存取存储器)、可编程逻辑器件(PLD))。

这里所述的系统和技术可被实现于计算系统中,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户接口或者Web浏览器的客户端计算机,用户可通过其来与这里所述的系统和技术的实现方式交互),或者此类后端、中间件或前端组件的任何组合。系统的组件可通过任何形式或介质的数字数据通信(例如,通信网络)来互连。通信网络的示例包括局域网(“LAN”)、广域网(“WAN”)和互联网。

计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络来交互。客户端和服务器的关系由于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

描述了多个实现方式。然而,在不脱离本发明的精神和范围的情况下,可进行各种修改。另外,图中所描绘的逻辑流程不要求所示的特定顺序或者依次顺序来实现期望的结果。另外,可提供其它步骤,或者可从所描述的流程除去步骤,并且可向所描述的系统增加其它组件或者从其移除组件。因此,其它实现方式在所附权利要求的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1