CN106462582A - 批处理优化渲染和获取架构 - Google Patents

批处理优化渲染和获取架构 Download PDF

Info

Publication number
CN106462582A
CN106462582A CN201480079850.3A CN201480079850A CN106462582A CN 106462582 A CN106462582 A CN 106462582A CN 201480079850 A CN201480079850 A CN 201480079850A CN 106462582 A CN106462582 A CN 106462582A
Authority
CN
China
Prior art keywords
content
url
embedded item
embedded
rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480079850.3A
Other languages
English (en)
Other versions
CN106462582B (zh
Inventor
方昊
埃里克·阿尔扬·亨德里克斯
许晖
克里斯蒂安·塔普什
鲁佩什·卡普尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN106462582A publication Critical patent/CN106462582A/zh
Application granted granted Critical
Publication of CN106462582B publication Critical patent/CN106462582B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

实现方式包括批处理优化的渲染和获取架构。由该架构执行的示例方法包括:从批处理进程接收渲染网页的请求并且将虚拟时钟和任务列表初始化以用于渲染网页。当对嵌入式项的请求未完成时并且当任务准备好运行时,虚拟时钟保持静止。该方法还可包括:当虚拟时钟与任务列表中的停止任务的运行时间匹配时生成网页的渲染结果,并且将该渲染结果提供给批处理进程。另一示例方法包括:从批处理进程接收渲染网页的请求,识别网页中的嵌入式项,并且基于重写规则确定所述嵌入式项具有与先前获取的嵌入式项的内容重复的内容。

Description

批处理优化渲染和获取架构
背景技术
万维网是丰富的信息源。如今,估计有超过一万亿的独特网页。这些页面中的许多是动态创建的(例如,纽约时报的主页),并且具有指向诸如图像和视频的嵌入式内容的链接,其可影响渲染的网页的内容和外观。例如,当浏览器执行诸如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”)和互联网。
计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络来交互。客户端和服务器的关系由于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。
描述了多个实现方式。然而,在不脱离本发明的精神和范围的情况下,可进行各种修改。另外,图中所描绘的逻辑流程不要求所示的特定顺序或者依次顺序来实现期望的结果。另外,可提供其它步骤,或者可从所描述的流程除去步骤,并且可向所描述的系统增加其它组件或者从其移除组件。因此,其它实现方式在所附权利要求的范围内。

Claims (19)

