一种用于更新数据的客户端装置和方法

文档序号:7663743阅读:138来源:国知局
专利名称:一种用于更新数据的客户端装置和方法
技术领域
本发明涉及一种用于更新数据的客户端装置和方法。

背景技术
万维网是因特网的多媒体信息检索系统。在该网络环境中,客户端机器使用超文本传输协议(HTTP)与网络服务器通信。
参考图1,此处示出的是系统(100),其中网络浏览器(110)(其是运行在客户端计算机(105)上的应用)通过向网络服务器(120)请求网页来呈现网页(115)。使用例如超文本标记语言(HTML)、可扩展超文本标记语言(XHTML)等的标记语言构造这样的网页。
在现有技术中,可以周期性地(例如,每2分钟)调用网络浏览器以启动网页内容的刷新。在某些情况下,这对于用户是可以接受的(例如用户需要已更新的内容时)。
然而,在其他情况下,这是不希望的。例如,网页可以包括周期性刷新的股票价格和用户可以填写的表格。如果当网页刷新时用户正在与表格交互,则用户可能丢失他们已经输入到该表格的数据——这显然使用户感到沮丧。而且,整个网页刷新可能非常缓慢并且引起屏幕闪烁。
US 6,377,957公开了一种系统,该系统将在分层组织的数据中的改变传播到数据的远程缓存拷贝。该系统通过接收在客户端对数据的访问进行操作。响应于这个访问,系统确定客户端是否包含该数据的拷贝。如果包含该数据的拷贝,则系统向服务器发送用于更新拷贝的请求。服务器接收请求并且确定服务器上数据的当前版本和客户端上数据较旧的拷贝之间的差异,其中服务器已经本地存储了所述数据较旧的拷贝。使用这些差异去构造用于数据拷贝的更新,该更新可以包括用于数据中分层组织节点的节点插入和节点删除操作。接下来,向客户端发送该更新,并且在客户端,将该更新应用于数据的拷贝以生成已更新的数据拷贝。最后,允许继续对已更新的数据拷贝的原始访问。


发明内容
根据第一方面,提供了用于更新供系统使用的数据的客户端装置,所述系统包括用于接收第一数据的接收器和用于调用所述第一数据的刷新的刷新调用装置,其中,响应于所述刷新调用装置,所述接收器可操作为接收第二数据,所述装置包括比较器,用于比较所述第一数据和所述第二数据,并且可操作为确定在所述第一数据和所述第二数据之间是否存在差异;以及更新器,响应于所述比较器确定存在差异,用于使用所述第二数据更新所述第一数据。
根据第二方面,提供了一种用于更新供系统使用的数据的方法,所述系统用于接收第一数据并且调用所述第一数据的刷新,其中,响应于刷新调用,所述系统可操作为接收第二数据,在客户端计算机处,所述方法包括步骤比较所述第一数据和所述第二数据;确定在所述第一数据和所述第二数据之间是否存在差异;以及,响应于确定存在差异,使用所述第二数据更新所述第一数据。
根据第三方面,提供了一种计算机程序,该计算机程序包括适合于当所述程序运行在计算机上时执行上述方法的所有步骤的程序代码装置。



现在,仅通过举例的方式,参考下图中示出的本发明优选的实施例来描述本发明,图中 图1是包括客户端计算机和服务器计算机的系统的框图; 图2是可以在其中实现本发明的系统的框图; 图3A是示出了根据优选实施例的第一过程中包含的操作步骤的流程图; 图3B是示出了根据优选实施例的第二过程中包含的操作步骤的流程图; 图4是第一XHTML文档的表示; 图5是第一DOM的表示; 图6是第一网页的表示; 图7是第二DOM的表示;并且 图8是第二网页的表示。

具体实施例方式 参考图2,此处示出的是可以在其中实现本发明的系统(200)的框图。该系统(200)包括客户端计算机(205)和服务器计算机(220),它们中的每一个都可操作为通过例如因特网的网络彼此通信。
客户端计算机(205)包括用于呈现由服务器计算机(220)提供的网页的网络浏览器(210)。
客户端计算机(205)还包括用于向服务器计算机(220)发送网页请求的请求器(225);用于接收来自于服务器计算机(220)的响应的接收器(230);用于解析包括在响应中的文档并且在存储器(255)中存储相关文档对象模型(DOM)的解析器;和用于呈现文档的呈现器(240)。稍后将更详细地描述DOM。
客户端计算机(205)还包括用于比较多个DOM的比较器(245)和用于更新DOM的更新器(250)。应该理解的是,本发明的装置可以驻留在客户端计算机处的网络浏览器内。
现在,将参考附图描述优选的实施例的例子。
参考图3A,请求器(225)生成并且发送(步骤300)对于第一网页的请求到服务器计算机(220)。在该例子中,XMLHTTPRequest对象代表该请求。通过使用XMLHTTPRequest对象,在已经载入网页之后,可以使用来自于服务器计算机(220)的数据改变网页。对于XMLHTTPRequest对象可以使用各种方法。在这里描述的例子中,请求器(225)使用open()方法以指定请求的参数,例如具有与获得数据相关的“GET”的相关值的“方法”参数和与将获得的URL(例如www.my_news.com)相关的URL参数。请求器(225)使用send()方法发送该请求。应该理解可以以很多方式实现该请求。
响应于接收该请求,服务器计算机(220)向接收器(230)发送(步骤305)包括第一网页的响应。在该例子中,与第一网页相关的第一XHTML文档包括在由服务器计算机(220)发送的HTTP响应中。应该理解可以使用许多标记语言,例如HTML。
图4中示出了第一XHTML文档的例子。该文档包括由标记表示的元素。标记由字符“<>”括起来。
<html></html>标记(即根元素)定义了包括头(由<head></head>标记定义)和正文(由<body></body>标记定义)的XHTML文档。头包括包含指定标题(即,“News”)的文本串的<title></title>标记。头还包括用于标识文档属性的<meta></meta>标记。<meta></meta>标记包括“http-equiv”属性,该属性用于指定服务器计算机应该在HTTP响应消息中传达的信息,该文档利用HTTP响应消息传输。在图4中,“http-equiv”属性的值是“refresh”并且相关“content”属性的值是“150”。示例语法指定应该在150秒周期之后刷新包括<meta></meta>标记的第一XHTML文档。应该理解刷新调用装置可以以很多方式实现(例如与网页浏览器(210)相关的程序代码)。
图4中,示出两个<div></div>标记。<div></div>标记定义了文档中的一部分。每个<div></div>标记具有相关的标识符(即,“News_1”和“News_2”)。在每个定义的部分内,示出了定义可以用于创建链接的锚点(anchor)的<a></a>标记(其中“href”属性指定了链接的URL)。在<a></a>标记内是用于创建链接的文本串。例如,作为可点击的链接向用户示出文本“Company X is due to be sold”,其中链接的URL是www.newsiteml.html。
响应于接收HTTP响应,接收器(230)向解析器(235)传送第一XHTML文档,解析器(235)将第一XHTML文档装入存储器(255)并且为了获得第一相关DOM而解析它。
文档对象模型(DOM)是用于文档的应用编程接口。DOM定义了文档的逻辑类树结构以及访问和操作文档的方式。可以将表示网页的文档装入存储器并且对其进行解析。一旦装载到存储器中并且被解析,就可以访问文档的逻辑结构。文档的元素、属性和文本可以被表示为对象(公知为节点)。万维网联盟(W3C)已经批准定义了W3C DOM的规范。
图5中示出了用于表示第一网页的第一XHTML文档的第一DOM的表示。应该理解可以使用许多逻辑结构。
示例性的第一DOM包括第一根元素节点(500);第一元素节点(505);第二元素节点(515);第一文本节点(520);第三元素节点(525);第一属性节点(530);第二属性节点(535);第四元素节点(510);第五元素节点(540);第六元素节点(545);第三属性节点(550);第二文本节点(555);第七元素节点(560);第八元素节点(565);第四属性节点(570)和第三文本节点(575)。
出于示例性目的,第一DOM包括多层。
第一层包括第一根元素节点(500)。第二层包括第一元素节点(505)和第四元素节点(510)。第三层包括第二元素节点(515)、第三元素节点(525)、第五元素节点(540)和第七元素节点(560)。第四层包括第一文本节点(520)、第一属性节点(530)、第二属性节点(535)、第六元素节点(545)和第八元素节点(565)。第五层包括第三属性节点(550)、第二文本节点(555)、第四属性节点(570)和第三文本节点(575)。
出于示例性目的,第一DOM包括多个分支。第一(左)分支包括第二元素节点(515)和第一文本节点(520)。第二(右)分支包括第三元素节点(525)、第一属性节点(530)和第二属性节点(535)。第三(左)分支包括第五元素节点(540)、第六元素节点(545)、第三属性节点(550)和第二文本节点(555)。第四(右)分支包括第七元素节点(560)、第八元素节点(565)、第四属性节点(570)和第三文本节点(575)。
呈现器(240)呈现(步骤310)第一XHTML文档。图6中示出第一网页(600)的表示,包括第一部分(605)和第二部分(610)。
如上所述,<meta></meta>标记指定应该在150秒周期之后刷新第一XHTML文档。因此在150秒周期之后,请求器(225)向服务器计算机(220)发送(步骤315)刷新请求,其中由XMLHTTPRequest对象表示刷新请求。
响应于接收刷新请求,服务器计算机(220)向接收器(230)发送(步骤320)包括第二网页的刷新响应。在该例子中,与第二网页相关的第二XHTML文档包括在由服务器计算机(220)发送的HTTP响应中。
响应于接收HTTP响应,接收器(230)向解析器(235)传送第二XHTML文档,解析器(235)将第二XHTML文档装入存储器(255)中,并且为了获得相关第二DOM而解析它。在该例子中,图7示出了第二DOM。
第二示例性DOM包括第二根元素节点(700);第九元素节点(705);第十元素节点(715);第四文本节点(720);第十一元素节点(725);第五属性节点(730);第六属性节点(735);第十二元素节点(710);第十三元素节点(740);第十四元素节点(745);第七属性节点(750);第五文本节点(755);第十五元素节点(760);第十六元素节点(765);第八属性节点(770)和第六文本节点(775)。
出于示例性目的,第二DOM包括多层。
第一层包括第二根元素节点(700)。第二层包括第九元素节点(705)和第十二元素节点(710)。第三层包括第十元素节点(715)、第十一元素节点(725)、第十三元素节点(740)和第十五元素节点(760)。第四层包括第四文本节点(720)、第五属性节点(730)、第六属性节点(735)、第十四元素节点(745)和第十六元素节点(765)。第五层包括第七属性节点(750)、第五文本节点(755)、第八属性节点(770)和第六文本节点(775)。
出于示例性目的,第二DOM包括多个分支。第一(左)分支包括第十元素节点(715)和第四文本节点(720)。第二(右)分支包括第十一元素节点(725)、第五属性节点(730)和第六属性节点(735)。第三(左)分支包括第十三元素节点(740)、第十四元素节点(745)、第七属性节点(750)和第五文本节点(755)。第四(右)分支包括第十五元素节点(760)、第十六元素节点(765)、第八属性节点(770)和第六文本节点(775)。
根据优选的实施例,呈现器(240)不呈现第二XHTML文档。而是,响应于获得第二DOM,解析器(235)调用比较器(245)。
比较器(245)执行(步骤325)第一和第二DOM之间的比较。现在将参考图3B描述由比较器(245)使用的过程,其中比较器(245)检查第一和第二DOM之间的差异。
优选地,比较器(245)为了比较第一和第二DOM而执行树的遍历算法。
优选地,比较器(245)使用访问每个DOM第一层的树的遍历算法。如果没有发现差异,则比较器以如下顺序访问每个DOM左子树的一个或多个节点节点505和705,第一分支和第二分支。如果没有发现差异,则比较器以如下顺序访问每个DOM右子树的一个或多个节点节点510和710,第三分支和第四分支。应该理解可以实现许多种树的遍历算法。
如果比较器(245)确定在DOM之间发现差异,比较器(245)将调用稍后将描述的更新器(250)。
在这里描述的例子中,更新器(250)更新已经在第二DOM中发现差异的第一DOM中的节点。
参看图3B,比较器(245)访问(步骤340)第一根元素节点(500)和第二根元素节点(700)。比较器(245)为了获得相关名称查询第一根元素节点(500)和第二根元素节点(700)。参考图3B,响应于获得名称,比较器(245)比较(步骤345)所述名称以确定所述名称是否匹配。
如果比较器(245)确定名称不匹配,比较器(245)调用(步骤365)稍后将描述的更新器(250)。
在这里的例子中,比较器(245)确定名称(即,“<html>”)匹配。
响应于名称匹配,比较器(245)查询第一根元素节点(500)和第二根元素节点(700),以确定(步骤350)第一根元素节点(500)和第二根元素节点(700)中的每个是否具有子节点。
如果比较器(245)确定第一根元素节点(500)和第二根元素节点(700)都不具有子节点,则比较器(245)做出关于是否存在要访问的任何其他节点的确定(步骤390)。应该理解,如果第一根元素节点(500)和第二根元素节点(700)都没有节点,比较器(245)确定(步骤370)不存在要访问的其他节点,并且该过程结束。
如果比较器(245)确定第一根元素节点(500)和第二根元素节点(700)中的一个或多个具有子节点,则比较器(245)执行进一步的查询。
在这里的例子中,参看图5和7,比较器(245)确定第一根元素节点(500)和第二根元素节点(700)的每一个都具有子节点(即,分别是节点505、510和705、710)。作为响应,比较器(245)查询第一根元素节点(500)和第二根元素节点(700)的每一个,以获得(步骤355)表示子节点列表的对象。
响应于获得每个列表,执行其中比较器(245)使用每个列表的 “长度”属性的比较,以返回列表中的大量节点。应该理解如果第一根元素节点(500)和第二根元素节点(700)中的一个没有子节点,则长度属性的相关值是“0 ”。
对于第一根元素节点(500)和第二根元素节点(700)的每一个,列表的长度示出如下 Length(Node 500)=“2” Length(Node 700)=“2” 比较器(245)比较(步骤360)所述长度以确定它们是否匹配。
如果长度不匹配,则这指示差异。例如,如果第一根元素节点(500)具有两个子节点,而第二根元素节点(700)具有三个子节点,则已经发现差异。
如果长度不匹配,比较器(245)可操作为调用(步骤365)稍后将描述的更新器(250)。
在这里的例子中,比较器(245)确定长度(即“2”)匹配,并且作为响应,比较器(245)做出关于是否存在要访问的任何其他节点的确定(步骤370)。
在这里的例子中,比较器(245)确定存在要访问的其他节点,并且比较器(245)访问(步骤340)每个DOM左子树中的下一个节点。在这里的例子中,下一个节点是第一元素节点(505)和第九元素节点(705)。比较器(245)对于第一元素节点(505)和第九元素节点(705)执行图3B的过程。
比较器(245)访问(步骤340)第一元素节点(505)和第九元素节点(705)。比较器(245)为了获得相关名称查询第一元素节点(505)和第九元素节点(705)。比较器(245)比较(步骤345)所述名称以确定名称是否匹配。
在这里的例子中,比较器(245)确定名称(即,“<head>”)匹配。作为响应,比较器(245)确定(步骤350)第一元素节点(505)和第九元素节点(705)的每一个是否具有子节点。
在这里的例子中,参考图5和7,比较器(245)确定第一元素节点(505)和第九元素节点(705)的每一个具有子节点(即,分别是节点515、525和715、725)。
作为响应,比较器(245)查询第一元素节点(505)和第九元素节点(705)的每一个,以获得(步骤355)子节点的列表。
响应于获得每个列表,比较器(245)使用如上描述的“长度”属性。对于第一元素节点(505)和第九元素节点(705)中的每一个,列表的长度示出如下 Length(Node 505)=“2” Length(Node 705)=“2” 比较器(245)比较(步骤360)该长度以确定它们是否匹配。
在这里的例子中,比较器(245)确定长度(即“2”)匹配。
作为响应,比较器(245)做出关于是否存在要访问的其他节点的确定(步骤370)。
在这里的例子中,比较器(245)确定存在要访问的其他节点,并且比较器(245)访问(步骤340)与每个DOM相关的每个左子树中的下一个节点。
在这里的例子中,下一个节点是第三元素节点(515)和第十元素节点(715)。比较器(245)对于第三元素节点(515)和第十元素节点(715)执行图3B的过程。
将不再进一步描述用于每个DOM的每个左子树中的其他节点的比较过程,正如在当前例子中那样,比较器(245)确定第二DOM的左子树与第一DOM的左子树没有不同。
现在将描述右子树的节点比较。
比较器(245)比较第四和第十二元素节点(分别是510和710)、第五和第十三元素节点(分别是540和740)、第六和第十四元素节点(分别是545和745)以及第三和第七属性节点(分别是550和750)。在这里描述的例子中,比较器(245)并未确定相应节点间的任何差异。
现在将描述第二和第五文本节点(分别是555和755)的比较。
比较器(245)访问(步骤340)第二文本节点(555)和第五文本节点(755)。比较器(245)为了获得相关名称而查询第二文本节点(555)和第五文本节点(755)。比较器(245)比较(步骤345)所述名称以确定所述名称是否匹配。
在这里描述的例子中,参考图5和7,比较器(245)确定名称(即,“Company X is due to be sold”和“Company X has been sold toCompany Y”)不匹配。这指示已经发现差异。
作为响应,比较器(245)可操作为调用(步骤365)更新器(250)。
参考图3A,更新器(250)可操作为使用与第一DOM的相应至少一个节点不同的第二DOM的至少一个节点更新(步骤330)第一DOM。现在将更详细地描述更新器(250)。
更新器(250)查询与第一DOM的相应节点(即第三文本节点555)不同的第二DOM的节点(即第五文本节点755),以确定相关的父节点。在这里的例子中,父节点是第十四元素节点(745)。
响应于确定父节点,更新器执行方法(例如方法“removeChild”),以从与父节点(745)相关的子节点列表中移除第五文本节点(755)。
响应于从与父节点(745)相关的子节点列表中移除第五文本节点(755),更新器(250)使用方法(例如方法adoptNode)以将第五文本节点(755)从第二XHTML文档采纳到第一XHTML文档。
响应于采纳了第五文本节点(755),更新器(250)使用方法(例如方法replaceChild)以利用第五文本节点(755)替换第二文本节点(555)。
呈现器(240)呈现(步骤335)第一XHTML文档。图8中示出的第二网页(800)的表示包括第一部分(805)和第二部分(610)。
参考图3B,比较器(245)做出关于是否存在要访问的其他更多节点的确定(步骤370)。
在这里的例子中,比较器(245)确定存在要访问的其他节点,并且参考图5和7,比较器(245)使用图3B的过程以比较第七和第十五元素节点(分别是560和760);第八和第十六元素节点(分别是565和765);第四和第八属性节点(分别是570和770)以及第三和第六文本节点(分别是575和775)。在这里描述的例子中,比较器(245)未确定相应节点间的任何差异。作为响应,由于不存在要访问的更多节点,该过程结束。
在图8中可以看到,在无需更新未改变的第二部分(610)的情况下,已经呈现了包括与第一网页的第一部分(605)不同的第一部分(805)的第二网页。
本发明优选的实施例提供了改善对网页的一般更新处理的机制。如上所述,网页的一般更新可能使用户感到沮丧。而且,整个网页刷新可能非常缓慢,并且引起屏幕闪烁。
有利地,本发明优选的实施例允许仅更新网页的不同(改变的)部分。因此,用户可以继续与网页未改变的部分进行交互。而且,本发明的机制提供了网页的快速更新。
而且,在客户端侧提供本发明优选的实施例的装置。
因此,本发明优选的实施例利用了当前改善的网络链路(例如,在带宽方面),原因在于客户端计算机接收了包括整个网页的响应。
而且,有利地,由于在客户端侧提供本发明的装置,因此在服务器侧不需要改变。这是有利的,因为服务侧改变可能是复杂的并且如果发生错误,则影响多个客户端。而且,服务器侧需要的额外的工作可以导致客户端侧的延迟。而且,为了比较网页的差异,服务器计算机需要存储网页较旧的版本,这可以导致服务器计算机的巨大的开销。
现在将描述优选实施例方面的可选的实现方式。
应该理解可以在DOM的剩余部分的比较之后执行呈现步骤335。
应该理解可以配置比较器(245)以从DOM中的任何节点开始比较DOM。例如,可以配置比较器(245)去比较每个DOM的多个分支(例如第一分支、第二分支、第三分支和第四分支)。这是有优势的,原因在于比较器可以确定(例如,根据历史的统计;根据来自于网页开发者等的指令)具有名称“<html>”、“<head>”和“<body>”的元素节点没有改变。因此,通过移除比较器(245)对于访问和比较这些节点的需要,比较过程更有效率。
应该理解比较器(245)可以检查节点间的许多差异(例如于属性相关的值的差异)。
应该理解更新器(250)可以以很多方式更新DOM。在这里描述的例子中,在第二DOM中已经发现差异的第一DOM中的节点处,发生更新。可选地,更新可以发生在第二DOM中已经发现差异的第一DOM中的节点处并且更新一个或多个相关子节点。
在一个例子中,更新器(250)可以配置为更新已经在第二DOM中发现差异的第一DOM中的节点并且更新所有它的相关子节点。
在此例子中,关于第一根元素节点(500)和第二根元素节点(700)的每一个是否具有子节点的确定(步骤375)对于比较器(245)确定在特定层在DOM间是否存在任何差异是有效的方式,因为不必访问和比较低于第一层的更低层节点。即,如果第一根元素节点(500)具有子节点而第二根元素节点(700)没有子节点,则在DOM的第一层处已经发现差异。因此,不需要发生访问和比较一个或更多低于第一层的层处的节点的情况。相反,比较器(245)调用更新器(250)以在第一层更新第一DOM,其中更新了第一根元素节点(500)和所有它的相关子节点(节点505到575)(例如通过使用第二根元素节点(700)和所有它的相关子节点(节点705到775)进行替换)。
对于本领域的一个普通技术人员来说,应该清楚本发明优选的实施例的方法的全部或部分可以适当地并且有效地体现在一个逻辑装置或者多个逻辑装置中,所述一个逻辑装置或多个逻辑装置包括布置为执行该方法步骤的逻辑元件,并且这样的逻辑元件可以包括硬件组件、固件组件或者它们的组合。
对于本领域的一个普通技术人员来说,同样应该清楚根据本发明优选的实施例的逻辑布置的全部或者一部分可以适当地体现在包括执行该方法步骤的逻辑元件的逻辑装置中,并且这样的逻辑元件可以包括例如可编程逻辑阵列或者专用集成电路中的逻辑门的组件。这样的逻辑布置还可以体现在使能元件中,所使能元件用于使用例如虚拟硬件描述符语言在这样的阵列或电路中临时地或者永久地建立逻辑结构,所述虚拟硬件描述符语言可以使用固定的或者可传输的承载介质存储并且传输。
应该理解,也可以以运行在一个或多个处理器上(图中未示出)的软件来全部或者部分地适当实现上面描述的方法和布置,并且可以以一个或多个计算机程序元件的形式提供该软件,该计算机程序元件承载于任何例如磁盘或者光盘等合适的数据承载体上(图中也未示出)。用于传输数据的信道同样可以包括所有描述的存储介质以及信号-承载介质,例如有线或者无线信号-承载介质。
本发明还可以适当地体现为供计算机系统使用的计算机程序产品。这样的实现可以包括一系列计算机可读指令,所述计算机可读指令既可以固定在有形介质(诸如计算机可读介质)上,例如,软盘、CD-ROM、ROM或者硬盘,也可以经由调制解调器或者其他接口设备通过包括但不限于光或者模拟通信线路的有形介质或者无形地使用包括但不限于微波、红外或者其他传输技术的无线技术而传输到计算机系统。该一系列计算机可读指令体现了这里在前面描述的所有或者部分功能。
本领域的那些技术人员应该理解,可以以大量的编程语言编写这样的计算机可读指令,以供很多计算机架构或者操作系统使用。而且,这样的指令可以使用任何当前或者未来的存储技术存储,包括但不限于半导体、磁性、或者光存储技术,或者使用任何当前或者未来通信技术进行传输,包括但不限于光、红外、或者微波通信技术。可以设想这样的计算机程序产品可以作为可移动介质分发,该可移动介质具有随附印刷或电子文档,例如紧缩套装软件,预装载在计算机系统的例如系统ROM或者固定盘上,或者通过网络,例如因特网或者万维网,从服务器或者电子布告栏分发。
作为选择,本发明的优选实施例可以以部署一服务的计算机实现方法的形式来实现,该方法包括步骤部署可操作为当在计算机基础设施中部署并且在其上执行时,使所述计算机系统执行所描述的方法的所有步骤的计算机程序代码。
对于本领域的一个技术人员应该清楚,可以在不脱离本发明范围的情况下,对前述示例性实施方式做出很多改善和修改。
权利要求
1.一种用于更新供系统使用的数据的客户端装置,所述系统包括用于接收第一数据的接收器和用于调用所述第一数据的刷新的刷新调用装置,其中,响应于所述刷新调用装置,所述接收器可操作为接收第二数据,所述装置包括
比较器,用于比较所述第一数据和所述第二数据,并且可操作为确定在所述第一数据和所述第二数据之间是否存在差异;以及
更新器,响应于所述比较器确定存在差异,用于使用所述第二数据更新所述第一数据。
2.根据权利要求1所述的装置,还包括呈现器,用于呈现所述第一数据和所述第二数据中的至少一个。
3.根据权利要求1或权利要求2所述的装置,还包括解析器,用于在存储设备中存储所述第一数据和所述第二数据,并且解析所述第一数据和所述第二数据以分别获得第一逻辑结构和第二逻辑结构。
4.根据权利要求3所述的装置,其中为了比较所述第一数据和所述第二数据,所述比较器可操作为访问所述第一逻辑结构和所述第二逻辑结构。
5.根据权利要求3或权利要求4所述的装置,其中所述比较器可操作为比较所述第一逻辑结构和所述第二逻辑结构的至少一个属性。
6.根据权利要求5所述的装置,其中所述至少一个属性包括名称、一个子节点和大量字节点中的至少一项。
7.根据权利要求3到6的任何一项所述的装置,其中所述第一逻辑结构和所述第二逻辑结构是树,并且其中所述比较器可操作为执行树遍历算法以访问所述第一逻辑结构和所述第二逻辑结构。
8.根据权利要求3到7的任何一项所述的装置,其中所述比较器确定在所述第一逻辑结构的第一子集和所述第二逻辑结构的第二子集间存在差异,并且其中所述更新器可操作为使用所述第二子集更新所述第一子集。
9.根据前述权利要求的任何一项所述的装置,其中所述比较器可操作为从与所述第一数据和所述第二数据相关的可预配置的开始位置比较所述第一数据和所述第二数据。
10.根据前述权利要求的任何一项所述的装置,其中第三数据包括所述第二数据,并且其中所述更新器可操作为使用所述第三数据更新所述第一数据。
11.根据权利要求10所述的装置,其中所述第三数据代表所述第二数据的父数据。
12.根据前述权利要求的任何一项所述的装置,其中所述第一数据和所述第二数据代表以标记语言生成的文档。
13.根据权利要求12所述的装置,其中所述文档代表网页。
14.根据前述权利要求的任何一项所述的装置,其中所述第一逻辑结构和所述第二逻辑结构代表DOM树。
15.一种用于更新供系统使用的数据的方法,所述系统用于接收第一数据并且调用所述第一数据的刷新,其中,响应于刷新调用,所述系统可操作为接收第二数据,在客户端计算机处,所述方法包括步骤
比较所述第一数据和所述第二数据;
确定在所述第一数据和所述第二数据之间是否存在差异;并且
响应于确定存在差异,使用所述第二数据更新所述第一数据。
16.根据权利要求15所述的方法,还包括步骤呈现所述第一数据和所述第二数据中的至少一个。
17.根据权利要求15或权利要求16所述的方法,还包括步骤
在存储设备中存储所述第一数据和所述第二数据;并且
解析所述第一数据和所述第二数据,以分别获得第一逻辑结构和第二逻辑结构。
18.根据权利要求17所述的方法,其中所述比较步骤还包括步骤访问所述第一逻辑结构和所述第二逻辑结构。
19.根据权利要求17或权利要求18所述的方法,其中所述比较步骤还包括步骤比较所述第一逻辑结构和所述第二逻辑结构的至少一个属性。
20.根据权利要求19所述的方法,其中所述至少一个属性包括名称、一个子节点和大量字节点中的至少一项。
21.根据权利要求17到20的任何一项所述的方法,其中所述第一逻辑结构和所述第二逻辑结构是树,并且其中所述访问步骤还包括步骤执行树遍历算法。
22.根据权利要求17到21的任何一项所述的方法,还包括步骤确定在所述第一逻辑结构的第一子集和所述第二逻辑结构的第二子集间存在差异并且使用所述第二子集更新所述第一子集。
23.根据权利要求17到22的任何一项所述的方法,还包括步骤从与所述第一数据和所述第二数据相关的可预配置的开始位置比较所述第一数据和所述第二数据。
24.根据权利要求15到23的任何一项所述的方法,其中第三数据包括所述第二数据,并且还包括步骤使用所述第三数据更新所述第一数据。
25.根据权利要求24所述的方法,其中所述第三数据代表所述第二数据的父数据。
26.根据权利要求15到25的任何一项所述的方法,其中所述第一数据和所述第二数据代表以标记语言生成的文档。
27.根据权利要求26所述的方法,其中所述文档代表网页。
28.根据权利要求17到27的任何一项所述的方法,其中所述第一逻辑结构和所述第二逻辑结构代表DOM树。
全文摘要
一种用于更新供系统使用的数据的客户端装置,所述系统包括用于接收第一数据的接收器和用于调用所述第一数据的刷新的刷新调用装置,其中,响应于所述刷新调用装置,所述接收器可操作为接收第二数据,所述装置包括比较器,用于比较所述第一数据和所述第二数据,并且可操作为确定在所述第一数据和所述第二数据之间是否存在差异;以及更新器,响应于所述比较器确定存在差异,用于使用所述第二数据更新所述第一数据。
文档编号H04L29/08GK101184105SQ20071016757
公开日2008年5月21日 申请日期2007年10月29日 优先权日2006年11月18日
发明者M·J·盖尔, B·V·贝迪 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1