资源描述文件的处理、页面资源的获取方法及设备与流程

文档序号:17586012发布日期:2019-05-03 21:19阅读:260来源:国知局
资源描述文件的处理、页面资源的获取方法及设备与流程

本发明涉及互联网技术领域,特别涉及一种资源描述文件的处理、页面资源的获取方法及设备。



背景技术:

在网站页面中,通常会包含各种资源,这些资源例如可以包括文档、脚本、页面样式和图片等。客户端在请求加载某个页面时,通常可以向服务器发送页面访问请求,然后服务器可以针对该页面访问请求,给客户端反馈一个资源描述文件,该资源描述文件中可以包括页面中各个资源的链接。这样,客户端根据该资源描述文件中的各个链接,可以获取到对应的资源。

为了提高页面的加载速度,可以利用cdn(contentdeliverynetwork,内容分发网络)对客户端的页面访问请求进行加速。然而现有的加速模式存在一个问题:只能针对页面的内部链接进行加速,无法针对外部链接进行加速。原因在于,cdn通常是通过修改域名的dns指向来为客户端提供加速服务。具体地,cdn通过将页面的dns指向修改到cdn的边缘节点,从而可以让客户端就近访问对应的资源。然而对于外部链接而言,cdn无法修改外部链接的dns指向,从而导致外部链接无法通过cdn进行加速。而客户端在解析资源描述文件的过程中,很可能会引入新的资源链接,而这部分资源链接中可能包含外部链接。由于外部链接无法通过cdn加速,会导致整体的页面加载速度较慢。



技术实现要素:

本申请的目的在于提供一种资源描述文件的处理、页面资源的获取方法及设备,能够提高页面的加载速度。

为实现上述目的,本申请一方面提供一种资源描述文件的处理方法,所述方法应用于客户端中,所述方法包括:向节点服务器发送指向目标页面的访问请求,并接收所述节点服务器反馈的所述目标页面的资源描述文件,所述资源描述文件中包括由所述节点服务器插入的监测脚本;所述监测脚本在所述客户端中执行时,监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接;若包含,将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接;将改写后的资源链接写入所述资源描述文件中,并根据所述资源描述文件获取所述目标页面的页面资源。

为实现上述目的,本申请另一方面还提供一种客户端,所述客户端包括:资源描述文件获取单元,用于向节点服务器发送指向目标页面的访问请求,并接收所述节点服务器反馈的所述目标页面的资源描述文件,所述资源描述文件中包括由所述节点服务器插入的监测脚本;链接改写单元,用于在所述监测脚本在所述客户端中执行时,监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接;若包含,将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接;写入单元,用于将改写后的资源链接写入所述资源描述文件中,并根据所述资源描述文件获取所述目标页面的页面资源。

为实现上述目的,本申请另一方面还提供一种客户端,所述客户端包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的资源描述文件的处理方法。

为实现上述目的,本申请另一方面还提供一种页面资源的获取方法,所述方法包括:接收客户端发来的目标页面的资源获取请求;判断所述资源获取请求中是否包含符合链接改写规则的目标链接;若包含,从所述目标链接中提取出页面地址信息,并将所述页面地址信息解析为对应的外部链接;获取解析得到的所述外部链接对应的页面资源,并将所述页面资源反馈给所述客户端。

为实现上述目的,本申请另一方面还提供一种节点服务器,所述节点服务器包括:资源获取请求接收单元,用于接收客户端发来的指向目标页面的资源获取请求;链接判断单元,用于判断所述资源获取请求中是否包含符合链接改写规则的目标链接;页面地址信息解析单元,用于若包含,从所述目标链接中提取出页面地址信息,并将所述页面地址信息解析为对应的外部链接;资源反馈单元,用于获取解析得到的所述外部链接对应的页面资源,并将所述页面资源反馈给所述客户端。

为实现上述目的,本申请另一方面还提供一种节点服务器,所述节点服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的页面资源的获取方法。

由上可见,本申请提供的技术方案,客户端在向节点服务器发送指向目标页面的访问请求后,可以接收节点服务器反馈的所述目标页面的资源描述文件。为了判断客户端在解析该资源描述文件的过程中是否引入了外部链接,节点服务器可以在反馈的资源描述文件中插入监测脚本。客户端在解析该资源描述文件时,可以执行该监测脚本。该监测脚本执行时,可以监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接。若包含外部链接,该监测脚本可以将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接。这样,如果客户端在解析资源描述文件的过程中产生外部链接,这些外部链接均可以被改写为内部链接。这些改写后的内部链接可以连同实际的内部链接一同被写入资源描述文件中。

后续,客户端可以逐一针对资源描述文件中的各条链接,发起资源获取请求。由于改写后的资源描述文件中的链接均是内部链接的形式,因此这些资源获取请求均可以被节点服务器接收。节点服务器可以对接收到的资源获取请求中包含的链接进行识别,从而确定出携带指定资源路径的目标链接,该指定资源路径可以表示所述目标链接原本并非是内部链接,而是通过外部链接改写得到的。这样,针对所述目标链接,节点服务器可以解析出实际的外部链接,然后根据解析出的外部链接获取对应的资源,并将资源反馈给客户端。由此可见,本申请提供的技术方案,通过对外部链接进行改写的方式,能够保证节点服务器后续接收到的资源获取请求中,链接都是内部链接的形式,从而能够保证节点服务器可以对各个链接都进行加速。然后,节点服务器可以通过识别指定资源路径,从而可以将改写得到的内部链接还原为外部链接,并获取外部链接对应的资源。这样,无论是内部链接还是外部链接,均可以由cdn的节点服务器进行加速,从而能够提高页面的整体加载速度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施方式中资源描述文件的处理方法的步骤图;

图2是本发明实施方式中资源描述文件的处理方法的流程图;

图3是本发明实施方式中的客户端的功能模块示意图;

图4是本发明实施方式中的客户端的结构示意图;

图5是本发明实施方式中页面资源的获取方法的步骤示意图;

图6是本发明实施方式中页面资源的获取方法的交互示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本申请提供一种资源描述文件的处理方法,所述方法可以应用于当前的cdn架构中。在所述cdn架构中,客户端与源站服务器之间可以通过cdn网络进行连接。其中,所述客户端可以是用户使用的终端设备,也可以是终端设备中运行的软件。例如,所述客户端可以是终端设备中的浏览器。所述源站服务器可以是存储网站页面中各项资源的业务服务器。所述cdn网络中可以包括各个节点服务器,该节点服务器可以接收到客户端发来的页面访问请求,并对页面访问请求进行处理。

具体地,请参阅图1和图2,所述资源描述文件的处理方法的执行主体可以是上述的客户端中,所述资源描述文件的处理方法可以包括以下多个步骤。

s11:向节点服务器发送指向目标页面的访问请求,并接收所述节点服务器反馈的所述目标页面的资源描述文件,所述资源描述文件中包括由所述节点服务器插入的监测脚本。

在本实施方式中,当用户想要通过客户端访问目标页面时,客户端可以发起指向所述目标页面的访问请求。其中,所述访问请求中可以包含所述目标页面的域名。该访问请求可以被就近的节点服务器接收,然后,节点服务器可以根据该访问请求中携带的域名,将所述访问请求转发至该域名对应的源站服务器处。

在本实施方式中,源站服务器接收到所述访问请求后,可以识别其中包含的域名,并可以查询到该域名对应的资源描述文件。该资源描述文件可以是html文档,在该html文档中,可以包含目标页面中各项资源的资源链接。

在本实施方式中,节点服务器在接收到源站服务器反馈的资源描述文件之后,为了判断客户端在解析该资源描述文件的过程中是否引入新的资源链接,可以在该资源描述文件中插入预先编辑的监测脚本。具体地,所述监测脚本可以插入所述资源描述文件的头部(head)标签中,并且可以位于该头部标签的第一个子元素之前。这样,当客户端开始解析所述资源描述文件时,可以优先解析该监测脚本,从而保证监测脚本能够第一时间被执行。

在本实施方式中,在向资源描述文件中插入所述监测脚本后,节点服务器便可以将携带所述监测脚本的资源描述文件反馈给客户端。

s13:所述监测脚本在所述客户端中执行时,监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接;若包含,将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接。

在本实施方式中,客户端在解析所述资源描述文件时,由于监测脚本位于头部文件的第一个子元素之前,因此可以优先执行该监测脚本。当该监测脚本被执行后,可以监听所述客户端在解析所述资源描述文件的过程中产生的资源链接。在实际应用中,客户端可以具备多种方式来引入新的资源链接。例如,可以通过浏览器中原生的数据写入函数document.write以及document.writeln来引入新的资源链接。又例如,在另一个应用示例中,还可以通过浏览器中原生的标签创建函数document.createelement来创建新的标签,并通过在新的标签下创建链接的形式来引入新的资源链接。针对不同的资源链接的引入方式,监测脚本可以采用对应的监听策略进行监听。

具体地,针对数据写入函数的应用示例,在所述客户端解析所述资源描述文件的过程中,所述客户端可以调用上述原生的数据写入函数,该数据写入函数的参数中便可以携带新的资源链接。在这种情况下,监测脚本可以预先定义参数拦截函数docwrite,并新建数据缓冲区。然后,在所述客户端解析所述资源描述文件的过程中,若所述客户端可以调用上述原生的数据写入函数,则表示此时很有可能会通过数据写入函数的参数来引入新的资源链接。因此,监测脚本可以通过所述参数拦截函数获取所述数据写入函数中的参数,并将获取的所述参数写入所述数据缓冲区中。然后,监测脚本可以针对数据缓冲区内的参数进行识别,从而得到其中包含的资源链接。具体地,监测脚本可以在所述数据缓冲区内的所述参数中识别链接属性标识,所述链接属性标识例如可以是src或者href。在识别出参数中包含的链接属性标识后,监测脚本可以将所述链接属性标识表征的链接作为所述客户端在解析所述资源描述文件的过程中产生的资源链接。例如,监测脚本在数据缓冲区中识别出src属性标识,然后该src属性标识表征的链接如下所示:

<scriptsrc="https://www.123.com/1.js"></script>

那么,可以将https://www.123.com/1.js作为新引入的资源链接。

在该应用示例中,在从数据缓冲区的参数中识别出新引入的资源链接后,监测脚本可以进一步判断所述资源链接中是否存在外部链接。具体地,内部链接和外部链接可以通过域名进行区分。若当前的资源链接内未包含域名,那么表示该链接为缺省域名的链接,这种链接通常都是内部链接。例如,scriptsrc=“/js/jquery.js”这样的链接必然是内部链接。若当前的资源链接内包含域名,可以进一步判断所述资源链接中的域名是否与所述目标页面的域名一致。若一致,则可以判定所述资源链接为内部链接,若不一致,则可以判定所述资源链接为外部链接。

举例来说,假设目标页面的域名为www.abc.com,而识别出的资源链接为https://www.123.com/1.js和https://www.abc.com/1.js。这样,通过上述域名的判断方法,可以确定,https://www.123.com/1.js为外部链接,而https://www.abc.com/1.js为内部链接。

在本实施方式中,考虑到节点服务器后续无法直接对外部链接进行加速,因此监测脚本在识别出外部链接后,可以将该外部链接改写为内部链接的形式。具体地,由于内部链接中包含的域名需要与目标页面的域名保持一致,因此改写后的内部域名中也需要包含目标页面的域名。此外,为了后续区分真实的内部链接和改写的内部链接,需要在改写的内部链接中设置一个指定资源路径,该指定资源路径的作用便是表征当前的内部链接实际上是由外部链接改写而来的。在实际应用中,该指定资源路径可以是节点服务器在监测脚本中预先配置的,这样,当监测脚本识别出外部链接后,可以通过该指定资源路径将外部链接改写为内部链接的形式。由上可见,在改写后的内部链接中,需要包含目标页面的域名、所述指定资源路径以及所述外部链接。

在实际应用中,所述指定资源路径可以表示为/modify。此外,考虑到外部链接可能是以不太规范的形式编写的,在外部链接中很可能会携带空格或者特殊字符,而传递给节点服务器的字符串数据中,通常是不允许携带空格和特殊字符的,因此在改写外部链接时,需要按照预设编解码规则将所述外部链接转换为对应的字符串数据,从而消除外部链接中的空格和特殊字符,以使得转换后的字符串数据满足url(uniformresourcelocator,统一资源定位符)的规范要求。在实际应用中,所述预设编解码规则可以有多种实现形式,例如,所述预设编解码规则可以是urlencode编解码规则,也可以是base64编解码规则,本申请对此并不做限定。

这样,在获取所述目标页面的域名,并按照预设编解码规则将所述外部链接转换为字符串数据后,可以通过预设的所述指定资源路径对所述目标页面的域名和所述字符串数据进行整合,并将整合得到的结果作为改写后的内部链接。在实际应用中,在所述内部链接中,所述目标页面的域名、所述指定资源路径以及所述字符串数据可以按照预设规则进行排序。例如,这三部分的信息可以从前到后依次排列,从而构成改写后的内部链接。

在本实施方式中,为了将上述的字符串数据与其他部分的数据进行区分,在改写后的内部链接中还可以包括定位符标识,其中,所述定位符标识可以位于所述指定资源路径之后,并且所述定位符标识的赋值为所述字符串数据。举例来说,所述定位符标识可以是“?url”,在对“?url”进行赋值时,可以通过“?url=xxxx”的形式,其中xxxx便可以是赋值给“?url”的字符串数据。这样,在一个应用实例中,针对https://www.123.com/1.js这样的外部链接,通过上述的方式,可以改写为内部链接:

https://www.abc.com/modify?url=https%3a%2f%2fwww.123.com%2f1.js

上述的内部链接中,https://www.abc.com为目标页面的域名,/modify为指定资源路径,?url为定位符标识,https%3a%2f%2fwww.123.com%2f1.js为通过urlencode方式编码得到的字符串数据。

在本实施方式中,按照上述的方式,可以针对识别出的外部链接依次进行改写,从而将客户端新引入的各个外部链接都通过内部链接的形式进行表示。而针对客户端新引入的内部链接,则可以不进行上述的改写处理。

在本实施方式中,在将外部链接改写为内部链接后,可以在所述数据缓冲区内,利用改写后的所述内部链接替换所述参数中对应的所述外部链接,从而得到数据缓冲区内的改写后的参数。这样可以保证改写后的参数中,资源链接的表现形式都是内部链接的形式。

针对标签创建函数的应用示例,浏览器原生的document.createelement函数可以创建一个新的element(标签),并可以通过element.src的指令引入新的资源链接。在这种情况下,不同的标签可能会引入不同的资源链接。例如,对于脚本标签htmlscriptelement而言,其可能会引入脚本链接;对于图片标签htmlimageelement而言,其可能会引入图片链接;对于样式标签htmllinkelement而言,其可能会引入样式链接。因此,在本实施方式中,需要对不同类型的标签进行监听,从而判断这些不同类型的标签是否在后续引入了新的资源链接。鉴于此,监测脚本可以确定待监听的指定类型标签和所述指定类型标签下待监听的属性标识。其中,所述指定类型标签可以是以上例举的各个标签,当然,在实际应用中可以包含更少或者更多类型的标签,本申请对此并不做限定。此外,这些指定类型标签下的属性标识较多,监测脚本无需对每个属性标识都进行监听,而是只需要监听可能会引入资源链接的属性标识。因此,上述的待监听的属性标识便可以是src属性和/或href属性,客户端可以通过element.src或者element.href来引入新的资源链接。在本本实施方式中,监测脚本还可以定义数据获取方式setter,该数据获取方式可以拦截上述待监听的属性标识的属性值,从而使得监测脚本能够识别拦截得到的属性值中是否存在外部链接。

在本实施方式中,在所述客户端解析所述资源描述文件的过程中,若监测脚本监听到所述指定类型标签下的所述属性标识设置事件时,则表明客户端当前会引入新的资源链接。此时,可以通过所述数据获取方式setter获取本次设置的事件中的属性值,那么所述属性值表征的链接便可以作为所述客户端在解析所述资源描述文件的过程中产生的资源链接。

同样地,在获取到客户端引入的资源链接后,可以按照上述的方式判断该资源链接中是否存在外部链接,并可以按照上述的方式将外部链接改写为内部链接的形式。对于内部链接而言,则可以不进行上述的改写过程。在将外部链接改写为内部链接的形式后,监测脚本可以在所述数据获取方式获取的所述属性值中,利用改写后的所述内部链接替换对应的所述外部链接,从而得到改写后的属性值。然后可以通过所述数据获取方式将所述改写后的属性值返回给所述本次设置的事件,从而使得通过element.src或者element.href的方式引入的新的资源链接都是内部链接的形式。

s15:将改写后的资源链接写入所述资源描述文件中,并根据所述资源描述文件获取所述目标页面的页面资源。

在本实施方式中,在将外部链接改写为内部链接,并利用改写后的内部链接替换对应的外部链接后,可以得到改写后的资源链接。所述改写后的资源链接中,各个链接都是内部链接的形式。这样,可以将改写后的资源链接写入所述资源描述文件中,后续客户端可以针对资源描述文件中的链接构建资源获取请求,从而获取对应的页面资源。

在实际应用中,针对上述数据写入函数的应用示例而言,在得到改写后的参数后,监测脚本可以调用所述原生的数据写入函数,并通过所述原生的数据写入函数,将所述数据缓冲区内所述改写后的参数写入所述资源描述文件中。而针对上述标签创建函数的应用示例而言,在通过所述数据获取方式将所述改写后的属性值返回给所述本次设置的事件后,可以通过所述本次设置的事件将所述改写后的属性值写入所述资源描述文件中。具体地,可以通过appendchild的方法将改写后的属性值写入所述资源描述文件中。

当然,在实际应用中,上述关于外部链接的识别和改写的功能,可以在节点服务器中通过配置功能开关来设定是否开启。如图2所示,若节点服务器没有开启外部链接的识别和改写功能,那么在接收到源站服务器反馈的资源描述文件后,可以不插入监测脚本,而是直接将资源描述文件提供给客户端。若节点服务器开启了外部链接的识别和改写功能,才可以在资源描述文件中插入监测脚本。

请参阅图3,本申请还提供一种客户端,所述客户端包括:

资源描述文件获取单元,用于向节点服务器发送指向目标页面的访问请求,并接收所述节点服务器反馈的所述目标页面的资源描述文件,所述资源描述文件中包括由所述节点服务器插入的监测脚本;

链接改写单元,用于在所述监测脚本在所述客户端中执行时,监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接;若包含,将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接;

写入单元,用于将改写后的资源链接写入所述资源描述文件中,并根据所述资源描述文件获取所述目标页面的页面资源。

在一个实施方式中,所述链接改写单元包括:

初始化模块,用于定义参数拦截函数,并新建数据缓冲区;

参数拦截模块,用于在所述客户端解析所述资源描述文件的过程中,若所述客户端调用原生的数据写入函数,通过所述参数拦截函数获取所述数据写入函数中的参数,并将获取的所述参数写入所述数据缓冲区中;

标识识别模块,用于在所述数据缓冲区内的所述参数中识别链接属性标识,并将所述链接属性标识表征的链接作为所述客户端在解析所述资源描述文件的过程中产生的资源链接。

在一个实施方式中,所述链接改写单元包括:

监听信息设置模块,用于确定待监听的指定类型标签和所述指定类型标签下待监听的属性标识,并定义数据获取方式;

事件监听模块,用于在所述客户端解析所述资源描述文件的过程中,若监听到所述指定类型标签下的所述属性标识设置事件时,通过所述数据获取方式获取本次设置的事件中的属性值;

链接确定模块,用于将获取的所述属性值表征的链接作为所述客户端在解析所述资源描述文件的过程中产生的资源链接。

在一个实施方式中,所述链接改写单元还包括:

属性值返回模块,用于在所述数据获取方式获取的所述属性值中,利用改写后的所述内部链接替换对应的所述外部链接,得到改写后的属性值,并通过所述数据获取方式将所述改写后的属性值返回给所述本次设置的事件;

相应地,所述写入单元还用于通过所述本次设置的事件将所述改写后的属性值写入所述资源描述文件中。

请参阅图4,本申请还提供一种客户端,所述客户端可以包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的资源描述文件的处理方法。具体地,如图4所示,在硬件层面,该客户端可以包括处理器、内部总线和存储器。所述存储器可以包括内存以及非易失性存储器。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述识别装置的结构造成限定。例如,所述客户端还可包括比图4中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如gpu(graphicsprocessingunit,图像处理器),或者具有与图4所示不同的配置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等。

在本实施方式中,所述的处理器可以包括中央处理器(cpu)或图形处理器(gpu),当然也可以包括其他的具有逻辑处理能力的单片机、逻辑门电路、集成电路等,或其适当组合。本实施方式所述的存储器可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如ram、fifo等;在系统中,具有实物形式的存储设备也可以叫存储器等。实现的时候,该存储器也可以采用云存储器的方式实现,具体实现方式,本说明书不错限定。

需要说明的是,本实施方式中的客户端,具体的实现方式可以参照上述的资源描述文件的处理方法实施方式的描述,在此不作一一赘述。

请参阅图5和图6,本申请还提供一种页面资源的获取方法,所述方法可以应用于上述的节点服务器中,所述方法可以包括以下步骤。

s21:接收客户端发来的目标页面的资源获取请求。

在本实施方式中,客户端可以识别资源描述文件中包含的各个资源链接,然后针对各个资源链接逐一发起资源获取请求。当然,在实际应用中,为了减少请求的发起次数,有时候也可以在同一个资源获取请求中携带多个资源链接,本申请对此并不做限定。

s23:判断所述资源获取请求中是否包含符合链接改写规则的目标链接。

在本实施方式中,所述资源描述文件中的资源链接,可以包含真实的内部链接,也可以包含按照步骤s11至s15中描述的方式进行改写的内部链接。这样,客户端发起的资源获取请求中,可以携带真实的内部链接,也可以携带由外部链接改写得到的内部链接。针对不同类型的链接,需要按照不同的方式进行处理。具体地,针对真实的内部链接,节点服务器可以直接获取该真实的内部链接对应的页面资源,并将获取的所述页面资源反馈给所述客户端。而针对由外部链接改写得到的内部链接,则需要提取出实际的外部链接,并获取该外部链接对应的资源。

因此,在本实施方式中,首先需要判断客户端发来的资源获取请求中包含的是哪种类型的内部链接。具体地,可以判断所述资源获取请求中是否包含符合链接改写规则的目标链接,所述链接改写规则可以通过上述的指定资源路径来表示。具体地,可以判断所述资源获取请求中是否包含携带指定资源路径的链接,若包含,则可以将所述携带指定资源路径的链接作为所述符合链接改写规则的目标链接;若不包含,则可以判定所述资源获取请求中不包含符合链接改写规则的目标链接。按照步骤13中描述的改写规则,在对外部链接进行改写后,得到的内部链接中会包含所述指定资源路径,那么如果节点服务器从资源获取请求中识别出该指定资源路径,则表示携带该指定资源路径的链接为外部链接改写得到的内部链接,而如果资源获取请求中不存在所述指定资源路径,则表示该资源获取请求中包含的链接为真实的内部链接。

s25:若包含,从所述目标链接中提取出页面地址信息,并将所述页面地址信息解析为对应的外部链接。

在本实施方式中,若资源获取请求中包含携带所述指定资源路径的目标链接,那么需要将该目标链接还原为外部链接。具体地,首先可以在所述目标链接中识别出定位符标识,并识别所述定位符标识表征的字符串数据,从而可以将该字符串数据提取出来,作为所述目标链接中包含的页面地址信息。举例来说,携带所述指定资源路径的目标链接为:

https://www.abc.com/modify?url=https%3a%2f%2fwww.123.com%2f1.js,那么识别出该目标链接中的定位符标识“?url”,从而可以将“?url”后面的赋值https%3a%2f%2fwww.123.com%2f1.js作为提取出的页面地址信息。

在本实施方式中,由于在改写外部链接时,所述页面地址信息是由所述外部链接通过预设编解码规则编码得到的。那么在提取出所述页面地址信息后,可以依然按照所述预设编解码规则将所述页面地址信息解码为对应的所述外部链接。例如,可以通过urlencode的方式,将上述的页面地址信息解码为外部链接https://www.123.com/1.js。

s27:获取解析得到的所述外部链接对应的页面资源,并将所述页面资源反馈给所述客户端。

在本实施方式中,在解析得到所述外部链接后,便可以获取解析得到的所述外部链接对应的页面资源,并将所述页面资源反馈给所述客户端。

此外,若所述资源获取请求中不包含符合链接改写规则的目标链接,那么表示资源获取请求中包含的都是真实的内部链接,此时可以直接获取所述资源获取请求中包含的链接对应的页面资源,并将获取的所述页面资源反馈给所述客户端。

需要说明的是,所述节点服务器中可以具备资源缓冲功能。在获取到各项页面资源后,可以将这些页面资源与各自的资源链接进行关联存储,同时还可以将目标页面中的各项页面资源与目标页面的域名进行关联存储。这样,当后续还有客户端发来指向所述目标页面的访问请求后,可以首先在缓存中查看是否存在对应的已经缓存的数据。如果存在,可以直接向客户端反馈已经缓存的数据。同理,在接收到客户端发来的资源获取请求后,可以在缓存中查看是否已经存在该资源获取请求对应的已缓存的数据,如果存在,可以直接反馈已经缓存的数据。如果不存在已缓存的数据,则可以按照上述的方式获取对应的页面资源。

本申请还提供一种节点服务器,所述节点服务器包括:

资源获取请求接收单元,用于接收客户端发来的指向目标页面的资源获取请求;

链接判断单元,用于判断所述资源获取请求中是否包含符合链接改写规则的目标链接;

页面地址信息解析单元,用于若包含,从所述目标链接中提取出页面地址信息,并将所述页面地址信息解析为对应的外部链接;

资源反馈单元,用于获取解析得到的所述外部链接对应的页面资源,并将所述页面资源反馈给所述客户端。

在一个实施方式中,所述链接判断单元包括:

指定资源路径判断模块,用于判断所述资源获取请求中是否包含携带指定资源路径的链接,若包含,将所述携带指定资源路径的链接作为所述符合链接改写规则的目标链接;若不包含,判定所述资源获取请求中不包含符合链接改写规则的目标链接。

在一个实施方式中,所述页面地址信息由所述外部链接通过预设编解码规则编码得到;相应地,所述页面地址信息解析单元还用于按照所述预设编解码规则将所述页面地址信息解码为对应的所述外部链接。

本申请还提供一种节点服务器所述节点服务器包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,可以实现上述的页面资源的获取方法。

由上可见,本申请提供的技术方案,客户端在向节点服务器发送指向目标页面的访问请求后,可以接收节点服务器反馈的所述目标页面的资源描述文件。为了判断客户端在解析该资源描述文件的过程中是否引入了外部链接,节点服务器可以在反馈的资源描述文件中插入监测脚本。客户端在解析该资源描述文件时,可以执行该监测脚本。该监测脚本执行时,可以监听所述客户端在解析所述资源描述文件的过程中产生的资源链接,并判断所述资源链接中是否包含外部链接。若包含外部链接,该监测脚本可以将所述外部链接改写为内部链接,并利用改写后的所述内部链接替换所述资源链接中对应的所述外部链接。这样,如果客户端在解析资源描述文件的过程中产生外部链接,这些外部链接均可以被改写为内部链接。这些改写后的内部链接可以连同实际的内部链接一同被写入资源描述文件中。

后续,客户端可以逐一针对资源描述文件中的各条链接,发起资源获取请求。由于改写后的资源描述文件中的链接均是内部链接的形式,因此这些资源获取请求均可以被节点服务器接收。节点服务器可以对接收到的资源获取请求中包含的链接进行识别,从而确定出携带指定资源路径的目标链接,该指定资源路径可以表示所述目标链接原本并非是内部链接,而是通过外部链接改写得到的。这样,针对所述目标链接,节点服务器可以解析出实际的外部链接,然后根据解析出的外部链接获取对应的资源,并将资源反馈给客户端。由此可见,本申请提供的技术方案,通过对外部链接进行改写的方式,能够保证节点服务器后续接收到的资源获取请求中,链接都是内部链接的形式,从而能够保证节点服务器可以对各个链接都进行加速。然后,节点服务器可以通过识别指定资源路径,从而可以将改写得到的内部链接还原为外部链接,并获取外部链接对应的资源。这样,无论是内部链接还是外部链接,均可以由cdn的节点服务器进行加速,从而能够提高页面的整体加载速度。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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