1.一种计算机系统,包括:
至少一个处理器;以及
存储器,所述存储器存储:
嵌入式项的内容的数据仓库,以及
指令,所述指令在由所述至少一个处理器执行时使得所述系统:
从批处理进程接收渲染网页的请求,
识别所述网页中的嵌入式项,
基于重写规则确定所述嵌入式项具有与先前获取的嵌入式项的内容重复的内容,
响应于所述确定,从所述数据仓库提供所述先前获取的嵌入式项的所述内容,
利用所述先前获取的嵌入式项的所述内容生成所述网页的渲染结果,并且
将所述渲染结果提供给所述批处理进程。
2.根据权利要求1所述的系统,其中,作为确定所述嵌入式项具有与先前获取的嵌入式项的内容重复的内容的一部分,所述指令还包括以下指令,该指令在由所述至少一个处理器执行时使得所述系统:
将所述嵌入式项与所述重写规则的模板进行匹配,所述重写规则还包括重定向标识符,
其中,提供所述先前获取的嵌入式项的所述内容包括使用所述重定向标识符来定位所述先前获取的嵌入式项的所述内容。
3.根据权利要求2所述的系统,其中,所述模板包括没有查询串的URL。
4.根据权利要求1所述的系统,其中,所述嵌入式项是第一嵌入式项,并且所述指令还包括以下指令,该指令在由所述至少一个处理器执行时使得所述系统:
识别所述网页中的第二嵌入式项;
确定所述第二嵌入式项是否被列入黑名单;
当所述第二嵌入式项被列入黑名单时返回错误,而不获取所述第二嵌入式项的内容;并且
生成没有所述第二嵌入式项的所述内容的渲染结果。
5.根据权利要求1所述的系统,其中,所述指令还包括以下指令,该指令在由所述至少一个处理器执行时使得所述系统:
当生成所述渲染结果时使用虚拟时钟,
其中,所述虚拟时钟独立于真实时间而前进。
6.根据权利要求1所述的系统,其中,所述指令还包括以下指令,该指令在由所述至少一个处理器执行时使得所述系统:
当生成所述渲染结果时使用虚拟时钟,
其中,在等待所述先前获取的嵌入式项的所提供的内容的同时,所述虚拟时钟不前进。
7.根据权利要求1所述的系统,其中,所述嵌入式项是第一嵌入式项,并且所述指令还包括以下指令,该指令在由所述至少一个处理器执行时使得所述系统:
识别所述网页中的第二嵌入式项;
确定所述第二嵌入式项包括图像;
利用尺寸表生成指定所述第二嵌入式项的尺寸的虚假图像;并且
使用所述虚假图像来生成所述渲染结果。
8.一种方法,包括:
从批处理进程接收渲染网页的请求;
利用至少一个处理器将虚拟时钟和任务列表初始化以用于渲染所述网页,其中,当对嵌入式项的请求未完成时并且当任务准备好运行时所述虚拟时钟保持静止;
当所述虚拟时钟与所述任务列表中的停止任务的运行时间匹配时利用所述至少一个处理器生成所述网页的渲染结果;以及
将所述渲染结果提供给所述批处理进程。
9.根据权利要求8所述的方法,其中,将所述任务列表初始化包括向所述停止任务添加运行时间,该运行时间被设定为添加到所述虚拟时钟的预定时间。
10.根据权利要求8所述的方法,其中,所述批处理进程包括索引引擎,并且所述方法还包括使用所述渲染结果来对索引中的令牌排名。
11.根据权利要求8所述的方法,还包括当没有对嵌入式项的请求未完成并且所述任务列表中仅存在运行时间大于所述虚拟时钟的任务时,使所述虚拟时钟前进至所述任务列表中的任务的运行时间。
12.根据权利要求8所述的方法,还包括:
识别所述网页中的嵌入式图像;
请求所述嵌入式图像的内容;
响应于所述请求,接收指定所述嵌入式图像的尺寸但是内容为空的虚假图像;以及
使用所述虚假图像来生成所述渲染结果。
13.根据权利要求8所述的方法,其中,所述批处理进程是索引引擎,并且所述方法还包括基于所述渲染结果中的信息使所述网页的排名降低。
14.根据权利要求8所述的方法,其中,所述批处理进程是索引引擎,并且所述方法还包括使用所述渲染结果来索引动态生成的内容。
15.一种方法,包括:
从批处理渲染进程接收对网页中的嵌入式项的统一资源定位符(URL)的请求;
使用至少一个处理器来应用重写规则以确定重写的URL;
利用所述至少一个处理器确定所述重写的URL的内容是否存在于数据仓库中;
当所述内容存在时,将所述内容提供给所述批处理渲染进程;以及
当所述内容不存在时:
发起对所述内容的获取,其中,所述批处理渲染进程被配置为在所述获取期间在不暂停的情况下等待,
从web爬取引擎接收所述内容,
将所述内容提供给所述批处理渲染进程,并且
将所述内容存储在所述数据仓库中。
16.根据权利要求15所述的方法,还包括由所述批处理渲染进程利用所述内容来生成所述网页的渲染结果。
17.根据权利要求16所述的方法,其中,所述渲染结果包括布局信息和动态生成的内容。
18.根据权利要求15所述的方法,其中,应用重写规则包括:
将所述URL与模板进行匹配,所述模板与重定向URL关联,
其中,当所述URL与所述模板匹配时,所述重定向URL被确定为所述重写的URL,并且
其中,当所述URL未能与模板匹配时,所述URL被确定为所述重写的URL。
19.根据权利要求15所述的方法,该方法还包括:
基于存储在所述数据仓库中的所述嵌入式项的变化率或类型来确定所述重写的URL的内容失效;以及
响应于确定所述重写的URL的所述内容失效:
从所述web爬取引擎接收经更新的内容,
利用经更新的内容来更新所述数据仓库,并且
提供经更新的内容作为重写的URL的内容。
CN201480079850.3A 2014-06-26 2014-06-26 批处理优化渲染和获取架构 Active CN106462582B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080832 WO2015196414A1 (en) 2014-06-26 2014-06-26 Batch-optimized render and fetch architecture

