CN102771080B - 使用缓存的高效媒体传送的系统和方法 - Google Patents

使用缓存的高效媒体传送的系统和方法 Download PDF

Info

Publication number
CN102771080B
CN102771080B CN201080054556.9A CN201080054556A CN102771080B CN 102771080 B CN102771080 B CN 102771080B CN 201080054556 A CN201080054556 A CN 201080054556A CN 102771080 B CN102771080 B CN 102771080B
Authority
CN
China
Prior art keywords
media file
media
file
buffer memory
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201080054556.9A
Other languages
English (en)
Other versions
CN102771080A (zh
Inventor
M·库尔特曼彻
J·玛兰德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vantrix Corp
Original Assignee
Vantrix Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vantrix Corp filed Critical Vantrix Corp
Publication of CN102771080A publication Critical patent/CN102771080A/zh
Application granted granted Critical
Publication of CN102771080B publication Critical patent/CN102771080B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2895Intermediate processing functionally located close to the data provider application, e.g. reverse proxies

Abstract

为了提高因特网上媒体传送的效率,提供了用于缓存远程媒体文件并检索缓存的媒体文件的系统和方法,包括用于将所述远程媒体文件存储到缓存中、并根据仅对离散的媒体文件部分进行散列而创建的签名检索缓存的媒体文件的硬件和软件模块及步骤。所述签名是在针对同一媒体文件的后续请求时用于在缓存中查找缓存的媒体文件的密钥,即使它从不同的因特网位置接收。媒体文件可以根据不同媒体客户端的特性进行改编,并且改编的媒体文件也同样可以进行缓存。

Description

使用缓存的高效媒体传送的系统和方法
相关申请
本申请要求2009年12月1日提交的标题为“SystemandMethodsforEfficientMediaDeliveryusingCache”(使用缓存的高效媒体传送的系统和方法)、序号为61/265,676的美国临时专利申请的权益,该申请的全部内容在此引用作为参考。
技术领域
本发明涉及媒体文件的传送,更具地说,本发明涉及使用缓存的高效媒体文件传送的系统和方法,其中包括比较电子文件。
背景技术
包括所谓用户原创内容(UGC)的媒体文件可以在众多类型的终端中创建,这些终端包括移动电话等用户设备。所述媒体文件还能驻留在网络服务器上,并且可将UGC上载到此类服务器。可以在因特网上的www.youtube.com中找到存储UGC的网络服务器的一个示例。可从使用诸如移动电话或个人计算机之类的最终用户设备从世界上几乎任何地方访问此内容。访问包含此类内容的流行网站可能产生大量网络和服务器流量。因此,需要开发高效地传输或降低服务器流量的方法和系统。
发明内容
本发明的目标是提供用于使用缓存的远程媒体文件高效传输的系统和方法。
本发明的另一目标是提供系统和方法,其用于比较电子文件,包括判定电子文件的存在。
根据本发明的一方面,提供了一种缓存服务模块,判定缓存中媒体文件的存在,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,并且所述缓存服务模块包括:
文件分析模块,包括上面存储由处理器执行以实现以下步骤的计算机可读指令的计算机可读存储介质:
(i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小;
(ii)将M个范围内的字节串接成一个字节串;
(iii)使用所述字节串产生所述媒体文件的签名;以及
(iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存。
所述缓存服务模块进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储M的值,以及分别定义要获取的用于每个范围的字节数的预定参数。所述配置表进一步包括用于计算作为所述远程媒体文件的文件大小的函数的各个偏移的预定参数。
在上述缓存服务模块中,优选地满足以下一个或多个条件:字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。
在本发明的一个实施例中,所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括用于记录媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
有利地,用于产生签名的所述计算机可读指令包括用于将所述字节串散列为媒体密钥的计算机可读指令,所述媒体密钥是所述媒体文件的签名。
根据本发明的另一方面,提供了一种用于缓存媒体文件的系统,包括:
(a)缓存,其包括计算机可读存储介质,用于存储媒体文件,所述媒体文件是远程媒体源中存储的远程媒体文件的副本;
(b)宽带优化服务器,包括处理器和上面存储计算机可读指令的计算机可读存储介质,用于从媒体客户端设备接收对所述媒体文件的请求;以及
(c)缓存服务器,其中包括处理器和上面存储由所述处理器执行的计算机可读指令的计算机可读存储介质,所述缓存服务器具有:
缓存服务器模块,判定缓存中媒体文件的存在,所述缓存服务模块包括用于执行以下步骤的文件分析模块:
(i)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小;
(ii)将M个范围内的字节串接成一个字节串;
(iii)使用所述字节串产生所述媒体文件的签名;
(iv)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及
(v)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。
所述系统进一步包括用于与所述远程媒体源通信的网络接口模块。所述系统进一步包括用于从缓存检索所述媒体文件并通过带宽优化服务器将所述媒体文件转发到所述媒体客户端设备的缓存接口模块。所述带宽优化服务器包括用于产生所述媒体文件的改编(adapted)版本以使所述改编版本与所述媒体客户端设备的媒体结构匹配的媒体转码器(transcoder)(TRX)模块。有利地,来自所述媒体客户端设备的请求包括有关所述媒体客户端设备的媒体结构的信息。
在上述系统中,所述缓存服务模块进一步包括配置表,包括上面存储计算机可读指令的计算机可读存储介质,用于存储M的值,以及分别定义要获取的用于每个范围的字节数的预定参数。所述配置表进一步包括用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
在上述本发明的实施例的系统中,优选地满足以下至少一项:字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。
在上述系统中,所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括:用于记录所述媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
在上述系统中,所述文件分析模块被配置为通过将所述字节串散列为媒体密钥来判定所述媒体文件的签名,所述媒体密钥是所述媒体文件的签名。
根据本发明的又一方面,提供了一种用于缓存媒体文件的方法,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,所述方法包括:
(a)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围,每个字节范围短于所述远程媒体文件的文件大小;
(b)将M个范围内的字节串接成一个字节串;
(c)使用所述字节串产生所述媒体文件的签名;以及
(d)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及
(e)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。
所述方法进一步包括产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配。
上述方法进一步包括从缓存检索所述媒体文件并将所述媒体文件转发到所述媒体客户端设备。
在上述方法中,所述获取步骤包括从所述配置表中获取M的值,以及分别定义要从所述配置表获取的用于每个范围的字节数的预定参数。所述获取步骤进一步包括从所述配置表获取用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
在上述本发明的实施例的方法中,优选地满足以下至少一项:字节范围不重叠;所有字节范围的总和小于所述远程媒体文件的文件大小;所有字节范围的总和显著小于所述远程媒体文件的文件大小;或者所述偏移之一等于零。
在上述方法中,步骤(e)包括:
将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的预定阈值进行比较;以及
如果超过所述预定阈值,则将所述媒体文件和所述签名一起存储在缓存中。
所述方法进一步包括:
(f)产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配;
(g)将所述请求日志中存储的对所述媒体文件的请求数与所述配置表中存储的所述预定阈值进行比较;以及
(h)如果超过所述预定阈值,则将所述改编的媒体文件和所述签名一起存储在缓存中。
步骤(f)进一步包括:
(i)在所述请求日志中记录请求媒体客户端设备的类型;
(j)将所述请求日志中存储的来自所述请求媒体客户端设备的请求数与所述配置表中存储的所述预定阈值进行比较;
(j)如果超过所述预定阈值,则产生所述媒体文件的改编版本。
在上述方法中,所述改编版本是转速率(trans-rated)版本或转码版本。
在上述方法中,步骤(c)包括将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。
因此,已经提供使用缓存的高效媒体文件传送的改进系统和方法。
附图说明
现在将通过参考附图并作为示例来描述本发明的实施例,在所述附图中:
图1是根据本发明的实施例的媒体传送系统100的方块图,其中包括带宽优化器106;
图2是图1中的带宽优化器106的简单扩展的方块图;
图3是示出在图1中的媒体传送系统100的组件中执行的功能的功能图300;
图4是图3中的功能模块314“处理优化请求”的扩展;
图5是示出图3中的功能模块314“处理优化请求”的功能的流程图500;以及
图6示出显示图5中的步骤502“取来远程媒体的部分”、504“将所述部分串接成字节串‘S’”以及506“产生签名”的示例性细节的流程图600。
具体实施方式
本发明的实施例旨在提供媒体传送系统和方法,所述系统和方法通过提供高效的缓存装置来降低需要通过网络(包括因特网)传送的流量,所述缓存装置可部署在希望从远程服务器下载媒体内容的最终用户的附近。
图1是根据本发明的实施例的媒体传送系统100的方块图。媒体传送系统100包括媒体客户端设备102;超文本传输协议(HTTP)代理104;包括带宽优化(BWO)服务器计算机108、缓存服务器计算机110和缓存存储器112的带宽优化器106;以及通过因特网116与缓存服务器110相连的媒体源114。媒体源114一般可以位于远端,并且还可以被称为远程媒体源114。
BWO服务器108是由计算机硬件和软件组成的设备,例如,具有处理器和计算机可读存储介质(例如,计算机存储器、DVD、CD-ROM或其他存储介质)的通用或专用计算机,所述计算机可读存储介质上面存储由所述处理器执行以执行与BWO服务器108的操作相关的功能的计算机可读指令。
缓存服务器110是由计算机硬件和软件组成的设备,例如,具有处理器和计算机可读存储介质(例如,计算机存储器、DVD、CD-ROM或其他存储介质)的通用或专用计算机,所述计算机可读存储介质上面存储由所述处理器执行以执行与缓存服务器110的操作相关的功能的计算机可读指令。
尽管图1中仅示出一个媒体客户端设备102,但是将理解,媒体传送系统100可以包含多个因特网使能的媒体客户端设备并为这些设备提供服务,每个所述媒体客户端设备在逻辑上等同于媒体客户端102。术语“媒体客户端”旨在成为表示任何类型的因特网使能的客户端设备的通用术语,客户端设备例如为个人计算机(PC)、个人数字助理(PDA)、智能电话和移动电话,这些设备中的任何一种都能接收媒体文件。
类似地,因特网116可以提供对大量媒体源114的访问,所述媒体源例如为专用或公共内容服务器计算机,包括用户原创内容(UGC)服务器,尽管图1中仅示出一个远程媒体源114。
媒体客户端设备102通过以下方式间接地连接到媒体源114:位于媒体客户端102和HTTP代理104之间的链路120;HTTP代理104本身;位于HTTP代理104和BWO服务器108之间的链路122;与缓存服务器110通信的BWO服务器108本身;缓存服务器110本身;以及位于缓存服务器110和媒体源114之间的链路118。带宽优化器106的目的是通过在与缓存服务器110相连的缓存112中缓存媒体文件,节省链路118上的带宽使用量,链路118可能很长并且使用成本很高。
带宽优化器106提供的进一步的功能是控制链路120(和链路122一样可具有带宽限制)上传输的媒体的速率以及匹配媒体客户端102的能力。优选地,带宽优化器106可选地根据媒体客户端102的设备特性改编媒体文件。
如果不需要带宽优化或改编,则HTTP代理104可以通过链路124直接访问因特网116,绕过带宽优化器106。
图2是带宽优化器106的简单扩展的方块图,带宽优化器106包括BWO服务器108,BWO服务器108包括内含统一资源定位器(URL)重写器模块206和URL转发器模块208的BWO网关204;媒体缓冲器模块210;以及媒体转码器(TRX)模块212。带宽优化器106进一步包括与缓存服务器110相连的缓存112,缓存服务器110包括缓存服务模块214。缓存服务模块214包括上面存储计算机可读指令的计算机可读介质,所述计算机可读指令由处理器执行以执行从媒体源114获取媒体文件、与缓存112通信以用于存储和检索所述媒体文件、从BWO服务器108接收媒体请求、以及将从缓存112检索的媒体文件传输到BWO服务器108的处理任务。
BWO服务器108和缓存服务器110均在包括计算机可读存储介质(例如,一个或多个存储器单元(MEM))和一个或多个中央处理单元(CPU)的计算机硬件中实现,模块206-214是软件模块,具有在计算机可读介质(例如,各个MEM)中存储并在各个CPU中执行的计算机可读指令。BWO服务器108和缓存服务器110的功能及软件模块包括存储在各个计算机可读存储介质中并在各个CPU中执行的计算机可读指令。不失一般性地,BWO服务器108和缓存服务器110可以实现为不同的计算机,或者实现为一个计算机。缓存112是硬件组件,其在传统上可以通过硬盘或其他存储器技术(包括高速缓冲存储器组件的层次结构和用于存储文件及其关联文件密钥的任何传统数据库软件)便利地实现。
缓存服务模块214是软件模块,具有存储在缓存服务器110的计算机可读存储介质(例如,计算机存储器、DVD、CD-ROM或其他存储介质)上的计算机可读指令。缓存服务模块214适合与媒体源114和BWO服务器108进行通信以接收和发送媒体文件以及将这些媒体文件存储在缓存112中及从缓存112检索这些媒体文件。缓存服务模块214进一步配备有用于配置可编程预定参数以控制缓存的配置表216和其中记录媒体请求细节的请求日志模块218。此外,缓存服务模块214包括用于收集远程媒体文件的选定部分(字节范围)和产生所述远程媒体文件的文件签名的文件分析模块220,所述文件签名也称为媒体密钥222。缓存服务模块214进一步包括用于将请求日志模块218中记录的对于给定媒体文件的请求数与配置表216中存储的缓存阈值进行比较的比较器224。缓存服务模块214还包括用于与缓存112进行通信的缓存接口模块226,以及用于与媒体源114进行通信的网络接口模块(NWI/F)228。
为了提供媒体传送系统100的上下文,首先一般地描述示例性系统操作。
当媒体客户端102(图1)请求媒体源114中的远程媒体文件时,它通过链路120将请求(包括指向媒体源114的目标URL)发送到HTTP代理104。HTTP代理104在评估目标URL之后,传统上会直接通过链路124获取远程媒体文件。但是,如果在HTTP代理104中指示远程媒体需要优化,则HTTP代理104会将目标URL发送到BWO服务器108中的URL重写器模块206,所述重写器模块会将还可以是符号或组URL的目标URL重写为带宽优化URL(BWOURL)。所述BWOURL包括带宽优化器106的地址以及参数形式的、媒体源114的实际URL以及媒体源114上被请求的远程媒体文件的完整路径。所述BWOURL通过HTTP代理104返回到媒体客户端102,所述媒体客户端然后可使用所述BWOURL重新构造请求并重新发送请求。
如图1中所述,HTTP代理104和带宽优化器106一般是两个通过链路122链接的不同的子系统,从而允许这两个子系统位于不同的物理位置,或者由不同的商业实体管理。在适当的时候,HTTP代理104的功能还可以包括在BWO服务器108中,这样可导致一些简化。
所述BWOURL从媒体客户端102发送到HTTP代理104,然后所述BWOURL由此通过BWO服务器108的URL转发器模块208转发到缓存服务模块214。缓存服务模块214通过下面描述的发明方法判定缓存112中是否已经存在远程媒体文件的副本。如果存在,则缓存服务模块214通过BWO服务器108的媒体缓冲器模块210、链路122以及HTTP代理104将缓存的远程媒体文件发送到媒体客户端102。
所述远程媒体文件或其缓存副本可能需要进行改编以满足媒体客户端102的要求,这种情况下将调用媒体TRX模块212以提供必要的改编功能。所述远程媒体文件的改编版本可能已经位于缓存中,这种情况下将绕过媒体TRX模块212。所述改编版本可以是转码版本以匹配媒体客户端102的特定设备类型的媒体结构,或者它可能只是转速率版本,其中仅将媒体重新编码以便降低比特率,而不更改媒体结构。
用于转码的媒体结构可以从来自媒体客户端102的请求中包括的信息推断出,例如通过配置表216中包括的列出媒体结构与常用设备类型的表推断出。针对改编和转速率版本的请求可以记录在请求日志218中,该日志不仅包括有关请求的目标媒体文件的信息,还包括有关请求媒体客户端的设备类型的信息。配置表216中存储的阈值可用于判定何时应响应于请求产生转速率或转码版本。转速率版本可以在有关请求设备类型的媒体结构的完整信息不可用,而只知道对设备的比特率限制时产生。所述转码版本可以仅在超过有关特定设备对特定媒体文件的请求的阈值时产生。
例如在转码版本中,媒体的帧率或X和Y维已更改为适应接收设备(媒体客户端102)。2008年6月3日提交的、StephaneCoulombe的、标题为“SystemAndMethodForQuality-AwareSelectionofParametersInTranscodingofDigitalImages”(用于数字图像转码中的质量感知的参数选择的系统和方法)的、序号为12/164,836的美国专利申请描述了一种实际的媒体文件转码方式,该申请的全部内容在此引用作为参考。
图3是示出作为媒体客户端102的媒体请求的结果在媒体传送系统100中执行的功能的示例性序列的功能图300。所述功能通过指示一般情况下执行序列的箭头相连。
媒体传送系统100的组件名称沿着图表顶部以斜体列出,并由垂直的虚线隔开。
所述序列从媒体客户端102中的功能302“客户端产生请求”开始。在功能304“处理初始请求”中,在HTTP代理104中接收并处理包括初始目标URL的请求。
决定应该优化该请求之后,HTTP代理104将请求转发到BWO服务器108,在此在功能306“重定向初始请求”中,由URL重写器模块206重写其初始目标URL。这里初始目标URL被转换为BWOURL。
指示“REDIRECT”的返回码“303”和BWOURL然后一起返回到HTTP代理104,在此BWOURL和返回码“303”可以在协议功能308“返回303、URL”中重新打包成一协议数据单元并发送回媒体客户端102。
HTTP代理104和BWO服务器108之间的流量可包括BWO服务器108中的URL重写,如图3所示。替代地,来自媒体客户端102的初始请求还可以由HTTP代理104透明地代理(即,BWOURL替换)到BWO服务器108,而不涉及BWO服务器108的URL重写器模块206。
媒体客户端102发送包含目标为因特网中的媒体文件的目标URL的初始请求(客户端产生请求)。HTTP代理104被提供规则以判定应该将哪个域URL发送到URL重写器模块206或直接和透明地转发到BWO服务器108。HTTP代理104代理功能还可以包括不在本发明的范围之内的其他功能。与媒体客户端102进行的通信将通常借助HTTP,但是HTTP代理104和BWO服务器108之间的通信还可以基于因特网内容修改协议(ICAP),这是一个基于HTTP的轻量型协议,其被设计用于代理/服务器交互并且在因特网工程任务组(IETF)的推荐评价(RFC)3507中定义。
因此,BWO服务器108可以实现用于处理直接转发的请求或如图3所示在功能306(重定向初始请求)中产生BWOURL的ICAP服务器。在BWO服务器108中,分析ICAP封装的初始请求,其包括初始目标URL。还可以解释如已发布URL或组URL之类的初始目标URL以检索可提供被请求媒体的服务或设备的实际URL。所述实际URL被转换为BWOURL,并且HTTP重定向命令被返回到HTTP代理104,该代理使用协议功能308(返回303、URL)将BWOURL返回到媒体客户端102。
在此简单描述的使用ICAP的方法只是HTTP代理104和BWO服务器108之间通信的一个示例,还可以使用其他方法,例如简单透明代理。
在重请求功能310“转发新的URL”中,媒体客户端102识别重定向命令并继续使用BWOURL将“优化”请求发送到BWO服务器108,所述优化请求包括作为参数的指向媒体源114上的媒体文件的实际URL。
图4示出显示媒体客户端102、HTTP代理104和BWO服务器108之间的示例性交互400的步骤的概要流程图,包括以下步骤:
402“客户端发送初始请求”;
404“代理接收初始请求”;
406“分析请求”;
408“是否需要优化?”;
410“对初始请求应用规则集”;
412“将初始URL更改为BWOURL”;
414“将代码303和BWOURL发送到客户端”;
416“客户端发送BWO请求”;
418“代理接收BWO请求”;
420“将BWO请求传递到缓存服务器”;
422“将请求转发到因特网目的地”。
在步骤402“客户端发送初始请求”中,客户端102将对媒体文件的初始请求发送到HTTP代理104。
在步骤404“代理接收初始请求”中,HTTP代理104从媒体客户端102接收初始请求。
在步骤406“分析请求”中,HTTP代理104分析请求中包含的URL以判定媒体源114的正确URL以及到被请求远程媒体文件的路径。
在步骤408“是否需要优化?”中,HTTP代理104判定请求的URL是否指向可能需要优化的媒体文件。
如果不需要优化(步骤408的结果为“否”),则执行进行到步骤422“将请求转发到因特网目的地”,否则(步骤408的结果为“是”),执行进行到步骤410“对初始请求应用规则集”。
步骤408“是否需要优化?”过滤其他类型流量的请求,包括不能由BWO优化器106优化的请求,并且此类请求在步骤422“将请求转发到因特网目的地”中通过链路124(图1)直接转发到被请求因特网目的地,从而绕过BWO优化器106。
在步骤410“对初始请求应用规则集”中,对初始请求的URL应用已配置的规则集。此过程会产生前面描述的BWOURL。
在步骤412“将初始URL更改为BWOURL”中,产生重定向消息,其中初始目标URL由BWOURL替代。
如图3所示,步骤410和412优选地在BWO服务器108的功能306(重定向初始请求)中执行。替代地,功能306还可以位于HTTP代理104中。
在步骤414“将代码303和BWOURL发送到客户端”中,将包括URL重定向码303和BWOURL的重定向消息发送到媒体客户端102。
在步骤416“客户端发送BWO请求”中,媒体客户端102使用BWOURL替代初始请求的URL以产生修改请求,也就是带宽优化(BWO)请求,并将BWO请求发送到HTTP代理104。
在步骤418“代理接收BWO请求”中,HTTP代理104接收BWO请求并将其直接传递到BWO服务器108。
在步骤420“将BWO请求传递到缓存服务器”中,BWO服务器108将BWO请求直接传递到缓存服务器110,在此执行实际的优化(请参阅下面的图5)。
例如,下面是一个简单的流程:
-媒体客户端102将HTTPGET请求发送到URL
http://lscache6.youtube.com/videoplayback(步骤402);
-HTTP代理104接收请求并对请求URL应用已配置的规则集(步骤410);
-应注意,用于Youtube视频请求的规则集可以表示为以下形式的正则表达式“*.youtube.com/videoplayback*”,此表达式与请求URL匹配;
-HTTP代理104将HTTP303重定向响应发送到媒体客户端102(步骤414),其中Location(位置)头指向带宽优化器(BWO服务器108),后跟包括初始URL的参数,例如http://optmizer.vatrix.com/?url=ls6ache.youtube.com%2Fvideoplayback.
在功能方面,BWO服务器108的URL转发器208在功能312“传递”中接收优化和重定向的请求并将其传递到缓存服务器110的缓存服务模块214以便在功能模块314“处理优化请求”中进行处理。
图3示出其他功能模块:
316“返回部分媒体”;
318“返回完整媒体”;
320“将媒体发送到缓存”;
322“播放缓存媒体”;
324“缓冲媒体”;
326“改编媒体”;以及
328“客户端使用媒体”。
参考下面的图5更全面地描述功能模块314“处理优化请求”之后,这些其他功能将更容易理解。
图5是示出功能模块314“处理优化请求”的功能的流程图500,其示出在存在被请求媒体的缓存版本的情况下获取此版本的高级步骤,以及否则获取远程文件并缓存它的高级步骤,包括以下步骤:
502“取来远程媒体的部分”;
504“将所述部分串接成字节串‘S’”;
506“产生签名”;
508“媒体是否位于缓存中?”;
510“取来完整媒体文件”;
512“改编版本是否位于缓存中?”
514“选择版本”;
516“是否对媒体进行缓存?”;
518“缓存媒体”;
520“改编媒体”;
522“是否对改编媒体进行缓存”;以及
524“缓存改编版本”。
在步骤502“取来远程媒体的部分”中,缓存服务模块214接收BWO请求(标签A)并与媒体源114进行通信(标签“B”)以获取在BWO请求中标识的远程媒体文件的选定部分。所述选定部分由媒体源114的功能316“返回部分媒体”(图3)从远程媒体文件提取并被发送到功能模块314“处理优化请求”以便在步骤504“将所述部分串接成字节串‘S’”中接收并处理。
步骤502“取来远程媒体的部分”的检索过程可以使用一系列包括Range(范围)头的HTTPGET请求,这样允许HTTP客户端(即,缓存服务器110)判定远程文件的大小(内容长度CL),然后从HTTP服务器(媒体源114)请求特定字节范围。响应中将只包含被请求的字节并且包括指示远程媒体文件总长度的Content-Length(内容长度)头。
可以将步骤502“取来远程媒体的部分”概括为以下简单流程:
-发送针对位于媒体文件开头的初始字节范围的第一请求;
-检索字节并处理响应头以获取Content-Length头;
-根据配置和内容长度“CL”判定要请求的后续字节范围;
-执行后续字节范围请求,直到检索到选定文件部分的所有所要求字节。
图6示出显示步骤502“取来远程媒体的部分”、504“将所述部分串接成字节串‘S’”以及506“产生签名”的示例性细节的流程图600,其包括以下步骤:
602:“发送第一请求”;
604:“分析响应:获取内容长度”;
606:“判定‘M’个后续请求的范围和偏移”;
608:“设置‘i’:=1;以N0个字节加载‘S’”;
610:“发送下一请求(范围Ri)”;
612:“将接收的Ni个字节串接到‘S’”;
614:“‘i’是否小于‘M’”;
616:“递增‘i’”;以及
618:“媒体密钥:=散列(‘S’)”。
在步骤602:“发送第一请求”中(从标签(A)进入,请参阅图3和5),将第一HTTPGET请求发送到媒体源114,请求内容长度(整个远程媒体文件的大小),以便可择性地请求从远程媒体文件的开头的包含N0个字节的第一范围,即,范围=0至N0-1。N0的值可以固定,也可以从配置表216获取。第一和后续GET请求标记为(B),也请参阅图3和5。
在步骤604:“分析响应:获取内容长度”中,接收和分析对第一HTTPGET请求的响应(部分响应消息)。这包括指示文件大小的内容长度和N0个字节的第一范围(如果请求的话)。这个和后续响应消息标记为(C),也请参阅图3和5。
在步骤606:“判定‘M’个后续请求的范围‘Ri’”中,根据已配置的预定参数判定后续请求及其字节范围的数量。用于判定范围数量、每个范围的大小和用于判定远程文件内每个范围位置的规则的预定参数优选地在配置表216中指定。例如,除了在偏移0处的N0个字节的第一范围(第一请求的,步骤602)之外,可以指定后续范围的预定数量“M”,每个后续范围的长度为“Ni”个字节,并且从文件中的预定偏移处开始。替代地,第一字节范围和(后续)“M”个字节范围可以组合为一个范围数“M”,也就是说,“M”将包括包含偏移0处的第一范围的所有范围。单独定义N0个字节的第一范围是因为需要第一请求(步骤602)以至少获取内容长度,但是也可以可选地同时获取从文件开头的字节范围(请参阅下面的解释)。
所述偏移可以被指定为远程媒体文件的内容长度(CL)的比例“Fi”(i=1至M)。因此,后续范围的位置可以计算为Ri=[CL*Fi…CL*Fi+Ni-1]。也可以使用判定后续请求的文件位置的其他方法,例如可以根据实际内容长度动态地定义更小或更大数量的后续请求。为各个后续请求选择的大小可以是变化的,即,在后续范围中的可变字节数“Ni”中定义,或者可以指定针对每个范围的固定的字节数“N”。应该理解,在本发明的范围内,可以容易构想用于判定范围的其他规则。
所述字节范围实际构成来自完整远程媒体文件的字节的离散样本。为了显著降低到远程媒体源114的网络流量,所有“M”个范围内的字节数“Ni”加上第一范围内的N0个字节的总和优选地小于完整远程媒体文件整体包含的字节数,并且进一步优选地显著小于,例如小于1%。然而,当远程媒体文件很短时,可能出现选定范围实际重叠的情况,但是通常远程媒体文件的大小要比所有选定范围内的字节数大得多,偏移因素确保了所述范围在整个文件长度上展开,优选地不会发生重叠。
下面是配置表216中存储的一组已配置参数的非常简单的示例:N0=256,M=3,N(固定)=1024,对于i=1至3,Fi=1/4、1/2和3/4。使用此配置,任何长度至少为4096字节的媒体文件都会产生四个代表性范围,总计256+3*1024=3328个字节,对于后续串接(步骤612)和散列(步骤618)没有任何重叠。使用相同的参数,大小为1MB的典型媒体文件会产生一组范围,总字节数为媒体文件大小的0.33%,即,与下载完整文件相比,网络流量减少300倍。
尽管提供了“M”个范围、它们各自的长度“Ni”(i=0至M)以及比例“Fi”指示的它们在远程媒体文件内的位置,但是应该理解,这些值可通过配置表216编程并且可以选择其他值。
在步骤608:“设置‘i’:=1;以N0个字节加载‘S’”中,以在对第一请求的响应中接收的可选的N0个字节加载字节串‘S’,并将下标变量“i”设为1。
步骤610至616构成用于发送“M”个后续请求和处理响应的循环。此处使用循环构造允许容易地动态或通过配置修改“M”。
在步骤610:“发送下一请求(范围Ri)”中,将HTTPGET请求发送到媒体源114,请求包括Ni个字节的范围Ri。
在步骤612:“将接收的Ni个字节串接到‘S’”中,在来自媒体源114的响应中接收的Ni个字节与串“S”串接。
在步骤614:“‘i’是否小于‘M’”中,将下标变量“i”与先前判定的后续请求数“M”进行比较。如果已接收全部“M”个后续范围(步骤614的结果为“否”),则退出循环并接着执行步骤618:“媒体密钥:=散列(‘S’)”,否则继续此循环并执行下一步骤616:“递增‘i’”,其中递增下标变量“i”,并且在步骤610“发送下一请求(范围Ri)”中重新进入循环。
在步骤618:“媒体密钥:=散列(‘S’)”中,将现在包括所有“M”个范围中的累积字节以及第一请求中的N0个字节的字节串“S”散列为媒体密钥222。
仅从一些段中获取散列文件签名(媒体密钥)(即,从媒体文件的已定义的字节范围或子范围获取,而非由完整文件导出签名)的解释如下。
BWOURL标识远程媒体文件。两个因素使得降低到媒体源114的流量变得非常重要:远程媒体文件可能很大,以及媒体源114可能与带宽优化器106和媒体客户端102有一定地理距离,可能距离很远。本发明的一般目标是在完整文件已经位于缓存112中的情况下,避免从媒体源114检索所述完整文件。因为BWOURL可能已从先前下载和缓存文件时的URL发生更改,或者多个远程媒体文件副本可能在不同的URL下存在,所以缓存服务器110无法仅依赖BWOURL和缓存的URL的比较来判定远程媒体文件的缓存版本是否已经位于缓存中。
为了根据本发明的实施例解决此问题,缓存服务器110初始地如上所述仅从来自媒体源114的远程媒体文件的已定义的若干小部分获取代表性字节串“S”。
现在请返回参考图5.
如上所述,在步骤506“产生签名”中,缓存服务器110将字节串“S”散列为文件签名,也称为“媒体密钥”,用于与缓存中已存在的文件签名进行比较。所述签名用作进入缓存的文件密钥,所述缓存可以根据传统数据库原理进行构造。如果所述文件密钥在缓存中找到,则意味着远程媒体文件(副本)存储在缓存中。
步骤502至524在BWO服务器108和缓存服务器110的模块中执行。具体而言,步骤502、504、506和524在缓存服务模块214的文件分析模块220中执行,从而产生媒体密钥222。步骤508、510、518和524涉及缓存接口模块226。步骤520在BWO服务器108的媒体TRX模块212中执行。步骤516和522在缓存服务模块524的比较器224中执行,以及步骤502、504和510涉及使用网络接口模块228。
已知基于内容散列的缓存算法并非百分之百完美,并且存在将不同内容散列为相同签名的微小可能性,这样可能导致从缓存中检索不正确的文件。这种错误肯定(falsepositive)的可能性可通过选择散列函数和散列签名的位大小而变得难以察觉地小。在目前的情况下,存在额外的变量,即选定散列为签名的媒体文件部分的性质和大小。为了确保由于签名与不同的文件匹配而从缓存检索不正确文件的失误率难以察觉地小,发明人提出使用从多个位置检索字节段,也就是检索文件中预定的不同字节范围,而不是例如仅使用文件开头的段。仅使用开头的段会导致高水平的错误肯定,例如对于电影文件,由同一电影制片人出品的所有电影可能以相同的介绍开头。已经分别使用文件的25%、50%和75%位置上的三个检索点成功地评估了本发明的实施例的原型系统。
签名在步骤506“产生签名”中通过将媒体源114发送的远程媒体文件的部分进行散列而产生,所述部分是在步骤502检索并存储在缓存服务器110的存储器中的各个字节范围串接成的串“S”的字节序列。消息摘要算法第五版(MD5)是一种广泛使用的用于产生128位散列值的密码散列函数,所述128位散列值已在本发明的实施例中用作文件签名,也称为媒体文件签名。MD5在因特网工程任务组(IETF)的推荐评价(RFC)1321中定义。MD5是用于实现步骤506的有效密码散列函数。替代地,可以使用其他任何密码散列函数,只要它足够得可靠。http://en.wikipedia.org/wiki/Cryptographic_hash_function中的表内提供了具有各种复杂性和效率的适当密码散列函数的列表,包括通常称为“GOST”、“HAVAL”、“PANAMA”、“SHA-0”及其他的散列函数。
在步骤508“媒体是否位于缓存中?”中,访问缓存112并使用签名或媒体密钥询问缓存112以判定被请求的远程媒体文件是否位于缓存112中。
如果未在缓存112中找到媒体(步骤508的结果为“否”),则将返回码“未找到”从缓存112发送回缓存服务器110,所述缓存服务器然后进行到步骤510“取来完整媒体文件”以从媒体源114取来完整的远程媒体文件(标签“E”)。在所述完整的远程媒体文件被媒体源114的功能318“返回完整媒体”发送(标签“F”)并在缓存服务器108中接收之后,它被转发到BWO服务器108。
在步骤516“是否对媒体进行缓存?”中,查询缓存服务器110的配置表216以判定是否应该缓存媒体。配置表216包括判定是否应该缓存检索到的完整的远程媒体文件的可编程规则。例如,缓存规则可以是在缓存服务器110的请求日志218中记录所有媒体请求以及仅当远程媒体文件的请求率足够高(也就是说请求率达到特定阈值)时缓存远程媒体文件。
步骤518“缓存媒体”在缓存服务模块214的功能320“将媒体发送到缓存”中执行,并且完整的媒体被发送到缓存112并针对先前在步骤506“产生签名”中判定的媒体密钥(签名)进行存储。
无论是否缓存媒体文件,也就是说,执行步骤518“缓存媒体”,或者步骤516“是否对媒体进行缓存?”的结果为“否”之后,执行都会继续到步骤520“改编媒体”,如下所述。
如果已经在缓存112中找到远程媒体文件(步骤508的结果为“是”),则有可能缓存112中已经存在特定改编版本,即,针对请求设备(即媒体客户端102)适当改编的版本。如上所述,所述改编版本可以是转速率版本或转码版本。
在步骤512“改编版本是否位于缓存中?”中,判定缓存112中是否存在适当改编的版本。如果存在此类改编版本,或者如果因为原始(完整)媒体文件被发送到客户端102而使得所述改编版本不必要(步骤512的结果为“是”),则在步骤514“选择版本”中选择指向缓存112中适当版本的指针并将其转发到(标签“D”)BWO服务器108的功能322“播放缓存媒体”。
如果缓存112中没有适当改编的版本(步骤512的结果为“否”),则可以改编媒体文件,即,在功能326“改编媒体”(图3,标签“G”)中执行的步骤520“改编媒体”中对媒体文件进行转速率或转码,所述功能326在图2中的TRX模块212中执行。
改编版本在其请求率足够高(也就是说,如果它达到特定阈值)时由原始缓存版本产生。所述阈值可以在配置表216中配置。可针对所有媒体客户端设备类型或特定的设备子集全局地跟踪请求。所述设备类型通过来自媒体客户端102的媒体BWO请求中的头识别。全局阈值将触发转速率,而设备特定阈值将触发转码。
根据在步骤522“是否对改编媒体进行缓存”的判定,在步骤520“改编媒体”中创建的转速率和转码版本都可以保留在缓存中,在步骤522中,将查询请求日志218和配置表216。
在步骤524“缓存改编版本”中,使用先前计算的媒体密钥将所述改编版本发送到缓存112。
已经在缓存112中找到的媒体文件版本以步骤514“选择版本”中的指针指示,并与“重定向”返回码(标签“D”)一起发送到BWO服务器108,BWO服务器108然后在功能322“播放缓存媒体”中将识别的缓存媒体文件通过执行缓冲功能324“缓冲媒体”的媒体缓冲器210发送到媒体客户端102。
无论是否缓存媒体库文件的改编版本,也就是说,执行步骤524“缓存改编版本”、或者步骤522“是否对改编媒体进行缓存?”的“否”结果之后,识别的媒体文件都随后被转发(标签“G”)到执行缓冲功能324“缓冲媒体”的媒体缓冲器210,然后继续转发到媒体客户端102。
媒体客户端102现在最终在其功能328“客户端使用媒体”中接收和使用(显示或以其他方式使用)被请求的媒体文件。
BWO服务器中的媒体缓冲器模块210的目的是调节从BWO服务器108到媒体客户端102的媒体文件的传输,以便根据已配置策略或根据媒体本身的特性(例如,媒体比特率)调整媒体传送速率。
已经参考示例性实施例描述了检索媒体文件的串接部分(即,分离的字节范围)及将它们散列为单个媒体密钥。本发明的实施例提出这些带宽高效方法是为了高效地判定带宽优化器106中是否已经存在文件的缓存副本。有关缓存文件或根本不缓存文件的规则可以各种方式定义和配置,已经提供了相关示例。例如,可以在第一次相遇时仅缓存签名,而在特定时间内的第二次相遇时缓存完整文件。可以针对缓存未修改(完整)文件和针对缓存改编版本应用相同或不同的规则。
应该理解,可使用本发明的实施例的方法和系统比较各种电子文件,无论所述文件是否为媒体文件以及是否为远程文件。例如,可以根据以下步骤比较两个电子文件:
对于每个电子文件:
获取相对于所述电子文件开头的预定偏移处的M(M>=2)个字节范围,每个字节范围短于所述电子文件的文件大小;
将M个范围内的字节串接成一个字节串;
使用所述字节串产生所述电子文件的签名;以及
比较这两个文件的签名以判定所述电子文件是否相同。
便利地,产生电子文件的签名包括将字节串散列为文件密钥,并且所述比较签名包括比较两个文件密钥。
用于比较两个电子文件的相应计算机系统可以在具有处理器和计算机可读介质的通用或专用计算机中实现,所述计算机可读介质上存储由所述处理器执行以执行上述方法步骤的计算机可读指令。
尽管详细描述了本发明的实施例,但是对于本领域的技术人员来说显而易见的是,可以在以下权利要求的范围内做出对实施例的变形和修改。

Claims (17)

1.一种缓存服务模块,用于判定缓存中媒体文件的存在以及缓存媒体文件,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,并且所述缓存服务模块包括:
文件分析模块,其包括:
(i)用于从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围的装置,每个字节范围显著短于所述远程媒体文件的文件大小,所述字节范围分布在整个文件长度上而没有重叠,且所述远程媒体文件的文件大小显著大于所有M个字节范围中的字节数;
(ii)用于将M个范围内的字节串接成一个字节串的装置;
(iii)用于使用所述字节串产生所述媒体文件的签名的装置;
(iv)用于判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存的装置;以及
(v)用于如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件、并将所述媒体文件与签名一起存储在缓存中的装置。
2.如权利要求1中所述的缓存服务模块,进一步包括配置表,其用于存储:
M的值;
分别定义要获取的用于每个范围的字节数的预定参数;以及
用于计算作为所述远程媒体文件的文件大小的函数的各个偏移的预定参数。
3.如权利要求1所述的缓存服务模块,其中,
所述偏移之一等于零。
4.如权利要求2中所述的缓存服务模块,其中:
所述配置表进一步包括用于所述媒体文件的预定阈值;并且
\所述缓存服务模块进一步包括:
用于记录媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;
用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及
用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
5.如权利要求1至4中任一权利要求中所述的缓存服务模块,还包括用于将所述字节串散列为媒体密钥的装置,所述媒体密钥是所述媒体文件的签名。
6.一种用于缓存媒体文件的系统,包括:
(a)缓存,其包括用于存储媒体文件的计算机存储器,所述媒体文件是远程媒体源中存储的远程媒体文件的副本;
(b)带宽优化服务器计算机,其用于从媒体客户端设备接收对所述媒体文件的请求;以及
(c)缓存服务器计算机,其包括:
缓存服务器模块,其用于判定缓存中媒体文件的存在,所述缓存服务模块包括文件分析模块,所述文件分析模块包括:
(i)用于从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围的装置,每个字节范围显著短于所述远程媒体文件的文件大小,所述字节范围分布在整个文件长度上而没有重叠,且所述远程媒体文件的文件大小显著大于所有M个字节范围中的字节数;
(ii)用于将M个范围内的字节串接成一个字节串的装置;
(iii)用于使用所述字节串产生所述媒体文件的签名的装置;以及
(iv)用于判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存的装置;以及
(v)用于如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中的装置。
7.如权利要求6中所述的系统,进一步包括:
用于与所述远程媒体源通信的网络接口模块;
从缓存检索所述媒体文件并通过所述带宽优化服务器计算机将所述媒体文件转发到所述媒体客户端设备的缓存接口模块;以及
其中所述带宽优化服务器计算机包括用于产生所述媒体文件的改编版本以使所述改编版本与所述媒体客户端设备的媒体结构匹配的媒体转码器模块。
8.如权利要求6或7中所述的系统,所述缓存服务模块进一步包括配置表,其存储:
M的值;
分别定义要获取的用于每个范围的字节数的预定参数;以及
用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
9.如权利要求6中所述的系统,其中,
所述偏移之一等于零。
10.如权利要求8中所述的系统,其中:
所述配置表进一步包括用于所述媒体文件的预定阈值;并且所述缓存服务模块进一步包括:
用于记录所述媒体客户端设备对所述媒体文件的媒体请求的请求日志模块;
用于将所述请求日志中存储的对所述媒体文件的请求数与所述预定阈值进行比较的比较器;以及
用于在缓存中没有所述媒体文件和超过所述预定阈值的情况下将所述媒体文件发送到缓存的缓存接口模块。
11.如权利要求6、7或9中所述的系统,其中所述文件分析模块被配置为将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。
12.一种用于判定缓存中媒体文件的存在以及缓存媒体文件的方法,所述媒体文件是远程媒体源中存储的远程媒体文件的副本,所述方法包括:
(a)从远程媒体源获取远程媒体文件的文件大小,以及相对于所述远程媒体文件的开头的各个偏移处的M(M>=2)个字节范围,每个字节范围显著短于所述远程媒体文件的文件大小,所述字节范围分布在整个文件长度上而没有重叠,且所述远程媒体文件的文件大小显著大于所有M个字节范围中的字节数;
(b)将M个范围内的字节串接成一个字节串;
(c)使用所述字节串产生所述媒体文件的签名;以及
(d)判定缓存中所述媒体文件的存在,包括使用所述媒体文件的签名询问缓存;以及
(e)如果缓存中没有所述媒体文件,则从所述远程媒体源获取完整的媒体文件并将所述媒体文件和签名一起存储在缓存中。
13.如权利要求12中所述的方法,其中步骤(a)进一步包括获取:
M的值;
分别定义要从配置表获取的用于每个范围的字节数的预定参数;以及
来自所述配置表的用于根据所述远程媒体文件的文件大小计算各个偏移的预定参数。
14.如权利要求12中所述的方法,其中所述偏移之一等于零。
15.如权利要求12中所述的方法,其中步骤(e)进一步包括:
将请求日志中存储的对所述媒体文件的请求数与配置表中存储的预定阈值进行比较;以及
如果超过所述预定阈值,则将所述媒体文件和所述签名一起存储在缓存中。
16.如权利要求12中所述的方法,进一步包括:
产生所述媒体文件的改编版本以使所述改编版本与请求所述媒体文件的所述媒体客户端设备的媒体结构匹配;
将请求日志中存储的对所述媒体文件的请求数与配置表中存储的所述预定阈值进行比较;以及
如果超过所述预定阈值,以及缓存中没有所述改编版本,则将所述改编版本和所述签名一起存储在缓存中。
17.如权利要求12至16中任一权利要求中所述的方法,其中步骤(c)进一步包括将所述字节串散列为媒体密钥,所述媒体密钥是所述媒体文件的签名。
CN201080054556.9A 2009-12-01 2010-11-30 使用缓存的高效媒体传送的系统和方法 Expired - Fee Related CN102771080B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US26567609P 2009-12-01 2009-12-01
US61/265,676 2009-12-01
PCT/CA2010/001903 WO2011066644A1 (en) 2009-12-01 2010-11-30 System and methods for efficient media delivery using cache

Publications (2)

Publication Number Publication Date
CN102771080A CN102771080A (zh) 2012-11-07
CN102771080B true CN102771080B (zh) 2016-03-16

Family

ID=44069672

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080054556.9A Expired - Fee Related CN102771080B (zh) 2009-12-01 2010-11-30 使用缓存的高效媒体传送的系统和方法

Country Status (8)

Country Link
US (3) US8516074B2 (zh)
EP (1) EP2507938B1 (zh)
JP (1) JP5487457B2 (zh)
KR (1) KR101657196B1 (zh)
CN (1) CN102771080B (zh)
CA (1) CA2778215C (zh)
IL (1) IL219208A (zh)
WO (1) WO2011066644A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8145908B1 (en) * 2004-10-29 2012-03-27 Akamai Technologies, Inc. Web content defacement protection system
US8868463B2 (en) * 2007-06-08 2014-10-21 At&T Intellectual Property I, L.P. System and method of managing digital rights
US8311058B2 (en) 2008-05-10 2012-11-13 Vantrix Corporation Modular transcoding pipeline
US8677241B2 (en) * 2007-09-10 2014-03-18 Vantrix Corporation Method and system for multimedia messaging service (MMS) to video adaptation
US8220051B2 (en) * 2007-09-28 2012-07-10 Vantrix Corporation Generation and delivery of multimedia content-adaptation notifications
US8171167B2 (en) * 2007-11-13 2012-05-01 Vantrix Corporation Intelligent caching of media files
US8516074B2 (en) 2009-12-01 2013-08-20 Vantrix Corporation System and methods for efficient media delivery using cache
US9253548B2 (en) 2010-05-27 2016-02-02 Adobe Systems Incorporated Optimizing caches for media streaming
US8539041B2 (en) * 2011-12-23 2013-09-17 Huawei Technologies Co., Ltd. Method, apparatus, and network system for acquiring content
US8977704B2 (en) 2011-12-29 2015-03-10 Nokia Corporation Method and apparatus for flexible caching of delivered media
US9401968B2 (en) * 2012-01-20 2016-07-26 Nokia Techologies Oy Method and apparatus for enabling pre-fetching of media
US8856445B2 (en) * 2012-05-24 2014-10-07 International Business Machines Corporation Byte caching with chunk sizes based on data type
US8832375B2 (en) * 2012-05-24 2014-09-09 International Business Machines Corporation Object type aware byte caching
US8812623B2 (en) 2012-07-17 2014-08-19 Nokia Siemens Networks Oy Techniques to support selective mobile content optimization
US9154361B2 (en) 2012-07-18 2015-10-06 Opera Software Ireland Limited Just-in-time distributed video cache
US9112922B2 (en) 2012-08-28 2015-08-18 Vantrix Corporation Method and system for self-tuning cache management
CN102932435B (zh) * 2012-10-18 2016-06-15 北京奇虎科技有限公司 网络检测系统
CN103024001B (zh) * 2012-11-30 2018-07-31 中兴通讯股份有限公司 一种业务调度方法与装置及融合设备
US10438634B2 (en) * 2013-04-05 2019-10-08 Avid Technology, Inc. Content-based unique material identifiers
CN103209222A (zh) * 2013-04-24 2013-07-17 网宿科技股份有限公司 内容分发网络中对重叠乱序的范围请求的处理方法及装置
GB201309249D0 (en) * 2013-05-22 2013-07-03 Vodafone Ip Licensing Ltd Content optimisation using 3G measurements
US9026693B2 (en) * 2013-08-05 2015-05-05 Samsung Electronics Co., Ltd. Method for filtering cached input/output data based on data generation/consumption
US9118976B1 (en) * 2013-08-08 2015-08-25 Time Warner Cable Enterprises Llc Tuning efficiency and delivery of content
US10506282B2 (en) * 2013-10-21 2019-12-10 Synamedia Limited Generating media signature for content delivery
US9813465B2 (en) * 2014-12-19 2017-11-07 Intel Corporation Network proxy for energy efficient video streaming on mobile devices
US10659507B2 (en) 2015-03-02 2020-05-19 Qualcomm Incorporated Indication for partial segment
US10749930B2 (en) 2015-03-02 2020-08-18 Qualcomm Incorporated Indication for partial segment
CN106294452B (zh) * 2015-05-28 2019-07-23 阿里巴巴集团控股有限公司 数据获取方法和装置
CN104954894B (zh) * 2015-06-26 2019-03-26 网宿科技股份有限公司 一种视频流量引导方法、装置及一种电子设备
CN105959362A (zh) * 2016-04-25 2016-09-21 乐视控股(北京)有限公司 Cdn服务器及其缓存数据的方法
US10567508B2 (en) * 2017-04-28 2020-02-18 Facebook, Inc. Media file upload awareness for online systems
US20220321623A1 (en) * 2021-04-05 2022-10-06 Ademco Inc. Establishing a producer / consumer session in the cloud
WO2022217361A1 (en) * 2021-04-16 2022-10-20 Podcrunch Inc. System and method for searching and playing a predetermined start and end time of a clip within a larger audio or video file

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101184091A (zh) * 2007-11-05 2008-05-21 深圳市迅雷网络技术有限公司 一种确定相似文件的方法及装置

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190617B1 (en) 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
JP3000929B2 (ja) 1996-06-07 2000-01-17 日本電気株式会社 メモリカードを用いた画像表示方法及びシステム
US5978370A (en) * 1997-01-13 1999-11-02 At&Tcorp Circuit-switched switching system
US6289358B1 (en) 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6563517B1 (en) 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6970602B1 (en) * 1998-10-06 2005-11-29 International Business Machines Corporation Method and apparatus for transcoding multimedia using content analysis
US6483851B1 (en) 1998-11-13 2002-11-19 Tektronix, Inc. System for network transcoding of multimedia data flow
US6470378B1 (en) 1999-03-31 2002-10-22 Intel Corporation Dynamic content customization in a clientserver environment
JP3670169B2 (ja) 1999-06-23 2005-07-13 三菱電機株式会社 チャネル内多重交換方式
JP2001117809A (ja) 1999-10-14 2001-04-27 Fujitsu Ltd メディア変換方法及び記憶媒体
US6792575B1 (en) * 1999-10-21 2004-09-14 Equilibrium Technologies Automated processing and delivery of media to web servers
US7363361B2 (en) * 2000-08-18 2008-04-22 Akamai Technologies, Inc. Secure content delivery system
US7398312B1 (en) * 2000-03-29 2008-07-08 Lucent Technologies Inc. Method and system for caching streaming multimedia on the internet
US7725812B1 (en) * 2000-03-31 2010-05-25 Avid Technology, Inc. Authoring system for combining temporal and nontemporal digital media
EP1154356A1 (en) * 2000-05-09 2001-11-14 Alcatel Caching of files during loading from a distributed file system
US6785732B1 (en) * 2000-09-11 2004-08-31 International Business Machines Corporation Web server apparatus and method for virus checking
JP2002108870A (ja) 2000-09-27 2002-04-12 Oki Electric Ind Co Ltd 情報処理システムおよび情報処理方法
JP2002108570A (ja) 2000-10-02 2002-04-12 Nippon Columbia Co Ltd データ記憶装置及びデータ記憶方法
US7660902B2 (en) * 2000-11-20 2010-02-09 Rsa Security, Inc. Dynamic file access control and management
US6407680B1 (en) 2000-12-22 2002-06-18 Generic Media, Inc. Distributed on-demand media transcoding system and method
US7240105B2 (en) 2001-01-26 2007-07-03 International Business Machines Corporation Distributed multicast caching technique
DE60228202D1 (de) * 2001-02-12 2008-09-25 Gracenote Inc Verfahren zum erzeugen einer identifikations hash vom inhalt einer multimedia datei
US7684553B2 (en) 2001-03-23 2010-03-23 Nokia Corporation Method for transmitting data in a communication network
US7315884B2 (en) * 2001-04-03 2008-01-01 Hewlett-Packard Development Company, L.P. Reduction of network retrieval latency using cache and digest
US6813690B1 (en) 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7010581B2 (en) * 2001-09-24 2006-03-07 International Business Machines Corporation Method and system for providing browser functions on a web page for client-specific accessibility
JP2003143575A (ja) 2001-11-02 2003-05-16 Toshiba Corp マルチメディア再生方法及び装置
US20030110234A1 (en) 2001-11-08 2003-06-12 Lightsurf Technologies, Inc. System and methodology for delivering media to multiple disparate client devices based on their capabilities
US7155475B2 (en) * 2002-02-15 2006-12-26 Sony Corporation System, method, and computer program product for media publishing request processing
JP3713491B2 (ja) * 2002-02-28 2005-11-09 株式会社エヌ・ティ・ティ・ドコモ サーバ装置、及び情報処理方法
JP2003337739A (ja) 2002-03-15 2003-11-28 Neosoft:Kk Webページ情報保存処理プログラム、Webページ変換用プログラム、及び、コンテンツ提供システム
US7076544B2 (en) * 2002-04-08 2006-07-11 Microsoft Corporation Caching techniques for streaming media
JP4352653B2 (ja) 2002-04-12 2009-10-28 三菱電機株式会社 映像コンテンツ管理運用システム
US20040001106A1 (en) * 2002-06-26 2004-01-01 John Deutscher System and process for creating an interactive presentation employing multi-media components
US7127520B2 (en) 2002-06-28 2006-10-24 Streamserve Method and system for transforming input data streams
JP2004078354A (ja) 2002-08-12 2004-03-11 Fujitsu Ten Ltd データ変換サービス方法およびデータ変換用サーバ装置
US8645470B2 (en) 2002-12-06 2014-02-04 Core Wireless Licensing S.A.R.L. System, method and computer program product for the delivery of media content
US7188216B1 (en) * 2002-12-13 2007-03-06 Vignette Corporation Method and system for an extensible caching framework
US20040181550A1 (en) 2003-03-13 2004-09-16 Ville Warsta System and method for efficient adaptation of multimedia message content
JP4430882B2 (ja) 2003-03-19 2010-03-10 富士通株式会社 複合メディアコンテンツの変換装置及び変換方法並びに複合メディアコンテンツ変換プログラム
US20040258063A1 (en) 2003-03-25 2004-12-23 Raith Alex Krister Multimedia message processing
CA2426619A1 (en) * 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US7349923B2 (en) 2003-04-28 2008-03-25 Sony Corporation Support applications for rich media publishing
US20050187756A1 (en) * 2004-02-25 2005-08-25 Nokia Corporation System and apparatus for handling presentation language messages
US7692666B1 (en) * 2004-04-07 2010-04-06 Adobe Systems Incorporated Constructing color profile for parameterized image color space
FI20040944A0 (fi) * 2004-07-07 2004-07-07 Nokia Corp Sisältöviestinnän hallinta viestintäjärjestelmässä
US7640274B2 (en) * 2004-07-21 2009-12-29 Tinker Jeffrey L Distributed storage architecture based on block map caching and VFS stackable file system modules
US7430284B2 (en) * 2004-08-19 2008-09-30 Sybase 365, Inc. Architecture and methods for inter-carrier Multi-Media Messaging
WO2006047707A2 (en) * 2004-10-25 2006-05-04 Alphaspine, Inc. Pedicle screw systems and methods of assembling/installing the same
JP4234709B2 (ja) * 2004-10-26 2009-03-04 エルジー エレクトロニクス インコーポレイティド 移動通信端末機
US7409464B2 (en) * 2004-10-29 2008-08-05 Nokia Corporation System and method for converting compact media format files to synchronized multimedia integration language
JP5173427B2 (ja) * 2004-11-08 2013-04-03 イノパス・ソフトウェアー・インコーポレーテッド 圧縮リード・オンリ・メモリ・ファイル・システム(crmfs)イメージの更新
US7876766B1 (en) * 2004-11-22 2011-01-25 Syniverse Icx Corporation Method and apparatus to enable interoperation between multi-media messaging service centers
US20100195538A1 (en) * 2009-02-04 2010-08-05 Merkey Jeffrey V Method and apparatus for network packet capture distributed storage system
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7669121B2 (en) * 2005-01-19 2010-02-23 Microsoft Corporation Transcode matrix
WO2006085301A2 (en) * 2005-02-09 2006-08-17 Mobixell Networks Image adaptation with target size, quality and resolution constraints
US20060210027A1 (en) 2005-03-16 2006-09-21 Oded Kafri Method and system for storing and sending multimedia messaging service (MMS) messages
US7313755B2 (en) * 2005-04-20 2007-12-25 Microsoft Corporation Media timeline sorting
US8819143B2 (en) * 2005-05-31 2014-08-26 Flash Networks Ltd. Presentation layer adaptation in multimedia messaging
CN1859610A (zh) 2005-06-13 2006-11-08 华为技术有限公司 一种传送多媒体消息内容适配通知的方法
US7620991B2 (en) * 2005-08-12 2009-11-17 Netapp, Inc. Optimized network cache for virus scanning by examining the magic bytes of a file
JP2007053699A (ja) 2005-08-19 2007-03-01 Brother Ind Ltd メール受信システム及びインターネットファクシミリ
KR100680034B1 (ko) 2005-09-15 2007-02-07 (주)폴리다임 문맥 인식이 강화된 메시지 변환 시스템 및 방법
CN101273637B (zh) 2005-09-28 2013-04-03 艾利森电话股份有限公司 媒体管理器、媒体内容管理方法和系统以及包含媒体管理器的通信单元
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070239820A1 (en) 2005-11-23 2007-10-11 Nokia Corporation System and method for providing quality feedback metrics for data transmission in rich media services
JP4622832B2 (ja) 2005-12-05 2011-02-02 日本電気株式会社 キャッシュ管理システム、キャッシュ管理方法、キャッシュ管理プログラムおよびキャッシュ管理サーバ
US9081609B2 (en) 2005-12-21 2015-07-14 Xerox Corporation Image processing system and method employing a threaded scheduler
US20070157072A1 (en) 2005-12-29 2007-07-05 Sony Ericsson Mobile Communications Ab Portable content sharing
US7929599B2 (en) * 2006-02-24 2011-04-19 Microsoft Corporation Accelerated video encoding
US7813724B2 (en) * 2006-03-17 2010-10-12 Comverse Ltd. System and method for multimedia-to-video conversion to enhance real-time mobile video services
US7411531B2 (en) * 2006-06-30 2008-08-12 Agere Systems Inc. Methods and apparatus for asynchronous sampling of a received signal at a downsampled rate
US8266182B2 (en) * 2006-06-30 2012-09-11 Harmonic Inc. Transcoding for a distributed file system
US20110047618A1 (en) * 2006-10-18 2011-02-24 University Of Virginia Patent Foundation Method, System, and Computer Program Product for Malware Detection, Analysis, and Response
WO2008058257A2 (en) * 2006-11-08 2008-05-15 Mywaves, Inc. An apparatus and method for dynamic streaming of multimedia files
US20080195664A1 (en) * 2006-12-13 2008-08-14 Quickplay Media Inc. Automated Content Tag Processing for Mobile Media
US7783757B2 (en) * 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US20080226173A1 (en) * 2007-03-13 2008-09-18 Motorola, Inc. Method and apparatus for video clip searching and mining
US8225189B2 (en) * 2007-03-15 2012-07-17 Broadcom Corporation Data error detection
US20080270436A1 (en) * 2007-04-27 2008-10-30 Fineberg Samuel A Storing chunks within a file system
US8311058B2 (en) 2008-05-10 2012-11-13 Vantrix Corporation Modular transcoding pipeline
US8677241B2 (en) * 2007-09-10 2014-03-18 Vantrix Corporation Method and system for multimedia messaging service (MMS) to video adaptation
US8561116B2 (en) 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
US8220051B2 (en) * 2007-09-28 2012-07-10 Vantrix Corporation Generation and delivery of multimedia content-adaptation notifications
US8171167B2 (en) * 2007-11-13 2012-05-01 Vantrix Corporation Intelligent caching of media files
US9060208B2 (en) * 2008-01-30 2015-06-16 Time Warner Cable Enterprises Llc Methods and apparatus for predictive delivery of content over a network
WO2009149063A1 (en) 2008-06-02 2009-12-10 Azuki Systems, Inc. Media mashup system
US8537835B2 (en) 2008-06-20 2013-09-17 Alcatel Lucent Methods and apparatus for self-organized caching in a content delivery network
US7904464B2 (en) * 2008-08-27 2011-03-08 International Business Machines Corporation Virtual list view support in a distributed directory
US8213924B2 (en) * 2008-10-06 2012-07-03 Facebook, Inc. Providing distributed online services for mobile devices
WO2010045262A1 (en) * 2008-10-14 2010-04-22 Wanova Technologies, Ltd. Storage-network de-duplication
US8204915B2 (en) * 2009-02-13 2012-06-19 Alcatel Lucent Apparatus and method for generating a database that maps metadata to P2P content
US9807468B2 (en) * 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
US8516074B2 (en) 2009-12-01 2013-08-20 Vantrix Corporation System and methods for efficient media delivery using cache
US8209491B2 (en) 2010-04-27 2012-06-26 Symantec Corporation Techniques for directory server integration
WO2012088023A2 (en) 2010-12-20 2012-06-28 Akamai Technologies, Inc. Methods and systems for delivering content to differentiated client devices
US10684989B2 (en) 2011-06-15 2020-06-16 Microsoft Technology Licensing, Llc Two-phase eviction process for file handle caches
US9264508B2 (en) 2011-08-19 2016-02-16 Time Warner Cable Enterprises Llc Apparatus and methods for reduced switching delays in a content distribution network
US8984311B2 (en) 2011-12-30 2015-03-17 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including dynamic C0-state cache resizing
US9167049B2 (en) 2012-02-02 2015-10-20 Comcast Cable Communications, Llc Content distribution network supporting popularity-based caching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101184091A (zh) * 2007-11-05 2008-05-21 深圳市迅雷网络技术有限公司 一种确定相似文件的方法及装置

Also Published As

Publication number Publication date
KR20120106948A (ko) 2012-09-27
CA2778215A1 (en) 2011-06-09
CA2778215C (en) 2017-07-04
JP2013512514A (ja) 2013-04-11
KR101657196B1 (ko) 2016-09-19
JP5487457B2 (ja) 2014-05-07
EP2507938A1 (en) 2012-10-10
US20190044862A1 (en) 2019-02-07
US20110131298A1 (en) 2011-06-02
US10567287B2 (en) 2020-02-18
WO2011066644A1 (en) 2011-06-09
US10097463B2 (en) 2018-10-09
US20130311596A1 (en) 2013-11-21
EP2507938B1 (en) 2019-07-03
IL219208A0 (en) 2012-06-28
EP2507938A4 (en) 2017-06-28
IL219208A (en) 2015-07-30
CN102771080A (zh) 2012-11-07
US8516074B2 (en) 2013-08-20

Similar Documents

Publication Publication Date Title
CN102771080B (zh) 使用缓存的高效媒体传送的系统和方法
US11194719B2 (en) Cache optimization
US20200183882A1 (en) System and method for storing content on a content delivery network
US9888089B2 (en) Client side cache management
US11044335B2 (en) Method and apparatus for reducing network resource transmission size using delta compression
KR100990098B1 (ko) 데이터 처리 시스템, 데이터 처리 방법, 정보 처리 디바이스, 및 컴퓨터 판독가능 기록 매체
US20180302489A1 (en) Architecture for proactively providing bundled content items to client devices
US20110060788A1 (en) System and method for automatically providing metadata elements on a web page or web site

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

Termination date: 20191130