一种通过网络缓存下载文件的方法和系统
技术领域
本发明涉及互联网技术中网络缓存技术领域,特别是指一种通过网络缓存下载文件的方法和系统。
背景技术
超文本传输协议(Hyper Text Transfer Protocol,HTTP)标准是目前互联网上应用最广泛的网络传输协议之一。万维网(World Wide Web,WWW)就是基于HTTP的一种应用。它是客户端至服务器模式,基于HTTP标准的请求和响应消息实现信息交互。WWW应用的快速发展,导致了网络拥塞和服务器超载,造成客户端访问延迟增大等问题。为此,引入了网络(web)缓存系统。web缓存位于客户端和内容源服务器之间。当客户端请求内容时,所述web缓存用于保存源服务器输出内容的副本,以便在下一个同样内容的请求到来时,直接通过本地保存的副本,为客户端提供服务,从而达到缩短响应延迟,减少网络带宽消耗的目的,同时实现了媒体内容根据用户请求自动完成分发的功能。
当源服务器上的原始内容被更新时,会导致web缓存的副本失效。为此,HTTP标准中定义了一套用于web缓存管理的规则和机制。如果web缓存检测到本地保存的副本已经超过有效期,则需要向源服务器确认该内容是否还有效。如果原始内容已经被更新,那么web缓存就需要重新下载原始内容并缓存。
这种机制在WWW应用中的效果很好。但是对于某些特殊情况,例如:原始内容会被周期更新,但是每次更新都只是在原内容末尾追加一部分数据的时候,就会存在问题。此时由于检测到原始内容被更新,web缓存就会更新副本,将整个内容从源服务器重新传输一遍。但实际上,每次更新时,原来缓存的内容并没有被改变,都还是有效的,只需要下载最新被添加的数据即可。显然,为了新增加的一段内容,而重传整个文件,这会严重影响通信系统的性能,无谓的消耗网络带宽,增大响应延迟,有违web缓存部署的初衷。
上述问题体现在实际应用中,例如:近两年逐渐开始流行的HTTP流(Streaming)业务中,将整个节目内容分成很多的小片段,例如10秒钟一个片段。然后通过一个播放列表描述文件,将这些片段组织在一起。播放列表文件中保存了这些片段的统一资源定位符(Uniform/Universal Resource Locator,URL)、时长、属性(例如不同码率)、时间关系等。客户端点播节目内容时,首先通过HTTP方式从web服务器下载这个播放列表文件,然后根据列表文件中的描述,通过web服务器下载需要的媒体片段,最终实现在本地播放。如果是直播业务,在内容生成端需要持续生成新的媒体片段,同时更新相应的播放列表文件。客户端则需要周期性的获取更新后的播放列表文件,然后根据列表文件中的描述,通过web服务器下载最新的媒体片段。而在第三代合作伙伴计划(3rd generation partnership project,3GPP)R9中关于HTTP Streaming业务的相关标准中,使用了ISO文件格式(ISO14496-12标准定义的文件格式)中的movie fragment结构(ISO14496-12标准中定义的结构,包含moofbox和相应的mdat box)来实现虚拟分段的效果。即一个movie fragment就对应一个媒体片段,每个媒体片段按照时间顺序,依次添加在文件末尾,形成由一系列movie fragment结构组成的媒体文件。客户端通过指明字节范围的方式,下载各个movie fragment,然后在本地播放。对于直播业务,当web缓存采用这种文件格式存储直播媒体数据的时候,就会出现前面所说的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种通过web缓存下载文件的方法和系统,解决了针对前述追加写入方式更新的内容,web缓存只能进行低效处理的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种通过网络(web)缓存下载文件的方法,所述方法包括:
生成内容文件,并设置所述内容文件的属性为追加写入(append only),将所述内容文件保存到内容提供节点上;
当web缓存收到用户端发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容;
web缓存更新本地保存的副本后,将用户端请求的内容文件返回给用户端。
其中,所述内容文件,具体为:只能通过追加写入进行更新的分段文件;
所述设置所述内容文件的属性为append only,包括:通过文件系统设置内容文件的属性;或者通过在数据库中添加append only标记;或者通过添加元数据文件实现appendonly标记。
其中,所述内容提供节点包括:源web服务器,或者在多级web缓存系统中的上级web缓存。
其中,所述将所述内容文件保存到内容提供节点上,包括:
内容生成端将属性为append only的内容文件保存到源web服务器上;或者
所述上级web缓存从源web服务器上获取所述属性为append only的内容文件并在本地保存为副本。
其中,所述如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容,具体为:
如果副本中没有用户端请求的内容文件、或者用户端请求的内容文件在副本中不完整、或者副本中的内容文件已经过期,web缓存则向内容提供节点发起请求,内容提供节点通过响应消息将副本中缺失的内容,以及表明所述内容文件属性为append only的信息,返回给web缓存。
其中,所述web缓存更新本地保存的副本,还包括:设置所述内容文件的副本的属性为append only。
本发明还提供了一种通过web缓存下载文件的系统,所述系统包括:内容生成端、内容提供节点、web缓存和用户端;其中,
所述内容生成端,用于生成内容文件,并设置所述内容文件的属性为appendonly,将所述内容文件保存到内容提供节点上;
所述web缓存,用于当收到用户端发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容,更新本地保存的副本后,将用户端请求的内容文件返回给用户端。
其中,所述内容文件,具体为:只能通过追加写入进行更新的分段文件;
所述内容生成端设置所述内容文件的属性为append only,包括:通过文件系统设置内容文件的属性;或者通过在数据库中添加append only标记;或者通过添加元数据文件实现append only标记。
其中,所述内容提供节点包括:源web服务器,或者在多级web缓存系统中的上级web缓存;
所述将所述内容文件保存到内容提供节点上,包括:内容生成端将属性为appendonly的内容文件保存到源web服务器上,或者所述上级web缓存从源web服务器上获取所述属性为append only的内容文件并在本地保存为副本。
其中,所述web缓存中如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容,具体为:
如果副本中没有用户端请求的内容文件、或者用户端请求的内容文件在副本中不完整、或者副本中的内容文件已经过期,web缓存则向内容提供节点发起请求,内容提供节点通过响应消息将副本中缺失的内容,以及表明所述内容文件属性为append only的信息,返回给web缓存。
其中,所述web缓存,还用于在更新本地保存的副本的过程中,设置所述内容文件的副本的属性为append only。
本发明所提供的通过web缓存下载文件的方法和系统,生成内容文件,并设置所述内容文件的属性为追加写入(append only),将所述内容文件保存到内容提供节点上;当web缓存收到用户端发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容;web缓存更新本地保存的副本后,将用户端请求的内容文件返回给用户端。通过本发明能够实现更为高效的web缓存处理。同时,节省了网络带宽,缩短了响应延迟。
附图说明
图1为本发明一种通过web缓存下载文件的方法流程示意图;
图2为本发明HTTP Streaming业务的系统架构示意图;
图3为本发明内容提供节点对HTTP请求的处理流程示意图;
图4为本发明一种通过web缓存下载文件的系统结构示意图。
具体实施方式
本发明的基本思想是:生成内容文件,并设置所述内容文件的属性为追加写入(append only),将所述内容文件保存到内容提供节点上;当web缓存收到用户端发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为appendonly,则向内容提供节点发起请求,获取副本中缺失的内容;web缓存更新本地保存的副本后,将用户端请求的内容文件返回给用户端。
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
图1为本发明一种通过web缓存下载文件的方法流程示意图,如图1所示,所述方法包括:
步骤101,生成内容文件,并设置所述内容文件的属性为append only,将所述内容文件保存到内容提供节点上;
具体的,所述内容文件具体为:只能通过追加写入进行更新的分段文件。例如:HTTP Streaming业务文件,每次更新时都通过追加写入的方式,添加到文件的末尾。所述设置所述内容文件的属性为append only,包括:通过文件系统设置内容文件的属性;或者通过在数据库中添加append only标记;或者通过添加元数据文件实现append only标记。所述内容提供节点包括:源web服务器或者在多级web缓存系统中的上级web缓存。所述将所述内容文件保存到内容提供节点上,包括:内容生成端将属性为append only的内容文件保存到源web服务器上;或者所述上级web缓存从源web服务器上获取所述属性为append only的内容文件并在本地保存为副本。
步骤102,当web缓存收到用户端发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容;
具体的,所述如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点发起请求,获取副本中缺失的内容,具体为:如果副本中没有用户端请求的内容文件、或者用户端请求的内容文件在副本中不完整、或者副本中的内容文件已经过期,web缓存则向内容提供节点发起请求,内容提供节点通过响应消息将副本中缺失的内容,以及表明所述内容文件属性为append only的信息,返回给web缓存。
进一步的,在步骤102中,检查本地保存的副本之后,如果副本中内容完整,即存在有效副本,则web缓存直接读取副本内容,返回给用户端。
步骤103,web缓存更新本地保存的副本后,将用户端请求的内容文件返回给用户端。
具体的,所述web缓存更新本地保存的副本,还包括:设置所述内容文件的副本的属性为append only。
图2为本发明HTTP Streaming业务的系统架构示意图,如图2所示,以直播服务为例,内容生成端24按HTTP Streaming直播服务的需求,接收直播码流,生成播放列表文件26和虚拟分段方式的媒体文件25,供源web服务器21读取,其中媒体文件25需要设置appendonly属性。客户端23a通过HTTP方式周期性的获取播放列表文件26,解析后,根据播放列表文件的内容,再获取相应媒体文件中的相应片段。客户端23a发出的HTTP请求,会通过web缓存系统22。如果客户端23a请求的内容,已经在web缓存系统22中有副本27,则web缓存系统22会直接读取副本27内容发送给客户端23a。如果有需要,例如本地没有副本,或副本已过有效期等情况,web缓存系统22会向源web服务器21(也可能是web缓存向上一级的web缓存)发起请求,下载内容后,再转发给客户端23a。客户端23b的操作和客户端23a的操作相同。
图3为本发明内容提供节点对HTTP请求的处理流程示意图,如图3所示,包括如下步骤:
步骤301,web缓存收到客户端请求直播服务的HTTP请求,判断所请求的文件在本地是否有缓存,如果在本地没有缓存,则执行步骤302,如果在本地有缓存,则执行步骤303;
步骤302,web缓存向内容提供节点,即上一级web缓存或源web服务器发起HTTP请求,请求获取整个文件,收到内容提供节点返回的数据后,提取客户端所需的部分,转发给客户端,并将收到的数据在本地缓存,同时根据内容提供节点的HTTP响应中的相关信息,设置文件属性(是否append only)。例如,如果响应消息中携带了扩展消息头“x-ContentAttribute:append-only”,则表明内容属性是append only,否则就不是appendonly;
步骤303,web缓存判断副本,即缓存文件是否覆盖了客户端所请求的范围,如果没有覆盖则执行步骤304,如果缓存文件覆盖了客户端所请求的范围(例如缓存文件为10MB,客户端所请求的数据范围为7MB~9MB),且文件为append only的(例如是媒体分段文件),则web缓存直接读取本地缓存文件中的相应数据,返回给客户端,同时在HTTP响应消息中,携带文件属性的扩展字段,标明该内容是append only的;
步骤304,客户端所请求的内容在本地有缓存,且文件为append only的(例如是媒体分段文件),但缓存文件不能覆盖客户端所请求的范围,例如缓存文件为10MB,客户端所请求的数据范围为9MB~11MB,则web缓存向内容提供节点发起HTTP请求,检查内容是否有更新,同时请求获取缺失部分的数据(即从10MB开始的,后续部分)。收到内容提供节点返回的数据后,提取客户端所需的部分,转发给客户端,并在HTTP响应消息中,携带文件属性的扩展字段,标明该内容是append only的。同时将收到的数据添加在本地缓存文件的末尾,并标记该文件是append only的。
进一步的,还包括步骤305,客户端所请求的内容在本地有缓存,但文件不是append only的(例如是播放列表描述文件),则web缓存按常规的缓存策略处理。即检查缓存是否过期,如没有过期,则直接读取缓存内容返回给客户端。如果过期,则向内容提供节点请求更新,如果内容没有更新,则直接读取缓存内容返回给客户端。如果有更新,则接收内容提供节点返回的更新内容后,提取相关数据返回给客户端。
图4为本发明一种通过web缓存下载文件的系统结构示意图,如图4所示,所述系统包括:内容生成端41、内容提供节点42、web缓存43和用户端44;其中,
所述内容生成端41,用于生成内容文件,并设置所述内容文件的属性为appendonly,将所述内容文件保存到内容提供节点42上;
具体的,所述内容文件具体为:只能通过追加写入进行更新的分段文件。例如:HTTP Streaming业务文件,每次更新时都通过追加写入的方式,添加到文件的末尾。所述内容生成端41设置所述内容文件的属性为append only,包括:通过文件系统设置内容文件的属性;或者通过在数据库中添加append only标记;或者通过添加元数据文件实现appendonly标记。所述内容提供节点42包括:源web服务器或者在多级web缓存系统中的上级web缓存。所述将所述内容文件保存到内容提供节点42上,包括:内容生成端将属性为appendonly的内容文件保存到源web服务器上;或者所述上级web缓存从源web服务器上获取所述属性为append only的内容文件并在本地保存为副本。
所述web缓存43,用于当收到用户端44发送的内容文件请求后,检查本地保存的副本,如果副本中内容不全,且内容文件的属性为append only,则向内容提供节点42发起请求,获取副本中缺失的内容,更新本地保存的副本后,将用户端44请求的内容文件返回给用户端44。
具体的,所述web缓存43中如果副本中内容不全,且内容文件的属性为appendonly,则向内容提供节点42发起请求,获取副本中缺失的内容,具体为:如果副本中没有用户端44请求的内容文件、或者用户端44请求的内容文件在副本中不完整、或者副本中的内容文件已经过期,web缓存43则向内容提供节点42发起请求,内容提供节点42通过响应消息将副本中缺失的内容,以及表明所述内容文件属性为append only的信息,返回给web缓存43。
所述web缓存43,还用于在更新本地保存的副本的过程中,设置所述内容文件的副本的属性为append only。
进一步的,所述web缓存43,还用于检查本地保存的副本之后,如果副本中内容完整,即存在有效副本,则web缓存43直接读取副本内容,返回给用户端44。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。