Publications (2)

Publication Number Publication Date
CN106462582A true CN106462582A (zh) 2017-02-22
CN106462582B CN106462582B (zh) 2020-05-15

Family

ID=54930717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480079850.3A Active CN106462582B (zh) 2014-06-26 2014-06-26 批处理优化渲染和获取架构

Country Status (6)

Country Link
US (2) US9984130B2 (zh)
EP (1) EP3161668B1 (zh)
JP (1) JP6356273B2 (zh)
CN (1) CN106462582B (zh)
RU (1) RU2659481C1 (zh)
WO (1) WO2015196414A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558187A (zh) * 2017-09-27 2019-04-02 阿里巴巴集团控股有限公司 一种用户界面渲染方法及装置
CN110020385A (zh) * 2017-09-29 2019-07-16 甲骨文国际公司 用于提取网站特性的系统和方法
CN111274519A (zh) * 2020-01-20 2020-06-12 杭州熊猫智云企业服务有限公司 一种页面加载提速方法
CN111359220A (zh) * 2020-03-04 2020-07-03 深圳市腾讯网域计算机网络有限公司 游戏广告生成方法、装置和计算机设备

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5596890B1 (ja) * 2013-11-14 2014-09-24 楽天株式会社 情報処理システム、情報処理装置、情報処理方法、記録媒体、及び、プログラム
RU2665920C2 (ru) 2014-06-26 2018-09-04 Гугл Инк. Оптимизированный процесс визуализации в браузере
KR102133486B1 (ko) 2014-06-26 2020-07-13 구글 엘엘씨 최적화된 브라우저 렌더링 프로세스
RU2659481C1 (ru) * 2014-06-26 2018-07-02 Гугл Инк. Оптимизированная для пакетной обработки архитектура визуализации и выборки
US20170032420A1 (en) * 2015-07-29 2017-02-02 Linkedln Corporation Publisher facilitated advertisement mediation
US10778744B2 (en) * 2015-08-13 2020-09-15 Molbase (Shanghai) Biotechnology Co., Ltd. Configurable caching system and method thereof
US10216694B2 (en) * 2015-08-24 2019-02-26 Google Llc Generic scheduling
US10033826B2 (en) * 2015-09-11 2018-07-24 Verizon Patent And Licensing Inc. Token based dynamic cache-busting
US10452730B2 (en) * 2015-12-22 2019-10-22 Usablenet Inc. Methods for analyzing web sites using web services and devices thereof
US10528647B2 (en) * 2016-06-10 2020-01-07 Ebay Inc. Optimization for browser rendering during navigation
CN106204713B (zh) * 2016-07-22 2020-03-17 网易(杭州)网络有限公司 静态合并处理方法和装置
US10574723B2 (en) * 2016-11-30 2020-02-25 Nutanix, Inc. Web services communication management
US10878187B1 (en) * 2017-12-13 2020-12-29 Amazon Technologies, Inc. Network-based content rendering
US11095748B1 (en) * 2017-12-13 2021-08-17 Amazon Technologies, Inc. Network-based content rendering
CN108717651B (zh) * 2018-03-29 2021-10-26 京东方科技集团股份有限公司 一种商品推荐方法、装置及电子设备
US11271878B2 (en) * 2018-06-15 2022-03-08 Slack Technologies, Llc Method, apparatus, and computer program product for initiating and executing a group based communication browser session and rendering a group based communication interface
CN110496395B (zh) * 2019-08-22 2023-02-21 创新先进技术有限公司 一种针对虚幻引擎的组件运行方法、系统及设备
CN113032702A (zh) * 2019-12-06 2021-06-25 北京沃东天骏信息技术有限公司 一种页面加载方法和装置
CN111581489B (zh) * 2020-05-22 2023-03-24 哈尔滨工程大学 一种基于共享计数树的存储空间优化采样方法
CN112950738B (zh) * 2021-03-30 2022-11-11 杭州群核信息技术有限公司 渲染引擎的处理方法及装置、存储介质和电子设备
CN113836455A (zh) * 2021-09-18 2021-12-24 北京百度网讯科技有限公司 特效渲染方法、装置、设备、存储介质及计算机程序产品
CN116977537A (zh) * 2022-04-22 2023-10-31 北京字跳网络技术有限公司 一种合批渲染方法、装置、设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845115A (en) * 1994-12-22 1998-12-01 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service with rate control to an entity
CN101201827A (zh) * 2006-12-14 2008-06-18 阿里巴巴公司 一种网页显示的方法和系统
US20120158737A1 (en) * 2010-12-15 2012-06-21 Solera Networks, Inc. System and method for hypertext transfer protocol layered reconstruction
US8346755B1 (en) * 2010-05-04 2013-01-01 Google Inc. Iterative off-line rendering process
CN102902805A (zh) * 2012-10-15 2013-01-30 东软集团股份有限公司 一种页面访问方法和装置
US20130117252A1 (en) * 2011-11-09 2013-05-09 Google Inc. Large-scale real-time fetch service

