CDN服务器及其缓存数据的方法与流程

文档序号:13108767
技术领域本发明实施例涉及网络通信领域,尤其涉及一种CDN服务器及其缓存数据的方法。

背景技术:
内容分发网络(ContentDeliveryNetwork,CDN)依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。CDN网络中的一个节点即为一个CDN服务器,这些CDN服务器分布到用户访问相对集中的地区或网络中。在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的CDN服务器上,在CDN服务器缓存有用户访问的数据时,该CDN服务器可以直接响应用户请求,在CDN服务器未缓存有用户访问的数据时,该CDN服务器才向CDN源站请求数据,降低了CDN源站的负载,所述CDN源站是指发布内容的原始站点。现有技术中,CDN服务器接收到超文本传输协议(HyperTextTransferProtocol,HTTP)请求消息时,若该HTTP请求消息中包括用于指示读取范围的range信息,则该CDN服务器从CDN源站中获取到该range信息指示的目标数据后,不会对该目标数据进行缓存。也就是说,CDN服务器每次接收到包括range信息的HTTP请求消息后,都会从CDN源站中请求数据,这样,在多个HTTP请求消息请求的数据相同的情况下,该CDN服务器重复向CDN源站请求相同的数据,浪费了CDN源站的处理资源。

技术实现要素:
本发明实施例提供一种CDN服务器及其缓存数据的方法,用以解决现有CDN服务器对HTTP请求消息的处理浪费了CDN源站的处理资源的缺陷,实现CDN服务器对CDN源站数据的缓存。本发明实施例提供一种CDN服务器缓存数据的方法,包括:CDN服务器接收超文本传输协议HTTP请求消息,所述HTTP请求消息包括请求范围range信息;所述HTTP请求消息用于请求第一文件中的所述range信息指示的目标数据;所述CDN服务器删除所述HTTP请求消息中的所述range信息,并将删除后的所述HTTP请求消息发送至CDN源站;所述CDN源站是指发布内容的原始站点;所述CDN服务器接收所述CDN源站发送的用于响应所述HTTP请求消息的HTTP响应消息;所述HTTP响应消息包括所述第一文件的完整数据;所述CDN服务器缓存所述第一文件的完整数据。本发明实施例提供一种CDN服务器,包括:第一接收单元,用于接收超文本传输协议HTTP请求消息,所述HTTP请求消息包括请求范围range信息;所述HTTP请求消息用于请求第一文件中的所述range信息指示的目标数据;删除单元,用于删除所述HTTP请求消息中的所述range信息,并将删除后的所述HTTP请求消息发送至CDN源站;所述CDN源站是指发布内容的原始站点;第二接收单元,用于接收所述CDN源站发送的用于响应所述HTTP请求消息的HTTP响应消息;所述HTTP响应消息包括所述第一文件的完整数据;缓存单元,用于缓存所述第一文件的完整数据。本发明实施例提供的CDN服务器及其缓存数据的方法,在CDN服务器接收到包括range信息的HTTP请求消息时,所述CDN服务器能够删除所述HTTP请求消息中的range信息,并将删除后的所述HTTP请求消息发送至CDN源站,所述CDN源站在接收到不包括range信息的HTTP请求消息的情况下,将所述HTTP请求消息请求的第一文件的完整数据发送至所述CDN服务器,所述CDN服务器在接收到所述CDN源站发送的包括所述第一文件的完整数据的HTTP响应消息后,对所述第一文件的完整数据进行缓存,实现了CDN服务器对CDN源站发送的数据的缓存,这样,由于CDN服务器缓存有第一文件的完整数据,因此,所述CDN服务器后续接收到的所有请求的所述第一文件的数据的HTTP请求消息,所述CDN服务器均可以从自身缓存中获取数据进行响应,无需再从所述CDN源站请求所述第一文件的数据,从而避免了对所述CDN源站的处理资源浪费,进而减轻了CDN源站的负载。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种CDN服务器缓存数据的方法流程示意图;图2为本发明实施例提供的另一种CDN服务器缓存数据的方法流程示意图;图3为本发明实施例提供的一种CDN服务器的结构示意图;图4为本发明实施例提供的另一种CDN服务器的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了使本领域的技术人员更容易理解本发明实施例提供的技术方案,下面首先对本发明实施例涉及到的相关技术进行简单介绍。HTTP是一套计算机通过网络进行通信的规则,使用HTTP客户端通过发送HTTP请求消息能够向HTTP服务器请求信息和服务,所述HTTP客户端可以为Web浏览器,所述HTTP服务器可以为Web服务器。HTTP请求消息由三个部分组成:请求行(RequestLine)、消息头(MessageHeaders)和消息体(EntityBody),其中,消息头与消息体之间通过空行来分隔。具体地,请求行由三个标记组成:请求方法、统一资源标识符(UniformResourceIdentifier,URI)和HTTP版本,例如:GET\/news.aspHTTP\/1.1。以上代码中“GET”代表请求方法,“\/news.asp”表示URI,“HTTP\/1.1”代表协议版本。值得说明的是,URI完整地指定了要访问的HTTP服务器中的网络资源,通常只要给出相对于服务器的根目录的相对目录即可。消息头允许HTTP客户端向HTTP服务器传递关于请求或者关于客户端的附加信息。消息头包括Host头域,Referer头域等字段,其中,Host头域表示请求资源的主机和端口号,Referer头域允许客户端指定请求URI的源资源地址。值得说明的是,Range是在HTTP\/1.1里新增的一个头域,range头域允许客户端请求实体的一个或者多个子范围。消息体用于携带与请求相关联的数据,例如一些请求需要的参数等。由消息头中的内容长度Content-Type和内容类型Content-Length来指示。CDN服务器作为CDN源站(即HTTP服务器)的代理服务器,客户端发送的HTTP请求消息需先经过CDN服务器,由上述介绍可知,CDN服务器接收到HTTP请求消息后,根据该HTTP请求消息中的统一资源标识符以及range信息即可确定客户端请求的目标数据。但是,现有CDN服务器对于包括range信息的HTTP请求消息的处理,存在浪费CDN源站的处理资源的缺陷。本发明实施例提供一种CDN服务器缓存数据的方法,如图1所示,该方法包括:步骤100、CDN服务器接收HTTP请求消息,所述HTTP请求消息包括range信息,所述HTTP请求消息用于请求第一文件中的所述range信息指示的目标数据。值得说明的是,所述CDN服务器可以是接收到HTTP客户端发送的HTTP请求消息,该HTTP客户端可以是Web浏览器,也可以是具有浏览器功能的应用程序。具体地,该HTTP请求消息的请求行中包括所述第一文件在CDN源站中的统一资源标识符,该HTTP请求消息的消息头中包括用于指示所述第一文件中的部分数据的range信息,所述第一文件的部分数据即为该HTTP请求消息请求的目标数据。步骤101、所述CDN服务器删除所述HTTP请求消息中的所述range信息,并将删除后的所述HTTP请求消息发送至CDN源站。值得说明的是,所述CDN源站是指发布内容的原始站点,例如,Web服务器。步骤102、所述CDN服务器接收所述CDN源站发送的用于响应所述HTTP请求消息的HTTP响应消息,所述HTTP响应消息包括所述第一文件的完整数据。其中,所述CDN源站在接收到不包括range信息的HTTP请求消息后,可以按照现有的技术对该HTTP请求消息进行处理。步骤103、所述CDN服务器缓存所述第一文件的完整数据。值的说明的是,现有的技术方案中,CDN源站在接收到不包括range信息的HTTP请求消息后,根据该HTTP请求消息中的统一资源标识符,将包括对应该统一资源标识符的文件的完整数据以及响应码200发送至CDN服务器,现有的CDN服务器在确定HTTP响应消息中包括响应码200时,对接收到的数据进行缓存,若CDN源站接收到包括range信息的HTTP请求消息,则该CDN源站返回的HTTP响应消息中携带的响应码为206,现有的CDN服务器在确定HTTP响应消息中的响应码为206时,对接收到的数据不进行缓存。而在本发明实施例的一种可能的实现方式中,该CDN服务器接收到包括第一文件的完整数据的HTTP响应消息后,直接对该第一文件的完整数据进行缓存。在本发明实施例的另一种可能的实现方式中,该CDN服务器接收到包括第一文件的完整数据的HTTP响应消息后,根据响应码200缓存所述第一文件的完整数据。采用上述方法,在CDN服务器接收到包括range信息的HTTP请求消息时,所述CDN服务器能够删除所述HTTP请求消息中的range信息,并将删除后的所述HTTP请求消息发送至CDN源站,所述CDN源站在接收到不包括range信息的HTTP请求消息的情况下,将所述HTTP请求消息请求的第一文件的完整数据发送至所述CDN服务器,所述CDN服务器在接收到所述CDN源站发送的包括所述第一文件的完整数据的HTTP响应消息后,对所述第一文件的完整数据进行缓存,实现了CDN服务器对CDN源站发送的数据的缓存,这样,由于CDN服务器缓存有第一文件的完整数据,因此,所述CDN服务器后续接收到的所有请求的所述第一文件的数据的HTTP请求消息,所述CDN服务器均可以从自身缓存中获取数据进行响应,无需再从所述CDN源站请求所述第一文件的数据,从而避免了对所述CDN源站的处理资源浪费,进而减轻了CDN源站的负载。具体地,所述CDN服务器在删除所述HTTP请求消息中的所述range信息之前,还可以记录所述range信息,并且在接收到所述HTTP响应消息后,还可以根据所述range信息从所述第一文件的完整数据中确定所述目标数据,并根据所述目标数据响应所述HTTP请求消息。也就是说,在本发明实施例中,CDN服务器接收到客户端发送的HTTP请求消息后,为了确保CDN服务器能够将正确的目标数据返回至该客户端,该CDN服务器在删除range信息之前,可以记录该range信息,以便该CDN服务器在接收到CDN源站发送的文件的完整数据后,可以根据该range信息确定客户端请求的目标数据,并将该目标数据发送至该客户端,避免了客户端本次请求失败。上述只是举例说明,该CDN服务器也可以不记录该range信息,而是直接将该HTTP请求消息中的range信息删除,并向客户端返回请求失败消息,通知客户端重传该HTTP请求消息,该CDN服务器接收到重传该HTTP请求消息后,再从缓存中确定该目标数据返回至该客户端。本发明对此不做限定。进一步地,所述方法还包括:所述CDN服务器接收客户端发送的第二HTTP请求消息;所述第二HTTP请求消息包括第二range信息;所述CDN服务器根据所述第二range信息在所述CDN服务器缓存的所述第一文件的完整数据中确定第二目标数据;所述CDN服务器将所述第二目标数据发送至所述客户端。进一步地,所述方法还包括:所述CDN服务器接收客户端发送的第三HTTP请求消息;所述第三HTTP请求消息不包括range信息;所述CDN服务器将缓存的所述第一文件的完整数据发送至所述客户端。也就是说,该CDN服务器在缓存有第一文件的完整数据后,后续接收到的所有请求该第一文件的部分数据(即所述第二HTTP请求消息)或者请求该第一文件的完整数据(即所述第三HTTP请求消息),该CDN服务器均可以从自身的缓存中获取数据进行响应,无需再从所述CDN源站请求所述第一文件的数据,从而避免了对所述CDN源站的处理资源浪费。为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供的一种CDN服务器缓存数据的方法进行详细说明,如图2所示,该方法包括:步骤200、CDN服务器接收客户端发送的包括range信息的HTTP请求消息。示例地,当用户使用客户端在听一首歌的时候,如果听到中途网络断掉了,在此种情况下,客户端若记录了之前已经读取的文件范围,则在网络恢复之后,该客户端可以向CDN服务器发送包括Range信息的HTTP请求消息,该range信息用于指示剩余的文件范围。例如,用户听的音频文件总的数据大小为2MB(兆字节),剩余没听的范围是最后500个字节,则该HTTP请求消息中的range信息具体为:Range:bytes=-500。上述只是对客户端什么时候发送包括range信息的HTTP请求消息的举例说明,在具体应用时,客户端还可以在其他情况下发送包括range信息的HTTP请求消息,本发明对此不做限定,例如,多线程分段下载情况下,客户端可以对同一文件指定多个范围分别进行下载。示例地,客户端需要对文件的头500个字节,头500个字节之后的数据,最后500个字节分别进行下载,此时,该range信息具体为:Range:bytes=0-499;bytes=500-;bytes=-500。步骤201、该CDN服务器记录该HTTP请求消息中的range信息。步骤202、该CDN服务器删除该HTTP请求消息中的range信息。示例地,所述CDN服务器可以是使用nginx搭建的CDN服务器,也就是说,CDN服务器中实现代理功能的是nginx软件,这样,该CDN服务器在接收到HTTP请求消息后,可以执行步骤201和202之后,将删除range信息后的HTTP请求消息传送给该CDN服务器运行的nginx软件,这样,该nginx软件即可以按照现有处理不包括range信息的HTTP请求消息的流程执行下述步骤S203。步骤203、该CDN服务器将删除range信息后的HTTP请求消息发送至CDN源站。步骤204、该CDN源站根据该HTTP请求消息中的统一资源标识符确定第一文件。步骤205、该CDN源站将包括该第一文件的完整数据以及响应码200的HTTP响应消息发送至所述CDN服务器。步骤206、该CDN服务器接收该HTTP响应消息,并根据该响应码200缓存该第一文件的完整数据。步骤207、该CDN服务器根据记录的该range信息确定该第一文件中的目标数据。步骤208、该CDN服务器将该目标数据发送至该客户端。步骤209、该CDN服务器接收该客户端发送的用于访问该第一文件的另一HTTP请求消息。步骤210、该CDN服务器在缓存的第一文件中获取所述另一HTTP请求消息请求的目标数据,并将该目标数据发送至所述客户端。这样,该CDN服务器后续接收到的所有访问所述第一文件的HTTP请求消息,该CDN服务器均可以从自身缓存中获取数据进行响应,无需再从所述CDN源站请求所述第一文件的数据,从而避免了对所述CDN源站的处理资源浪费,进而减轻了CDN源站的负载。另外,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,例如,该CDN服务器也可以先根据range信息将目标数据发送至客户端,再缓存该第一文件的完整数据。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。本发明实施例还提供一种CDN服务器,用于实施上述方法实施例提供一种CDN服务器缓存数据的方法,如图3所示,该CDN服务器包括:第一接收单元30,用于接收超文本传输协议HTTP请求消息,所述HTTP请求消息包括请求范围range信息;所述HTTP请求消息用于请求第一文件中的所述range信息指示的目标数据;删除单元31,用于删除所述HTTP请求消息中的所述range信息,并将删除后的所述HTTP请求消息发送至CDN源站;所述CDN源站是指发布内容的原始站点;第二接收单元32,用于接收所述CDN源站发送的用于响应所述HTTP请求消息的HTTP响应消息;所述HTTP响应消息包括所述第一文件的完整数据;缓存单元33,用于缓存所述第一文件的完整数据。采用上述CDN服务器,该CDN服务器在接收到包括range信息的HTTP请求消息时,该CDN服务器能够删除该HTTP请求消息中的range信息,并将删除后的该HTTP请求消息发送至CDN源站,该CDN源站在接收到不包括range信息的HTTP请求消息的情况下,将该HTTP请求消息请求的第一文件的完整数据发送至该CDN服务器,该CDN服务器在接收到该CDN源站发送的包括该第一文件的完整数据的HTTP响应消息后,对该第一文件的完整数据进行缓存,实现了CDN服务器对CDN源站发送的数据的缓存,这样,由于CDN服务器缓存有第一文件的完整数据,因此,该CDN服务器后续接收到的所有请求的该第一文件的数据的HTTP请求消息,该CDN服务器均可以从自身缓存中获取数据进行响应,无需再从该CDN源站请求该第一文件的数据,从而避免了对该CDN源站的处理资源浪费,进而减轻了CDN源站的负载。可选地,如图4所示,所述CDN服务器还包括:记录单元34,用于在所述删除单元31删除所述HTTP请求消息中的所述range信息之前,记录所述range信息;所述CDN服务器还包括响应单元35,用于在所述第二接收单元接收到所述HTTP响应消息后,根据所述range信息从所述第一文件的完整数据中确定所述目标数据,并根据所述目标数据响应所述HTTP请求消息。也就是说,在本发明实施例中,CDN服务器接收到客户端发送的HTTP请求消息后,为了确保CDN服务器能够将正确的目标数据返回至该客户端,该CDN服务器在删除range信息之前,可以记录该range信息,以便该CDN服务器在接收到CDN源站发送的文件的完整数据后,可以根据该range信息确定客户端请求的目标数据,并将该目标数据发送至该客户端,避免了客户端本次请求失败。可选地,所述HTTP响应消息还包括响应码200;所述缓存单元33具体用于:根据所述响应码200缓存所述第一文件的完整数据。可选地,所述第一接收单元30还用于,接收客户端发送的第二HTTP请求消息;所述第二HTTP请求消息包括第二range信息;所述响应单元35,用于根据所述第二range信息在所述CDN服务器缓存的所述第一文件的完整数据中确定第二目标数据,并将所述第二目标数据发送至所述客户端。可选地,所述第一接收单元30还用于,接收客户端发送的第三HTTP请求消息;所述第三HTTP请求消息不包括range信息;所述响应单元35,用于将缓存的所述第一文件的完整数据发送至所述客户端。也就是说,该CDN服务器在缓存有第一文件的完整数据后,后续接收到的所有请求该第一文件的部分数据(即所述第二HTTP请求消息)或者请求该第一文件的完整数据(即所述第三HTTP请求消息),该CDN服务器均可以从自身的缓存中获取数据进行响应,无需再从所述CDN源站请求所述第一文件的数据,从而避免了对所述CDN源站的处理资源浪费。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的各单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM\/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。...
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1