一种页面的公共组件的确定方法、服务器及存储介质与流程

文档序号:17490034发布日期:2019-04-23 20:23阅读:136来源:国知局
一种页面的公共组件的确定方法、服务器及存储介质与流程

本发明实施例涉及网络技术领域,特别涉及一种页面的公共组件的确定方法、服务器及存储介质。



背景技术:

动态页面是统一资源标识符(uniformresourceidentifier,uri)提供的不同内容的页面。动态页面一般需要经过数据库查询等一系列操作之后,将数据套入前端模板生成。服务器在查询动态数据时,客户端的浏览器会一直处于等待闲置的状态,产生延迟感。对动态页面进一步细分就会发现,同一uri产生的不同版本的页面之间总是存在公共部分,即存在公共组件。这些公共组件可能包含页面的商标(logo)和其他一些图片。这些公共组件在多次的请求响应内容中基本上是一样的。如果能够抽取这些公共组件,组成这个uri下的公共页面,边缘把这些公共组件缓存下来(称为缓存根)。在客户端请求最新页面时,率先将公共页面(即缓存根)发送到客户端,从而减少客户端的等待时间,然后再把缓存根与原站返回的页面对比,用差异部分对返回给客户的缓存根进行修复,则可以加快页面的展示过程。

然而,发明人发现现有技术中至少存在如下问题:目前,技术人员通过以下方法实现上述思想:在浏览器的动态页面请求在经过代理节点时,先构造响应超级文本标记语言(hypertextmarkuplanguage,html)页面的开头部分,在开头部分(<head>标签)后使用<script>标签和<style>标签将要预先下载的公共组件包含在开头部分。在客户端发送请求时,先将这部分响应发送给客户端的浏览器。客户端在解析这部分响应时,就会触发对这些公共组件的请求了。然而,构造的响应的开头部分的内容(即公共组件)是通过手动配置的方式进行配置的。这种手动配置方式存在以下严重缺陷:①页面的公共组件的内容需要事先沟通获得,这样才能手动配置;②页面的公共组件很多时候会发生变更,若公共组件发生变更,则需要更新配置,配置量大,容易出现无法及时变更。③对于处理多个内容提供者的边缘缓存,片段检测的手动方法变得难以管理且不现实。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

本发明实施方式的目的在于提供一种页面的公共组件的确定方法、服务器及存储介质,无需手动配置公共组件,解决了确定公共组件的可行性差的问题,使得服务器能够自动识别公共组件。

为解决上述技术问题,本发明的实施方式提供了一种页面的公共组件的确定方法,包括以下步骤:接收第一页面;确定第一页面的信息,以及与第一页面的标识符对应的参考页面的信息;根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件。

本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;以及,其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施方式提及的页面的公共组件的确定方法。

本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式的页面的公共组件的确定方法。

本发明实施方式相对于现有技术而言,服务器将第一页面与参考页面进行比较,能够确定第一页面和参考页面的公共组件,无需人工询问,也无需手工配置,避免了手工配置公共组件的可行性差的问题。

另外,第一页面的信息为第一页面的文档对象模型dom节点树,参考页面的信息为参考页面的dom节点树;

根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件,具体包括:确定第一页面的dom节点树中每个节点的数据长度,以及参考页面的dom节点树中每个节点的数据长度;将第一页面的dom节点树中的节点的数据长度,与参考页面的dom节点树中的节点的数据长度比较,确定第一页面的dom节点树和参考页面的dom节点树的公共节点;将公共节点作为第一页面与参考页面的公共组件。

另外,将第一页面的dom节点树中的节点的数据长度,与参考页面的dom节点树中的节点的数据长度比较,确定第一页面的dom节点树和参考页面的dom节点树的公共节点,具体包括:根据第一页面的dom节点树的节点的数据长度和参考页面的dom节点树的节点的数据长度,将第一页面的dom节点树的节点和参考页面的dom节点树的节点分为n个对比集合;其中,每个对比集合中的节点的数据长度属于同一预设范围,n为正整数;将属于同一对比集合的节点进行比较,确定公共节点。该实现中,将第一页面的dom节点树的节点和参考页面的dom节点树的节点分为n个对比集合,可以避免服务器将数据长度很大的两个节点进行比较,减少了比较次数,避免浪费计算资源

另外,将属于同一对比集合的节点进行比较,确定公共节点,具体包括:针对每个对比集合中的每个节点,分别进行以下操作:判断节点是否属于第一页面的dom节点树;若确定属于,判断对比集合中,是否存在与节点的差值小于预设值的属于参考页面的dom节点树的节点;若确定存在,将节点,和/或,与节点的差值小于预设值的属于参考页面的dom节点树的节点,作为公共节点;若确定不属于,判断对比集合中,是否存在与节点的差值小于预设值的属于第一页面的dom节点树的节点;若确定存在,将节点,和/或,与节点的差值小于预设值的属于第一页面的dom节点树的节点,作为公共节点。

另外,在根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件之后,页面的公共组件的确定方法还包括:根据第一页面与参考页面的公共组件,确定第一页面的标识符对应的第一公共组件集合;根据第一公共组件集合,生成第一页面的标识符对应的缓存根。该实现中,服务器根据公共组件集合,生成标识符对应的缓存根,使得服务器能够在接收到客户端发送的页面请求时,先将该页面请求中的标识符对应的缓存根发送至客户端,减少延迟感。

另外,在根据第一公共组件集合,生成第一页面的标识符对应的缓存根之前,页面的公共组件的确定方法还包括:确定第一页面的标识符对应的第二公共组件集合;其中,第二公共组件集合为上一次确定的第一页面的标识符对应的公共组件集合;确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数。

另外,在确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数之前,页面的公共组件的确定方法还包括:确定第一页面的标识符对应的缓存根未过期;或,确定第一页面的标识符当前的学习周期未结束。该实现中,服务器按照一定的学习周期,对页面的公共组件进行学习时,或者,为缓存根设置有效期时,可以减少改动前页面前接收到的页面的信息对学习结果的准确性的影响。

另外,在确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数之后,页面的公共组件的确定方法还包括:根据第一页面的信息,更新第一页面的标识符对应的参考页面的信息。

另外,在确定第一页面的标识符对应的参考页面的信息之后,页面的公共组件的确定方法还包括:若确定参考页面的信息为空,将第一页面的信息,作为下次确定页面的公共组件的过程中的参考页面的信息。

另外,在接收第一页面之前,页面的公共组件的确定方法还包括:步骤a:接收客户端发送的第一页面请求;其中,第一页面请求中包括请求访问的页面的标识符;步骤b:判断是否存在请求访问的页面的标识符对应的缓存根;若确定是,执行步骤c;否则,执行步骤d;步骤c:将请求访问的页面的标识符对应的缓存根发送至客户端,之后执行步骤d;步骤d:根据第一页面请求,确定第二页面请求,将第二页面请求发送至源服务器。

另外,在接收第一页面之后,页面的公共组件的确定方法还包括:根据第一页面和请求访问的页面的标识符对应的缓存根,确定修复指令;发送修复指令至客户端。

另外,标识符为统一资源标识符uri。

附图说明

一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。

图1是本发明的第一实施方式的页面的公共组件的确定方法的流程图;

图2是本发明的第一实施方式的第一页面的dom节点树的示意图;

图3是本发明的第一实施方式的参考页面的dom节点树的示意图;

图4是本发明的第一实施方式的服务器生成页面的缓存根的方法的流程图;

图5是本发明的第一实施方式的服务器、客户端、源服务器的交互示意图;

图6是本发明的第二实施方式的页面的公共组件的确定方法的流程图;

图7是本发明的第二实施方式的服务器确定公共组件的过程的示意图;

图8是本发明的第三实施方式的页面的公共组件的确定装置的结构示意图;

图9是本发明的第四实施方式的服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。

本发明的第一实施方式涉及一种页面的公共组件的确定方法,应用于服务器。其中,服务器可以是代理服务器,或者,内容分发网络中的边缘服务器等。如图1所示,该页面的公共组件的确定方法包括:

步骤101:接收第一页面。

具体地说,第一页面可以是源服务器返回的页面,其中,源服务器在接收到服务器发送的页面请求后,返回与该页面请求中的标识符对应的页面。

步骤102:确定第一页面的信息,以及与第一页面的标识符对应的参考页面的信息。

具体地说,第一页面的标识符可以是第一页面的统一资源标识符(uniformresourceidentifier,uri),也可以是其他的页面标识。

在一个实施例中,第一页面的信息可以是第一页面的文档对象模型(documentobjectmodel,dom)节点树,参考页面的信息可以是参考页面的dom节点树。

需要说明的是,本领域技术人员可以理解,实际应用中,页面的信息也可以是其他能够表示页面中各个组件的特征的信息,本实施方式不限定页面的信息的内容。

在一个实施例中,在确定第一页面的标识符对应的参考页面的信息之后,服务器若确定参考页面的信息为空,将第一页面的信息,作为下次确定页面的公共组件的过程中的参考页面的信息。

需要说明的是,本领域技术人员可以理解,在确定参考页面的信息为空之后,服务器可以结束本次的页面的公共组件的确定过程,进入下次的页面的公共组件的确定过程,也可以将继续执行步骤103。

在一个实施例中,服务器在确定参考页面的信息为空之后,结束本次的页面的公共组件的确定过程,继续接收后续的页面。当服务器接收到与第一页面的标识符对应的第二页面时,根据第二页面,进行第一页面的标识符对应的公共组件的确定过程。

例如,在第一时刻,服务器接收到第一页面,第一页面对应的标识符为s。在第一时刻前,服务器未接收过标识符为s的页面,参考页面的信息为空。此时,服务器将第一页面作为参考页面,即将第一页面的信息作为参考页面的信息。在第二时刻,服务器接收到第二页面,第二页面对应的标识符为s,此时,参考页面的信息为第一页面的信息。

在一个实施例中,服务器在确定参考页面的信息为空之后,继续执行步骤103。由于参考页面的信息为空,故确定参考页面和第一页面不存在公共组件。

通过上述内容可知,本领域技术人员可以理解,服务器在每次接收到源服务器返回的页面时,都会触发页面的公共组件的确定过程。服务器持续对页面进行监控,使得页面的公共组件发生变化时,服务器能够根据更改后的页面,及时更新公共组件,相对于人工更改公共组件的方法,更为及时和方便。

步骤103:根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件。

具体地说,当第一页面的信息可以是第一页面的文档对象模型(documentobjectmodel,dom)节点树,参考页面的信息可以是参考页面的dom节点树时,服务器确定第一页面的dom节点树中每个节点的数据长度,以及参考页面的dom节点树中每个节点的数据长度;将第一页面的dom节点树中的节点的数据长度,与参考页面的dom节点树中的节点的数据长度比较,确定第一页面的dom节点树和参考页面的dom节点树的公共节点;将公共节点作为第一页面与参考页面的公共组件。

具体实现中,服务器直接将第一页面的dom节点树中的节点的数据长度,与参考页面的dom节点树中的节点的数据长度比较,根据比较结果,确定第一页面的dom节点树和参考页面的dom节点树的公共节点。

以下结合实际情况,举例说明服务器根据第一种方法确定公共组件的过程。

假设,第一页面的dom节点树(简称节点树1)如图2所示,参考页面的dom节点树(简称节点树2)如图3所示。服务器将节点树1中的节点a1的数据长度分别与节点b1、节点b2、节点b3、节点b4、节点b5、节点b6和节点b7的数据长度进行比较,发现节点a1的数据长度与节点树2的各个节点的数据长度均不相同,故确定节点a1不是公共节点。服务器将节点a2的数据长度分别与节点b1、节点b2、节点b3、节点b4、节点b5、节点b6和节点b7的数据长度进行比较,发现节点a2与节点b2的数据长度相同,故节点a2和节点b2可能相同,因此,服务器将节点a2和节点b2,作为第一页面与参考页面的公共节点。以此类推,服务器将节点树1中的其他节点的数据长度分别与节点树2的节点的数据长度进行比较。在完成所有节点的比较后,确定第一页面与参考页面的公共节点包括:节点a2、节点a4和节点a5。故服务器将节点a2、节点a4和节点a5,作为第一页面与参考页面的公共组件。

需要说明的是,本领域技术人员可以理解,实际应用中,也可以在将节点树2中的节点分别与节点树1中的节点进行比较后,将参考页面的dom节点树中的节点作为公共节点。

具体实现中,服务器在确定公共组件之后,根据第一页面与参考页面的公共组件,确定第一页面的标识符对应的第一公共组件集合;根据第一公共组件集合,生成第一页面的标识符对应的缓存根。其中,缓存根是指第一公共组件集合的文本形态。

例如,第一页面的信息可以是第一页面的文档对象模型(documentobjectmodel,dom)节点树,参考页面的信息可以是参考页面的dom节点树。第一公共组件集合中的信息为第一页面和参考页面的公共节点的dom数据,缓存根为根据第一公共组件集合中的dom数据生成的超文本标记语言文件(hypertextmark-uplanguage,html)文件。

值得一提的是,服务器根据公共组件集合,生成标识符对应的缓存根,使得服务器能够在接收到客户端发送的页面请求时,可以先将该页面请求中的标识符对应的缓存根发送至客户端,减少延迟感。

在一个实施例中,服务器在根据第一公共组件集合,生成第一页面的标识符对应的缓存根之前,确定第一页面的标识符对应的第二公共组件集合,判断第一公共组件集合中的组件的个数是否少于第二公共组件集合中的组件的个数。服务器在确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数后,根据第一公共组件集合,生成第一页面的标识符对应的缓存根。

可选的,服务器在确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数后,根据第一页面的信息,更新第一页面的标识符对应的参考页面的信息。其中,第二公共组件集合为上一次确定的第一页面的标识符对应的第一公共组件集合。

具体地说,若第一公共组件集合中的公共组件个数更少,说明当前接收到的第一页面与参考页面的差距较大,即第一页面的标识符对应的不同版本的页面之间的公共组件发生了变化。该情况下,对缓存根和参考页面的信息进行更新,使得服务器中的缓存根和参考页面的信息能够更贴合标识符对应的网页。

在一个实施例中,服务器按照设定的学习周期,学习公共组件;或者,服务器在生成缓存根后,为生成的缓存根设置有效期。该情况下,服务器在确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数之前,确定第一页面的标识符对应的缓存根未过期;或,确定第一页面的标识符当前的学习周期未结束。

值得一提的是,由于同一标识符对应的页面的版本可能会发生改动,若服务器持续学习页面的公共组件,改动前的页面的版本可能会影响学习结果的准确性。当服务器按照一定的学习周期,对页面的公共组件进行学习时,或者,服务器为缓存根设置有效期时,可以减少改动前的页面的信息对学习结果的准确性的影响。

需要说明的是,本领域技术人员可以理解,学习周期和缓存根的有效期可以根据需要设置,本实施方式不限制学习周期和缓存根的有效期的具体时长。

为阐述请求,以下结合上述内容,对服务器按照一定的学习周期,对页面的公共组件进行学习,并根据确定页面的公共组件集合,生成缓存根的过程进行举例说明。如图4所示,服务器生成页面的缓存根的方法包括以下步骤:

步骤401:接收源服务器返回的第一页面。

步骤402:判断第一页面是否是当前的学习周期中接收到的第一个与第一页面的标识符对应的页面。

具体地说,若确定是,执行步骤403,否则,执行步骤404。

步骤403:将第一页面的信息,作为参考页面的信息。之后结束流程。

具体地说,当服务器刚开启新的学习周期时,还不存在参考页面信息。该情况下,根据第一页面的信息,初始化参考页面的信息,即将第一页面的信息作为参考页面的信息,以便服务器在下次接收到与该标识符对应的页面时,可以基于参考页面的信息,学习该标识符对应的页面的公共组件。

步骤404:根据第一页面的信息和参考页面的信息,确定第一页面和参考页面的第一公共组件集合。

具体地说,服务器根据第一页面的信息和参考页面的信息,确定第一页面和参考页面的公共组件。根据第一页面和参考页面的公共组件,确定第一公共组件集合。其中,服务器确定第一页面和参考页面的公共组件的方法可参考本实施方式中的步骤103中的相关描述,此处不再赘述。

步骤405:判断当前的学习周期是否结束。

具体地说,若确定第一页面的标识符当前的学习周期已结束,执行步骤406,否则,执行步骤408。

步骤406:根据第一公共组件集合,更新第一页面的标识符对应的缓存根,保存更新后的第一页面的标识符对应的缓存根。

步骤407:清空参考页面的信息。

具体地说,若当前的学习周期已结束,为避免当前的学习周期中接收到的页面的信息影响下一学习周期,服务器清空参考页面的信息。

在执行步骤407之后,结束流程,服务器进入新的学习周期。

步骤408:判断第一公共组件集合中的组件的个数是否少于第二公共组件集合中的组件的个数。

具体地说,第二公共组件集合为上一学习周期确定的第一页面的标识符对应的公共组件集合。若第一公共组件集合中的组件比第二公共组件集合少,说明第一页面相对于参考页面发生较大改变,服务器需要更新参考页面的信息和缓存根,以便后续对公共组件的学习。若第一公共组件集合中的组件比第二公共组件集合多,或,与第二公共组件集合相同,说明第一页面相对于参考页面未发生很明显的改变,服务器可以继续使用当前的参考页面和缓存根。因此,若服务器确定第一公共组件集合中的组件的个数少于第二公共组件集合中的组件的个数,执行步骤409,否则,结束流程。

需要说明的是,本领域技术人员可以理解,实际应用中,服务器可以在第一公共组件集合中的组件的个数比第二公共组件集合中的组件的个数少m个之后,再执行步骤409。其中,m为正整数。

步骤409:将第一页面的信息,作为参考页面的信息。

步骤410:根据第一公共组件集合,更新第一页面的标识符对应的缓存根,保存更新后的第一页面的标识符对应的缓存根。

在执行步骤410之后,结束流程,服务器继续当前的学习周期,基于接收到的新的页面,持续进行学习。

需要说明的是,本实施方式中,为阐述清楚,将步骤407设置为步骤406的后续步骤,步骤410设置为步骤409的后续步骤。但是,本领域技术人员可以理解,实际应用中,可以先执行步骤407,再执行步骤406,先执行步骤410,再执行步骤409。本实施方式不起限定作用。

需要说明的是,本领域技术人员可以理解,当服务器为缓存根设置有效期时,其生成页面的缓存根的逻辑与服务器按照一定的学习周期,生成页面的缓存根的逻辑大致相似。当需要为缓存根设置有效期时,本领域技术人员可以参考本实施方式中的相关内容,为页面生成缓存根。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

与现有技术相比,本实施方式中提供的页面的公共组件的确定方法,服务器将第一页面与参考页面进行比较,能够确定第一页面和参考页面的公共组件,无需人工询问,也无需手工配置,避免了手工配置公共组件的可行性差的问题。除此之外,服务器根据公共组件,生成或更新页面的标识符对应的缓存根,使得服务器能够在接收到页面访问请求时,先返回缓存根,减少延迟感,从而减少客户端的等待时间。当服务器为内容分发网络的边缘服务器时,使得缓存根能够存储在边缘服务器上,提高了页面访问的首屏时间。

为阐述清楚,以下结合服务器、客户端和源服务器之间的交互过程,对确定页面的公共组件的方法进行说明。如图5所示,包括以下步骤:

步骤501:服务器接收客户端发起的第一页面请求。其中,第一页面请求可以由客户端的浏览器发起,第一页面请求中包括请求访问的页面的标识符。

步骤502:服务器判断是否存在请求访问的页面的标识符对应的缓存根。

具体地说,服务器若确定存在请求访问的页面的标识符对应的缓存根,执行步骤503,之后执行步骤504,否则,直接执行步骤504。

步骤503:服务器将请求访问的页面的标识符对应的缓存根发送至客户端。之后执行步骤504。

具体地说,客户端在接收到缓存根后,根据缓存根生成页面,显示生成的页面。

步骤504:服务器根据第一页面请求,确定第二页面请求,将第二页面请求发送至源服务器。

需要说明的是,为阐述清楚,本实施方式中,针对服务器中存在第一页面请求的标识符对应的缓存根的情况,将步骤504作为步骤503的后续步骤,实际应用中,可以先执行步骤504,再执行步骤503,或者,同时执行步骤503和步骤504,本实施方式不限制该情况下的步骤503和步骤504的先后顺序。

步骤505:服务器接收服务器返回的第一页面。

步骤506:服务器根据第一页面,以及请求访问的页面的标识符对应的缓存根,确定修复指令。

具体地说,服务器确定第一页面和第一页面的标识符对应的缓存根之间的不同组件,根据不同组件,生成修复指令,以指示客户端根据修复指令,修复页面。

步骤507:服务器发送修复指令至客户端。

具体地说,客户端在接收到修复指令后,根据修复指令,修复页面。

步骤508:服务器确定第一页面的信息,以及与第一页面的标识符对应的参考页面的信息,根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件。

本发明的第二实施方式涉及一种页面的公共组件的确定方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:在第一实施方式中,以服务器直接将第一页面的dom节点树中的节点的数据长度,与参考页面的dom节点树中的节点的数据长度比较为例,说明确定公共节点的方法。而在本发明的第二实施方式中,服务器先将第一页面的dom节点树中的节点和参考页面的dom节点树中的节点分为n个对比集合,再对每个对比集合中的节点进行比较。其中,n为正整数。

具体的说,如图6所示,在本实施方式中,包含步骤601至步骤606,其中,步骤601和步骤602分别与第一实施方式中的步骤101和步骤102大致相同,此处不再赘述。下面主要介绍不同之处:

执行步骤601和步骤602。

步骤603:确定第一页面的dom节点树中每个节点的数据长度,以及参考页面的dom节点树中每个节点的数据长度。

具体地说,服务器对第一页面和参考页面进行解析,生成第一页面的dom节点树和参考页面的dom节点树,并确定两个dom节点树上每个节点的数据长度。

步骤604:根据第一页面的dom节点树的节点的数据长度和参考页面的dom节点树的节点的数据长度,将第一页面的dom节点树的节点和参考页面的dom节点树的节点分为n个对比集合。

具体地说,每个对比集合中的节点的数据长度属于同一预设范围,n为正整数。其中,每个对比集合的节点的数据长度的预设范围可以根据需要设置。

步骤605:将属于同一对比集合的节点进行比较,确定公共节点。

具体实现中,针对每个对比集合中的每个节点,分别进行以下操作:判断该节点是否属于第一页面的dom节点树;若确定属于,判断对比集合中,是否存在与该节点的差值小于预设值的属于参考页面的dom节点树的节点;若确定存在,将该节点,和/或,与该节点的差值小于预设值的属于参考页面的dom节点树的节点,作为公共节点;若确定不属于,判断对比集合中,是否存在与该节点的差值小于预设值的属于第一页面的dom节点树的节点;若确定存在,将该节点,和/或,与该节点的差值小于预设值的属于第一页面的dom节点树的节点,作为公共节点。其中,预设值可以根据需要设置,例如,设置为10至100中的任意一个数值。

需要说明的是,服务器在对比第一页面的dom节点树的节点和参考页面的dom节点树的节点的数据长度的同时,还可以将节点的层级作为确定公共节点的参考因素之一。本领域技术人员可以理解,实际应用中,可以将节点的其他标记作为确定公共节点的参考因素。

步骤606:将公共节点作为第一页面与参考页面的公共组件。

以下结合实际情况,对服务器确定公共组件的方法进行举例说明。

假设,服务器确定公共组件的过程的示意图如图7所示。其中,节点树1表示第一页面的dom节点树,节点树2表示参考页面的dom节点树。服务器根据各个节点的数据长度,将每个节点放置在节点桶中。其中,第一个节点桶(bt1)用于放置数据长度为3000到3999的节点,第二个节点桶(bt2)用于放置数据长度为4000到4999的节点,第三节点桶(bt3)用于放置数据长度为5000到5999的节点,第四节点桶(bt4)用于放置数据长度为6000到6999的节点,第五节点桶(bt5)用于放置数据长度为7000到7999的节点。将第一页面的dom节点树的节点和参考页面的dom节点树的节点分别放置在5个节点桶内以后,服务器可以执行将未放置节点的节点桶删除的步骤、将放置的节点的数量较少的节点桶中的节点重新放置在同一节点桶中的步骤,以及将同一节点桶中的节点按照数据长度进行排序的步骤。当服务器执行上述所有步骤时,可以得到如图7所示的排序桶。在得到排序桶之后,服务器将同一个排序桶中节点进行比较,例如,将节点b2分别与节点b1、节点a2和节点a1进行比较,发现节点b2与节点a2的数据长度相同,故,节点b2是第一页面和参考页面的公共节点,节点b2是第一页面和参考页面的公共节点。

需要说明的是,上述例子的描述过程中,为阐述清楚,在两个节点的数据长度相同时,将两个节点中的一个节点作为公共节点,实际应用中,可以在两个节点的数据长度的差值小于预设值时,即可将两个节点中的一个节点作为公共节点。其中,预设值可以根据需要设置。

需要说明的是,上述例子中提及的将未放置节点的节点桶删除的步骤、将放置的节点的数量较少的节点桶中的节点重新放置在同一节点桶中的步骤,以及将同一节点桶中的节点按照数据长度进行排序的步骤,服务器可以有选择地执行上述三个步骤,或者上述三个步骤的任意组合。

值得一提的是,将第一页面的dom节点树的节点和参考页面的dom节点树的节点分为n个对比集合,可以避免服务器将数据长度很大的两个节点进行比较,减少了比较次数,避免浪费计算资源。

需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。

与现有技术相比,本实施方式中提供的页面的公共组件的确定方法,服务器先将第一页面的dom节点树中的节点和参考页面的dom节点树中的节点分为n个对比集合,再对每个对比集合中的节点进行比较,避免了服务器将数据长度很大的两个节点进行比较,减少了比较次数,从而避免浪费计算资源。除此之外,服务器将第一页面与参考页面进行比较,能够确定第一页面和参考页面的公共组件,无需人工询问,也无需手工配置,避免了手工配置公共组件的可行性差的问题。

上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。

本发明的第三实施方式涉及一种页面的公共组件的确定装置,如图8所示,包括:接收模块801、第一确定模块802和第二确定模块803,其中,接收模块801、第一确定模块802和第二确定模块803耦合,以执行上述实施方式提及的页面的公共组件的确定方法。

具体地说,接收模块801用于接收第一页面。第一确定模块802用于确定第一页面的信息,以及与第一页面的标识符对应的参考页面的信息。第二确定模块803用于根据第一页面的信息和参考页面的信息,确定第一页面与参考页面的公共组件。

不难发现,本实施方式为与第一实施方式相对应的装置实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。

值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。

本发明的第四实施方式涉及一种服务器,如图9所示,包括:至少一个处理器901;以及,与至少一个处理器901通信连接的存储器902;以及,其中,存储器902存储有可被至少一个处理器901执行的指令,指令被至少一个处理器901执行,以使至少一个处理器901能够执行上述实施方式提及的页面的公共组件的确定方法。

该服务器包括:一个或多个处理器901以及存储器902,图9中以一个处理器901为例。处理器901、存储器902可以通过总线或者其他方式连接,图9中以通过总线连接为例。存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中参考页面的信息就存储于存储器902中。处理器901通过运行存储在存储器902中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述页面的公共组件的确定方法。

存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器902可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

一个或者多个模块存储在存储器902中,当被一个或者多个处理器901执行时,执行上述任意方法实施方式中的页面的公共组件的确定方法。

上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。

本发明的第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

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