Family Cites Families (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761683A (en) * 1996-02-13 1998-06-02 Microtouch Systems, Inc. Techniques for changing the behavior of a link in a hypertext document
JP4025379B2 (ja) 1996-09-17 2007-12-19 株式会社ニューズウオッチ 検索システム
US7103794B2 (en) 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
JP2987355B2 (ja) 1998-01-21 1999-12-06 三菱電機株式会社 ハイパーテキスト表示システム及びハイパーテキスト表示方法
US6173316B1 (en) 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6271840B1 (en) 1998-09-24 2001-08-07 James Lee Finseth Graphical search engine visual index
US6631369B1 (en) 1999-06-30 2003-10-07 Microsoft Corporation Method and system for incremental web crawling
US6665838B1 (en) 1999-07-30 2003-12-16 International Business Machines Corporation Web page thumbnails and user configured complementary information provided from a server
US6321265B1 (en) 1999-11-02 2001-11-20 Altavista Company System and method for enforcing politeness while scheduling downloads in a web crawler
US7200677B1 (en) 2000-04-27 2007-04-03 Microsoft Corporation Web address converter for dynamic web pages
US6643641B1 (en) 2000-04-27 2003-11-04 Russell Snyder Web search engine with graphic snapshots
US6714905B1 (en) 2000-05-02 2004-03-30 Iphrase.Com, Inc. Parsing ambiguous grammar
US8640017B1 (en) 2000-05-02 2014-01-28 International Business Machines Corporation Bootstrapping in information access systems
US6704728B1 (en) 2000-05-02 2004-03-09 Iphase.Com, Inc. Accessing information from a collection of data
US6978298B1 (en) * 2000-05-25 2005-12-20 International Business Machines Corporation Method and apparatus for managing session information in a data processing system
JP3703080B2 (ja) 2000-07-27 2005-10-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ウェブコンテンツを簡略化するための方法、システムおよび媒体
US7231606B2 (en) 2000-10-31 2007-06-12 Software Research, Inc. Method and system for testing websites
US6865192B1 (en) 2000-12-22 2005-03-08 Sprint Communications Company L.P. Integrated services hub self configuration
US7155436B2 (en) * 2001-01-12 2006-12-26 Vendaria, Inc Method and system for generating and providing rich media presentations optimized for a device over a network
JP2002297619A (ja) 2001-03-29 2002-10-11 Brother Ind Ltd 広告情報提供システム、広告情報閲覧装置、広告情報閲覧方法及び広告情報閲覧プログラム
AU2002321795A1 (en) 2001-07-27 2003-02-17 Quigo Technologies Inc. System and method for automated tracking and analysis of document usage
US6763362B2 (en) 2001-11-30 2004-07-13 Micron Technology, Inc. Method and system for updating a search engine
US7200680B2 (en) 2002-03-11 2007-04-03 Ericsson Inc. Method, apparatus and system for providing multimedia messages to incompatible terminals
US7136875B2 (en) 2002-09-24 2006-11-14 Google, Inc. Serving advertisements based on content
US7231442B2 (en) 2002-04-03 2007-06-12 Tonic Software, Inc. Global network monitoring system
US7441010B2 (en) 2002-06-06 2008-10-21 International Business Machines Corporation Method and system for determining the availability of in-line resources within requested web pages
US7054917B1 (en) 2002-08-07 2006-05-30 Propel Software Corporation Method for accelerating delivery of content in a computer network
US7188359B2 (en) 2002-12-18 2007-03-06 America Online, Inc. Optimizing authentication service availability and responsiveness via client-side routing
US7831667B2 (en) 2003-05-15 2010-11-09 Symantec Corporation Method and apparatus for filtering email spam using email noise reduction
GB0315154D0 (en) 2003-06-28 2003-08-06 Ibm Improvements to hypertext integrity
US7725452B1 (en) 2003-07-03 2010-05-25 Google Inc. Scheduler for search engine crawler
US7895523B2 (en) 2003-09-04 2011-02-22 International Business Machines Corporation Method, system and program product for obscuring supplemental web content
EP1680752A2 (en) * 2003-10-31 2006-07-19 Access Co., Ltd. Method, program and device for rendering web page
US7457823B2 (en) 2004-05-02 2008-11-25 Markmonitor Inc. Methods and systems for analyzing data related to possible online fraud
US8353028B2 (en) 2004-06-21 2013-01-08 Ebay Inc. Render engine, and method of using the same, to verify data for access and/or publication via a computer system
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US7644107B2 (en) * 2004-09-30 2010-01-05 Microsoft Corporation System and method for batched indexing of network documents
WO2006043664A1 (ja) 2004-10-22 2006-04-27 Access Co., Ltd. パラメータ設定、記憶方法
WO2006043274A2 (en) 2004-10-22 2006-04-27 Flash Networks Ltd Method and system for accelerating downloading of web pages.
WO2006046323A1 (ja) * 2004-10-28 2006-05-04 Fujitsu Limited インターネット情報収集装置、プログラム及び方法
US8812551B2 (en) * 2004-11-18 2014-08-19 International Business Machines Corporation Client-side manipulation of tables
US20060129463A1 (en) 2004-12-15 2006-06-15 Zicherman Amir S Method and system for automatic product searching, and use thereof
US7536389B1 (en) 2005-02-22 2009-05-19 Yahoo ! Inc. Techniques for crawling dynamic web content
US7769819B2 (en) * 2005-04-20 2010-08-03 Videoegg, Inc. Video editing with timeline representations
US20060282776A1 (en) * 2005-06-10 2006-12-14 Farmer Larry C Multimedia and performance analysis tool
US20070005652A1 (en) 2005-07-02 2007-01-04 Electronics And Telecommunications Research Institute Apparatus and method for gathering of objectional web sites
US8527504B1 (en) 2005-09-01 2013-09-03 At&T Intellectual Property Ii, L.P. Data network content filtering using categorized filtering parameters
US7814410B2 (en) 2005-09-12 2010-10-12 Workman Nydegger Initial server-side content rendering for client-script web pages
US7548915B2 (en) * 2005-09-14 2009-06-16 Jorey Ramer Contextual mobile content placement on a mobile communication facility
US8271611B2 (en) 2005-09-28 2012-09-18 Telefonaktiebolaget L M Ericsson (Publ) Method and system of invoking MIDlets from a web browser on a local device
CN101346634B (zh) 2005-11-04 2012-10-24 甲骨文国际公司 用于通信网络中的网守的系统和方法
US8170395B2 (en) * 2006-05-07 2012-05-01 Wellcomemat Llc Methods and systems for handling montage video data
CN101075236A (zh) * 2006-06-12 2007-11-21 腾讯科技(深圳)有限公司 一种加快浏览器网页显示的装置和方法
US20080010642A1 (en) * 2006-06-30 2008-01-10 Maclellan Scot Method, system and computer program for scheduling execution of work units with monitoring of progress thereof
US8015162B2 (en) 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
US7886042B2 (en) 2006-12-19 2011-02-08 Yahoo! Inc. Dynamically constrained, forward scheduling over uncertain workloads
US7694054B2 (en) 2007-04-26 2010-04-06 Microsoft Corporation Governing access to a computing resource
US9430577B2 (en) 2007-05-31 2016-08-30 Microsoft Technology Licensing, Llc Search ranger system and double-funnel model for search spam analyses and browser protection
US9542394B2 (en) * 2007-06-14 2017-01-10 Excalibur Ip, Llc Method and system for media-based event generation
US8578261B1 (en) 2007-06-22 2013-11-05 Adobe Systems Incorporated Active preview of hyperlink content in browser supported file-format
US9906549B2 (en) 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US8751626B2 (en) * 2007-10-23 2014-06-10 Microsoft Corporation Model-based composite application platform
US8463779B2 (en) * 2007-10-30 2013-06-11 Yahoo! Inc. Representative keyword selection
US9465892B2 (en) * 2007-12-03 2016-10-11 Yahoo! Inc. Associating metadata with media objects using time
US20090164502A1 (en) 2007-12-24 2009-06-25 Anirban Dasgupta Systems and methods of universal resource locator normalization
NZ566291A (en) 2008-02-27 2008-12-24 Actionthis Ltd Methods and devices for post processing rendered web pages and handling requests of post processed web pages
US8131753B2 (en) 2008-05-18 2012-03-06 Rybak Ilya Apparatus and method for accessing and indexing dynamic web pages
US8307431B2 (en) 2008-05-30 2012-11-06 At&T Intellectual Property I, L.P. Method and apparatus for identifying phishing websites in network traffic using generated regular expressions
US8924650B2 (en) 2008-09-09 2014-12-30 International Business Machines Corporation Synchronizing network feeds in high-frequency network events
US8316124B1 (en) 2008-09-29 2012-11-20 Amazon Technologies, Inc. Managing network data display
CN101763357B (zh) * 2008-11-13 2016-09-14 北京搜狗科技发展有限公司 一种用于浏览器加载互联网资源的方法及系统
CN101504648A (zh) 2008-11-14 2009-08-12 北京搜狗科技发展有限公司 展现网页资源的方法及装置
US20100131488A1 (en) 2008-11-26 2010-05-27 Yahoo! Inc. Digital Images of Web Pages
US8516080B2 (en) 2008-12-03 2013-08-20 Mobophiles, Inc. System and method for providing virtual web access
US8356247B2 (en) 2008-12-16 2013-01-15 Rich Media Worldwide, Llc Content rendering control system and method
US8543580B2 (en) 2008-12-23 2013-09-24 Microsoft Corporation Mining translations of web queries from web click-through data
US8880498B2 (en) 2008-12-31 2014-11-04 Fornova Ltd. System and method for aggregating and ranking data from a plurality of web sites
US8539359B2 (en) 2009-02-11 2013-09-17 Jeffrey A. Rapaport Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic
US9311425B2 (en) 2009-03-31 2016-04-12 Qualcomm Incorporated Rendering a page using a previously stored DOM associated with a different page
CN101587495A (zh) * 2009-07-08 2009-11-25 伍帝州 通过浏览器下载部署应用并提供应用入口的方法及系统
US20110055683A1 (en) 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages
US8868637B2 (en) 2009-09-02 2014-10-21 Facebook, Inc. Page rendering for dynamic web pages
JP2011065488A (ja) 2009-09-17 2011-03-31 Sony Corp 情報処理装置、データ取得方法及びプログラム
US8392748B2 (en) 2009-10-06 2013-03-05 Microsoft Corporation Reliable media streaming
US20110112995A1 (en) 2009-10-28 2011-05-12 Industrial Technology Research Institute Systems and methods for organizing collective social intelligence information using an organic object data model
US8689117B1 (en) 2009-10-30 2014-04-01 Google Inc. Webpages with conditional content
JP2011108102A (ja) 2009-11-19 2011-06-02 Sony Corp ウェブサーバ、ウェブブラウザおよびウェブシステム
US8738686B2 (en) 2009-12-30 2014-05-27 Teradata Us, Inc. Dynamic resource management
US8768926B2 (en) 2010-01-05 2014-07-01 Yahoo! Inc. Techniques for categorizing web pages
US8250478B2 (en) 2010-01-28 2012-08-21 Microsoft Corporation State persistence and background initialization for post-back web applications
US8713571B2 (en) * 2010-02-17 2014-04-29 Microsoft Corporation Asynchronous task execution
KR101122700B1 (ko) 2010-03-08 2012-03-12 (주)이앤비소프트 Url 정보 발신 방법
JP2011221616A (ja) 2010-04-05 2011-11-04 Nec Corp Urlフィルタリングシステム、システム制御方法およびシステム制御用プログラム
US8446411B2 (en) * 2010-06-11 2013-05-21 Microsoft Corporation Adaptive image rendering and use of imposter
US8676978B2 (en) 2010-08-03 2014-03-18 Facebook, Inc. Efficient storage and retrieval of resources for rendering structured documents
EP2416546A1 (en) * 2010-08-03 2012-02-08 Research In Motion Limited Method for providing indication of communicatively coupled device
JP5279793B2 (ja) 2010-10-25 2013-09-04 京セラ株式会社 携帯端末、携帯端末の制御方法及びプログラム
JP5512495B2 (ja) 2010-11-18 2014-06-04 株式会社Nttドコモ データダウンロード装置、データダウンロード方法
WO2012101585A1 (en) 2011-01-28 2012-08-02 Strangeloop Networks, Inc. Prioritized image rendering based on position within a web page
US10204327B2 (en) 2011-02-05 2019-02-12 Visa International Service Association Merchant-consumer bridging platform apparatuses, methods and systems
US8707162B1 (en) 2011-03-22 2014-04-22 Google Inc. Methods and systems for reducing web page transmission bandwidth
US8799262B2 (en) * 2011-04-11 2014-08-05 Vistaprint Schweiz Gmbh Configurable web crawler
RU2453916C1 (ru) 2011-05-05 2012-06-20 Игорь Викторович Лебедев Способ поиска информационных ресурсов с использованием переадресаций
US8655865B1 (en) 2011-05-27 2014-02-18 Adobe Systems Incorporated Method and apparatus for indexing rich internet content using contextual information
US8538949B2 (en) 2011-06-17 2013-09-17 Microsoft Corporation Interactive web crawler
US20130007586A1 (en) 2011-06-29 2013-01-03 Renjit Tom Thomas Method and system for creating and using web feed display templates
WO2013038320A1 (en) 2011-09-16 2013-03-21 Strangeloop Networks, Inc. Mobile resource accelerator
EP2801065A4 (en) 2012-01-05 2015-08-05 Visa Int Service Ass APPARATUS, METHODS AND SYSTEMS FOR VISUAL TRANSACTION CAPTURE
US8793235B2 (en) 2012-01-19 2014-07-29 Google Inc. System and method for improving access to search results
CN102663002B (zh) 2012-03-16 2014-05-07 掌中帷幄(北京)科技有限公司 结构化文档的渲染方法及系统
US20150172228A1 (en) 2012-04-17 2015-06-18 George Zalepa Method and system for communicating information over a network
JP5809099B2 (ja) * 2012-04-20 2015-11-10 日本電信電話株式会社 Web閲覧画面サムネイル生成システム
US8910132B2 (en) 2012-07-13 2014-12-09 Facebook, Inc. Client-side script bundle management system
US20140053056A1 (en) 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
CN102855318B (zh) 2012-08-31 2015-05-27 北京搜狗信息服务有限公司 网页预加载方法与系统
US8965880B2 (en) 2012-10-05 2015-02-24 Google Inc. Transcoding and serving resources
CN102917067B (zh) 2012-10-24 2015-06-10 网宿科技股份有限公司 基于客户端自适应并发控制提高响应速度的方法和装置
EP2728481A1 (en) * 2012-11-04 2014-05-07 Rightware Oy Evaluation of page load performance of web browser
CN103034503B (zh) 2012-12-25 2016-07-06 北京奇虎科技有限公司 一种脚本执行方法、系统及浏览器
US20140189534A1 (en) 2012-12-31 2014-07-03 Google Inc. Customizing shared web resource snapshots
US9286408B2 (en) 2013-01-30 2016-03-15 Hewlett-Packard Development Company, L.P. Analyzing uniform resource locators
US10375192B1 (en) * 2013-03-15 2019-08-06 Viasat, Inc. Faster web browsing using HTTP over an aggregated TCP transport
US9256795B1 (en) 2013-03-15 2016-02-09 A9.Com, Inc. Text entity recognition
US8601565B1 (en) 2013-06-19 2013-12-03 Edgecast Networks, Inc. White-list firewall based on the document object model
US9678928B1 (en) * 2013-10-01 2017-06-13 Michael Tung Webpage partial rendering engine
EP3063674B1 (en) 2013-11-01 2019-06-19 Kapow Technologies A/S Determining web page processing state
US8924850B1 (en) * 2013-11-21 2014-12-30 Google Inc. Speeding up document loading
US9646254B2 (en) 2014-06-20 2017-05-09 Amazon Technologies, Inc. Predicting next web pages
KR102133486B1 (ko) 2014-06-26 2020-07-13 구글 엘엘씨 최적화된 브라우저 렌더링 프로세스
RU2659481C1 (ru) * 2014-06-26 2018-07-02 Гугл Инк. Оптимизированная для пакетной обработки архитектура визуализации и выборки
RU2665920C2 (ru) 2014-06-26 2018-09-04 Гугл Инк. Оптимизированный процесс визуализации в браузере

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845115A (en) * 1994-12-22 1998-12-01 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service with rate control to an entity
CN101201827A (zh) * 2006-12-14 2008-06-18 阿里巴巴公司 一种网页显示的方法和系统
US8346755B1 (en) * 2010-05-04 2013-01-01 Google Inc. Iterative off-line rendering process
US20120158737A1 (en) * 2010-12-15 2012-06-21 Solera Networks, Inc. System and method for hypertext transfer protocol layered reconstruction
US20130117252A1 (en) * 2011-11-09 2013-05-09 Google Inc. Large-scale real-time fetch service
CN102902805A (zh) * 2012-10-15 2013-01-30 东软集团股份有限公司 一种页面访问方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558187A (zh) * 2017-09-27 2019-04-02 阿里巴巴集团控股有限公司 一种用户界面渲染方法及装置
CN110020385A (zh) * 2017-09-29 2019-07-16 甲骨文国际公司 用于提取网站特性的系统和方法
CN110020385B (zh) * 2017-09-29 2023-09-15 甲骨文国际公司 用于提取网站特性的系统和方法
CN111274519A (zh) * 2020-01-20 2020-06-12 杭州熊猫智云企业服务有限公司 一种页面加载提速方法
CN111359220A (zh) * 2020-03-04 2020-07-03 深圳市腾讯网域计算机网络有限公司 游戏广告生成方法、装置和计算机设备
CN111359220B (zh) * 2020-03-04 2023-06-13 深圳市腾讯网域计算机网络有限公司 游戏广告生成方法、装置和计算机设备

Also Published As

Publication number Publication date
JP6356273B2 (ja) 2018-07-11
EP3161668B1 (en) 2020-08-05
US11328114B2 (en) 2022-05-10
WO2015196414A1 (en) 2015-12-30
RU2659481C1 (ru) 2018-07-02
JP2017526041A (ja) 2017-09-07
EP3161668A1 (en) 2017-05-03
EP3161668A4 (en) 2018-03-28
CN106462582B (zh) 2020-05-15
US20150379014A1 (en) 2015-12-31
US9984130B2 (en) 2018-05-29
US20180276220A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
CN106462582A (zh) 批处理优化渲染和获取架构
US10284623B2 (en) Optimized browser rendering service
CN103597469B (zh) 集成开发环境中的实况浏览器工具
US9785452B2 (en) Framework for dependency management and automatic file load in a network environment
CN103650518B (zh) 预测性的多层高速缓存体系结构
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
KR20100072232A (ko) 현실세계 웹 애플리케이션과 3d 가상세계를 이어주는 방법 및 장치
CN103617191A (zh) 使用硬件加速实现浏览器渲染的方法和浏览器
CN108959595B (zh) 基于虚拟与现实的网站构建和体验方法及其装置
CN107276842B (zh) 接口测试方法、装置及电子设备
CN109241033A (zh) 创建实时数据仓库的方法和装置
CN106462561A (zh) 优化浏览器渲染过程
EP2779104B1 (en) Preserving and reusing intermediate data
JP6568985B2 (ja) バッチ最適化レンダリング及びフェッチアーキテクチャ
KR20090052970A (ko) 시공간 정보가 결합된 체험형 지식 제공 방법 및 시스템
US10044804B2 (en) Enabling users to specify an electronic resource for viewing based on prior accessed electronic resources
JP6397101B2 (ja) 最適化されたブラウザレンダリング処理
Janne Web Design and CSS Animation
Andersson et al. Web application for user acquisition through search engine optimization
US20160070728A1 (en) Cell-based database management system
CN103870584A (zh) 一种内容扩展的方法及管理平台
JP2002149476A (ja) リンクシステム、リンク方法およびリンクプログラムを記録したコンピュータ読み取り可能な記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant