一种移动设备转让专利

申请号 : CN201810182468.5

文献号 : CN108429800B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 迈克尔·卢娜米克·特瓦浩塔

申请人 : 杭州硕文软件有限公司

摘要 :

本发明公开了一种移动设备,该移动设备包括:存储器;处理器;检测应用行为的应用行为检测器,所述应用行为检测器包括:检测及跟踪相对于应用的用户活动的用户活动模块,其中,所检测到的活动包括当应用被移动到后台或前台时进行检测;允许用户设置特定应用优先级的优先级引擎;以及配置为用于基于所检测到的用户行为及用户设定的所述特定应用优先级来调整应用的轮询间隔的流量成型引擎。

权利要求 :

1.一种移动设备,包括:

存储器;

处理器;以及

本地代理;

其中,所述本地代理包括:

检测应用程序行为的应用程序行为检测器,所述应用程序行为检测器包括:用于对应用程序请求的优先级进行排序的优先级引擎;

检测及跟踪相对于应用程序的用户活动的用户活动模块,其中,所检测到的活动包括应用程序被移动到后台或前台,并且应用程序的历史文件包括先前访问的情况;

其中,用户活动模块基于应用程序的历史文件确定用户行为的历史趋势;

用于基于应用程序请求的优先级管理移动设备提出的应用程序请求的请求管理器;以及配置为用于基于所检测到的,包括所确定的用户行为的历史趋势的用户活动,及所确定的应用程序请求的优先级来调整应用程序的轮询间隔的流量成型引擎;

所述本地代理用于基于所检测的包含所确定的用户行为的历史趋势的用户活动,及所确定的应用程序请求的优先级引发远程设备修改其与所述移动设备的通信频率。

2.根据权利要求1所述的移动设备,其特征在于,所述移动设备接收来自代理服务器的触发以激活被确定为不活动的多个应用程序中的其中一个,并且其中,所述代理服务器与多个应用程序服务器进行通信。

3.根据权利要求2所述的移动设备,其特征在于,所述触发使得被确定为不活动的所述应用程序被激活。

4.根据权利要求3所述的移动设备,其特征在于,所述触发从不同于所述应用程序服务器至所述移动设备的信道的信道发出。

5.根据权利要求2所述的移动设备,其特征在于,所述移动设备接收来自所述代理服务器的数据,其中,所述数据由所述代理服务器基于所述数据的关键度进行传送。

6.根据权利要求1所述的移动设备,其特征在于,所述移动设备从代理服务器接收有新数据将要被发送的指示。

7.根据权利要求1所述的移动设备,其特征在于,所述流量成型引擎还被配置为根据多个应用程序调整所述轮询间隔。

8.根据权利要求7所述的移动设备,其特征在于,所述流量成型引擎还被配置为基于第二应用程序的所述轮询间隔来调整第一应用程序的所述轮询间隔。

9.根据权利要求1所述的移动设备,其特征在于,所述流量成型引擎还被配置为用于响应于检测到所述移动设备的用户不活动时,等待一段时间后发送事件。

10.根据权利要求1所述的移动设备,其特征在于,所述移动设备允许多个应用程序的低优先级事件同时轮询。

11.根据权利要求1所述的移动设备,其特征在于,所述优先级通过所述移动设备的用户界面进行配置。

说明书 :

一种移动设备

[0001] 本申请是申请日为2011年11月18日,申请号为CN 201180063972.X的中国发明专利申请的分案申请,在此通过引用将原母案申请的全部内容结合到本申请中。
[0002] 要求优先权
[0003] 本申请要求以下优先权:2010年11月22日提出的申请号:61/416,020,名称:“ALIGNING BURSTS FROM SERVER TO CLIENT”的美国临时专利;2010年11月22日提出的申请号:61/416,033,名称:“POLLING INTERVAL FUNCTIONS”的美国临时专利;2011年1月7日提出的申请号:61/430,828,名称:“DOMAIN NAME SYSTEM WITH NETWORK TRAFFIC 
HARMONIZATION”的美国临时专利;2011年9月9日提出的申请号:61/533,007(代理人案号:
76443-8138.US00),名称:“DISTRIBUTED CACHING IN A WIRELESS NETWORK OF CONTENT DELIVERED FOR A MOBILE APPLICATION OVER A LONG-HELD REQUEST”的美国临时专利,本申请参考引用了如上所述申请的全部内容。
[0004] 本申请涉及2011年7月8日提出的申请号:13/178,598(代理人案号:76443-8102.US01),名称:“CONTEXT AWARE TRAFFIC MANAGEMENT FOR RESOURCE CONSERVATION IN A WIRELESS NETWORK”的美国专利,本申请参考引用上述申请的内容。
[0005] 本申请涉及2011年7月22日提出的申请号:13/188,533(代理人案号:76443-8103.US01),名称:“MOBILE APPLICATION TRAFFIC OPTIMIZATION”的美国专利,本申请参考引用上述申请的内容。
[0006] 本申请涉及2011年5月25日提出的申请号:13/115,631(代理人案号:76443-8104.US01),名称:“MOBILE NETWORK TRAFFIC COORDINATION ACROSS MULTIPLE 
APPLICATIONS”的美国专利,本申请参考引用上述申请的内容。
[0007] 本申请涉及2011年5月25日提出的申请号:13/115,740(代理人案号:76443-8105.US01),名称:“PREDICTION OF ACTIVITY SESSION FOR MOBILE NETWORK USE 
OPTIMIZATION AND USER EXPERIENCE ENHANCEMENT”的美国专利,本申请参考引用上述申请的内容。
[0008] 本申请涉及2011年6月8日提出的申请号:13/178,675(代理人案号:76443-8106.US01),名称:“DISTRIBUTED IMPLEMENTATION OF DYNAMIC WIRELESS TRAFFIC POLICY”的美国专利,本申请参考引用上述申请的内容。
[0009] 本申请涉及2011年7月5日提出的申请号:13/176,537(代理人案号:76443-8107.US01),名称:“DISTRIBUTED CACHING AND RESOURCE AND MOBILE NETWORK TRAFFIC MANAGEMENT”的美国专利,本申请参考引用上述申请的内容。
[0010] 本申请涉及2011年10月14日提出的申请号:13/274,265(代理人案号:76443-8134.US01),名称:“Caching Adapted For Mobile Application Behavior And Network Conditions”的美国专利,本申请参考引用上述申请的内容。
[0011] 本申请涉及2011年10月14日提出的申请号:13/274,501(代理人案号:76443-8134.US02),名称:“Request and Response Characteristics based Adaptation of Distributed Caching in a Mobile Network”的美国专利,本申请参考引用上述申请的内容。
[0012] 本申请涉及2011年10月14日提出的申请号:13/274,250(代理人案号:76443-8138.US01),名称:“Distributed Caching In A Wireless Network Of Content 
Delivered For A Mobile Application Over A Long-Held Reques”的美国专利,本申请参考引用上述申请的内容。
[0013] 本申请涉及2011年10月14日提出的申请号:13/274,248(代理人案号:76443-8139.US01),名称:“APPLICATION AND NETWORK-BASED LONG POLL REQUEST DETECTION AND CACHEABILITY ASSESSMENT THEREFOR”的美国专利,本申请参考引用上述申请的内容。
[0014] 本申请涉及2011年11月1日提出的申请号:13/287,042(代理人案号:76443-8108.US02),名称:“Cache Defeat Detection and Caching of Content Addressed by Identifiers Intended to Defeat Cache”的美国专利,本申请参考引用上述申请的内容。
[0015] 本申请涉及2011年11月1日提出的申请号:13/257,085(代理人案号:76443-8108.US03),名称:“Distributed System for Cache Defeat Detection and Caching of Content Addressed by Identifiers Intended to Defeat Cache”的美国专利,本申请参考引用上述申请的内容。
[0016] 本申请涉及2011年11月1日提出的申请号:13/287,046(代理人案号:76443-8109.US01),名称:“Distributed Management of Keep-Alive Message Signaling for Mobile Network Resource Conservation and Optimization”的美国专利,本申请参考引用上述申请的内容。
[0017] 本申请涉及2011年11月1日提出的申请号:13/287,058(代理人案号:76443-8110.US01),名称:“Mobile Traffic Categorization and Policy for Network Use Optimization While Preserving User Experience”的美国专利,本申请参考引用上述申请的内容。
[0018] 本申请涉及年月日提出的申请号:(代理人案号:76443-8112.US01),名称:“Optimization of Resource Polling Intervals To Satisfy Mobile Device 
Requests”的美国专利,本申请参考引用上述申请的内容。

背景技术

[0019] 不断的连接和断开增加了信令网络流量的量,从而降低网络整体的性能,并将其传给网络运营商以及迫使他们增加带宽和网络访问。至目前为止,运营商已经能够投资4G和LTE网络以提高热点的网络容量。然而,这些解决方案都已达到它们的极限。LTE和4G也显示增加的带宽感知容量造成用户和应用程序增加使用及数据消费。从长远来看,它可能会增加而不是帮助拥塞问题。
[0020] 此外,在大多数情况下,移动设备可以接收来自服务网络中的多个源(例如,服务器、web站点、网络中的节点等)的数据。服务和客户端之间的路由器/通信网络确保所有服务都可以通过单个物理连接将更改传播至客户端。然而,可能出现的问题是,不同的服务(不知道对方的行动)触发客户端在不同的时间创建连接,并可能存在从服务到客户端的数据传输的有效的或最佳的调整的缺乏。因此,共享连接的有效地利用缺乏(或至少最小或次优的),以及有时单个连接实际上仅为单个服务或数据源提供足够的或实际的服务水平。
[0021] 当移动或宽带网络可被设计为于大量数据的高输量,它们不必须针对服务于要求少量数据的频繁的、低输量请求的移动应用程序。现有的网络也没有考虑到不同类型的移动流量和不同类型的流量的优先级,例如,从用户体验的角度。
[0022] 这样的事件使移动无线设备处于相当长时间的高功耗模式——通常15-30秒。由于高功耗模式下所消耗电能高达闲置模式的100倍,网络启动的应用程序很耗电并能迅速消耗电池电量。随着具有网络启动功能应用程序的迅速普及,这种情况越发糟糕,例如推送邮件、新闻提要、状态更新、多媒体内容共享以及其它移动应用程序等等。此外,不断轮询的问题是手机也依赖于信号的发送和接收来电和短信,有时这些基本的手机功能相对于应用程序和其他移动客户端都被迫退居次席。

发明内容

[0023] 本发明的第一方面涉及一种移动设备,该移动设备包括:
[0024] 存储器;
[0025] 处理器;
[0026] 检测应用行为的应用行为检测器,所述应用行为检测器包括:
[0027] 检测及跟踪相对于应用的用户活动的用户活动模块,其中,所检测到的活动包括当应用被移动到后台或前台时进行检测;
[0028] 允许用户设置特定应用优先级的优先级引擎;以及
[0029] 配置为用于基于所检测到的用户行为及用户设定的所述特定应用优先级来调整应用的轮询间隔的流量成型引擎。
[0030] 可选地,所述移动设备接收来自代理服务器的触发以激活被确定为不活动的多个应用中的其中一个,并且其中,所述代理服务器与多个应用服务器进行通信。
[0031] 可选地,所述触发使得被确定为不活动的所述应用被激活。
[0032] 可选地,所述触发从不同于所述应用服务器至所述移动设备的信道的信道发出。
[0033] 可选地,所述移动设备接收来自所述代理服务器的数据,其中,所述数据由所述代理服务器基于所述数据的关键度进行传送。
[0034] 可选地,所述移动设备从代理服务器接收有新数据将要被发送的指示。
[0035] 可选地,所述流量成型引擎根据多个应用调整所述轮询间隔。
[0036] 可选地,所述流量成型引擎基于第二应用的所述轮询间隔来调整第一应用的所述轮询间隔。
[0037] 可选地,所述流量成型引擎还被配置为用于响应于检测到所述移动设备的用户不活动时,等待一段时间后发送事件。

附图说明

[0038] 图1A是系统示例图,其中主机服务器促进移动设备(例如,无线设备)与无线网络(或者宽带网络)中应用程序服务器或内容提供商之间的流量、内容缓存和/或资源节约的管理,以节约资源。主机服务器可以进一步基于应用程序的行为、内容优先级、用户的活动和/或用户的期望分类移动流量和/或实施交付策略,用于在调整数据传输的进一步使用以优化无线传输的连接建立。
[0039] 图1B是分布在主机服务器和设备之间的代理和缓存系统示例图,其为资源节约及内容缓存促进设备与应用程序服务器/内容提供商之间的网络流量管理。分布在主机服务器和设备之间的代理系统可以进一步基于应用程序的行为、内容优先级、用户的活动和/或用户的期望分类移动流量和/或实施交付策略,例如,用于在调整数据传输的进一步使用以优化被建立用于无线传输的连接。
[0040] 图2A是一框图,展示了位于移动设备(例如,无线设备)上的分布式代理和缓存系统的客户端组件,其为了资源节约、内容缓存和/或流量管理而管理无线网络(或宽带网络)中的流量。客户端代理(或本地代理)可以进一步基于应用程序的行为、内容优先级、用户的活动和/或用户的期望分类移动流量和/或实施交付策略,例如,用于在调整数据传输的进一步使用以优化被建立用于移动设备的连接。
[0041] 图2B是一框图,展示了如图2A所示缓存系统中组件的进一步示例,其可以为移动应用程序行为和/或网络条件缓存和采取缓存策略。图2B也说明了组件能够检测长轮询请求以及管理长轮询的缓存。客户端代理(或本地代理)可以进一步分类移动流量和/或实施交付策略基于应用程序的行为,内容优先级,用户的活动,和/或用户的期望,例如,用于在调整数据传输的进一步使用以优化被建立用于移动设备的连接。
[0042] 图2C是一框图,展示了图2A中所示的缓存系统中的应用程序行为检测器以及缓存策略管理器中的另一组件。其进一步能够检测缓存失败并执行由旨在击败缓存的标识符处理的内容的缓存。
[0043] 图2D是一框图,展示了如图2A的例子中所示的在本地缓存中的附加组件的例子。该例子能进一步基于应用程序的行为和/或用户的活动实现移动流量分类和策略实施。
[0044] 图2E是一框图,展示了如图2A的例子中所示的流量整形引擎和应用程序行为检测器中的附加组件的例子。这些例子能够进一步促进到移动或宽带设备或其用户的输入的数据传输的调整以优化需要被建立用于通过无线网络或宽带网络接收数据的连接的数量。
[0045] 图3A是一框图,展示了分布式代理和缓存系统的服务器端组件的例子,其为资源节约、内容缓存和/或流量管理而管理无线网络(或宽带网络)中的流量。服务器端代理(或代理服务器)可以进一步基于应用程序行为、内容优先级、用户的活动和/或用户的期望分类移动流量和/或实施交付策略,例如,用于在调整数据传输的进一步使用以优化被建立用于至移动设备的无需传输的连接。
[0046] 图3B是一框图,展示了如图3A所示的缓存系统的缓存策略管理器中的组件的进一步的示例,其能够为移动应用程序行为和/或网络条件缓存并适配策略。同时展示了组件能够检测长轮询请求并管理长轮询的缓存。
[0047] 图3C是一框图,展示了如图3A所示的代理系统中的组件的另一示例,其进一步能够管理并检测击败机制及监测内容源的缓存。
[0048] 图3D是一框图,展示了如图3A的例子中所示的代理服务器中的附加组件的例子。该例子进一步能够基于移动应用程序行为和/或流量优先级实现流量分类和策略实施。
[0049] 图3E是一框图,展示了图3A的流量整形引擎的例子中的附加的组件的例子。该例子还能够调整至移动或宽带设备或其他接收器的数据传输,以优化被建立用于无线网络或宽带网络中的传输的连接。
[0050] 图4是一时序图,展示了分布式代理系统如何协调无线网络(或宽带网络)中从移动设备(例如,任何无线设备)至应用程序服务器/内容提供商的数据请求,通过利用分布式代理系统执行的内容缓存和监控,以达节约网络和电池资源的目的。
[0051] 图5是一框图,展示了在移动设备(例如,任何无线设备)上利用分布式代理和缓存系统(如图1B所示分布式系统),执行混合型IP和SMS省电模式的示例过程;
[0052] 图6是一流程图,展示了在移动设备(例如,任何无线设备)和远程代理之间的分布式内容缓存以及内容缓存的分布式管理的示例过程。
[0053] 图7是一交互图,展示了内容的分布式代理系统的缓存管理,内容经由长期保留请求传递至移动应用程序,同时保证被传递内容的新鲜度。
[0054] 图8展示了长轮询请求中的搜寻模式行为的时序图以及当长轮询确时序的时间特征的时序图。
[0055] 图9是一交互图,展示了轮询如何通过无线网络(或宽带网络)获取从移动设备(例如,任何无线设备)至应用程序服务器/内容提供商的数据请求,其可以被缓存在本地代理上并且由分布式缓存系统管理。
[0056] 图10是一交互图,展示了如何通过无线网络(或宽带网络)轮询来自应用程序服务器/内容提供商的内容,其可以被检测并本地缓存,应用程序服务器/内容提供商采用标识符中的缓存击败机制(例如,旨在击败缓存的标识符)。
[0057] 图11是一流程图,展示了收集关于请求的信息以及相关的识别缓存性能的响应并且缓存该响应的示例过程。
[0058] 图12是一流程图,展示了判断请求的响应是否能被缓存的决定流程的示例过程。
[0059] 图13是一流程图,展示了基于请求周期性和/或响应重复性判断潜在的缓存性能的示例过程。
[0060] 图14是一流程图,展示了动态调节给定请求或客户端的缓存参数的示例过程。
[0061] 图15是一流程图,展示了使用请求时间间隔以确定和设置轮询间隔或速率的示例过程,在该间隔或速率时代理服务器监视应用程序服务器/内容主机以代表移动设备(例如,任何无线设备)。
[0062] 图16是一示例时序图,展示了请求响应序列的各种类型的时间特征。
[0063] 图17A是时序图的一示例,展示了请求响应序列的时间特征。
[0064] 图17B是时序图的一示例,展示了长轮询的请求响应序列特性的时间特征。
[0065] 图18是一时序图,展示了可能适于缓存的周期请求的检测的示例。
[0066] 图19是一数据时序图,展示了请求间隔中的变化的检测以及响应中的服务器轮询速率的更新的示例。
[0067] 图20是一数据时序图,展示了服务具有缓存条目的前台请求的示例。
[0068] 图21是一数据时序图,展示了发生在过时的内容可能再次服务于请求应用程序之后的缓存失效的可能影响的示例。
[0069] 图22是一数据时序图,展示了为缓存条目考虑生存时间(TTL)组合的缓存管理和响应的示例。
[0070] 图23是缓存存储的组件API层的示例的图。
[0071] 图24是展示缓存存储的数据模型的示例的图。
[0072] 图25是展示在缓存存储中缓存条目的数据模型的例子的概念图。
[0073] 图26A-B是示例请求-响应对,展示了由具有变化参数的标识符处理的可缓存的响应。
[0074] 图27A展示了移动设备的应用程序或客户端的默认或初始轮询间隔的列表示例。
[0075] 图27B展示了移动设备的应用程序或客户端的调整后的轮询间隔的列表示例。
[0076] 图28是一流程图,展示为多个移动设备或移动设备用户执行的示例过程以经由多个事件批处理接收到的数据用于至给定移动设备的传输,以使得移动设备不需要在每次事件发生时建立或开启无线电。
[0077] 图29是一流程图,展示了在无线网络中通过操纵轮询间隔管理到移动设备的数据传输的示例性过程。
[0078] 图30是一流程图,展示了基于同一设备上的其他服务的时间间隔为第一服务产生调整的轮询间隔的示例性过程。
[0079] 图31是一流程图,展示了调整数据传输以优化被建立用于通过无线网络的传输的连接的示例性过程。
[0080] 图32是一机器3200的图像化表现,以包含指令集的计算机系统为例,执行该指令,使得机器3200运行本申请所探讨的一种或多种方法。
[0081] 发明详述
[0082] 以下详细说明和附图具有说明性,而并不解释为限制性。本申请描述了许多具体的细节,已完全公开本发明内容。然而,某些实例中,为避免说明内容的模糊化,一些惯用或常规细节并未描述。本发明公开的参照“一个实施例”或“某一实施例”可以,但不必然指参照同一实施例,并且参照指至少参照其中一个实施例。
[0083] 本说明书中参照“一个实施例”或“某个实施例”是指与所述实施例相联系的特定特性、结构或特征,都至少包含在所公开的一个实施例中。本说明书中出现的短语“一个实施例”并不必然指代同一实施例,也不表示除其他实施例之外的独立或替代实施例。此外,说明书中所述的各种特性可能仅呈现在某些实施例上,未呈现在其他实施例上。同样地,说明书中所述的各种要求可能仅限制某些实施例,而不限制其他实施例。
[0084] 本说明书中所使用的术语通常都在本领域内具有一般含义,在本申请公开范围以及每一术语所使用特定语境中。某些术语用于描述下文所探讨的公开内容,或说明书之中,是就所公开的说明书给业内人士提供额外指导。为方便起见,某些术语被突出显示,例如:加斜体和/或引号。突出显示不影响该术语的范围和含义,当上下文一致时,无论是否突出显示,该术语的范围和含义都保持不变。同一事件可能以多种方式进行说明,希望能够理解。
[0085] 因此,本申请所述的任一或多个术语可能使用替代用词和同义词,但无论本申请是否阐述或探讨某一术语,该术语也不具备任何特殊含义。某些术语存在同义词。阐述一个或多个同义词并不排除其他同义词的使用。本说明书中所使用的实例,包含本申请中的术语实例,仅用于说明,并无进一步限制所公开或任意示例术语的范围和含义之义。同样,该公开不限于本说明书中给出的各实施例。
[0086] 根据本申请如下所公开的实施例,各工具、设备、方法及相关结果的举例没有限制公开范围之义。注意:本申请在举例时使用的序号或子序号是为方便读者,绝不应限制公开的范围。除另行规定,本申请中所使用的所有技术和科学术语的含义与本申请所属领域技术人员的通常理解含义一致。一旦出现冲突,本文档,含定义在内均优先。
[0087] 本申请所公开的实施例包含调整数据传输以优化被建立用于通过无线网络、蜂窝网络或宽带网络的传输的连接的系统和方法。为了促进数据突发(以及因此来自多个数据源的数据传输)的调整,本发明的实施例调整数据传输过程以更接近(在临时的或其他相关意义中)数据的来源。换句话说,在一个实施例中,系统可以尝试调整部分或全部服务以按调整的时间间隔轮询数据和/或按调整的时间间隔接收新的内容,而不是在随机时间获取并缓冲数据,从而使得最小的内存中的缓冲是必要的以及使得需要在移动设备建立的连接的数量可以减少。
[0088] 有多种因素有助于数据的增殖:最终用户、移动设备、无线设备、移动应用程序和网络。随着移动设备的发展,这样与它们相关的各种元素—可用性、应用程序、用户行为、位置,从而改变网络与设备和应用程序进行交互的方式。
[0089] 公开的技术提供了全面的和终端到终端的解决方案,其通过利用移动内容具有可定义的或相关的“新鲜度”值的前提能够为运营商和设备制造商处理每个元素以同时支持移动或无线设备中的转移和数据的激增。移动内容的“新鲜度”可以被确定,无论是肯定的,或有些具有在被增强的用户体验范围内的容限的试探,或不受负面影响地,或受到负面影响但可以不被用户察觉地或在可容忍的阈值水平内地。
[0090] 公开的创新通过监测、分析、并应用规则(其可能是试探性地确定)应用程序(例如,移动应用程序)和伙伴(相应的服务器或其他的客户端)之间的交易(请求/响应)显而易见地确定了这样的“新鲜度”。此外,该技术还能够有效地缓存内容,其可能被它的始发/主机服务器标记为“不可缓存的”和标识一些“新鲜度”值,其可以稍后被用于执行应用程序特定的缓存。在一般情况下,“新鲜度”值有一个近似的最小值,其通常使用应用程序和对应的服务器/主机之间的更新间隔(例如,被发送请求时间间隔)进行确定。
[0091] 所公开的技术实施例之一包含,通过设备和应用程序活动的完整视图,最优化有线和无线网络和设备各方面连接的系统,该活动包含:设备所需加载或当前应用程序,控制访问类型(推送vs.拉式或混合式)、访问位置、访问单一区域的用户集中度、访问时间、用户与应用程序、内容或设备互动的频率,并利用如上信息定型合作型客户/服务器的流量或在缺乏合作型客户时,同时定型各移动设备的流量。因为公开的服务器未与特定的网络提供商进行绑定,服务器对所有服务提供商的网络性能具有可视性。服务器进行的最优化能适用所有设备,不论是运营商还是服务提供商,在漫游时,能够提升用户体验、管理网络利用率。如今带宽被视为无线网络的一大难题,对增加额外带宽,以解决访问需要,已进行了大量的研究——许多提高性能的解决方案和新一代标准,例如:那些通常被称为3.5G、LTE、4G和WiMAX,关注于提供加大的带宽。虽然由标准进行部分地处理,关键问题仍然是信令通道的带宽比数据通道更不足并且标准不能很好的解决电池寿命。
[0092] 所公开的技术实施例包含,例如,调节多个应用程序的请求,尽量减少需要的数个轮询请求;利用特定的内容类型,确定如何代理/管理连接/内容;以及应用与设备相联系的特定试探式、用户行为模式(用户与设备/应用程序互动的频率)和/或网络参数。
[0093] 现有技术的实施例还包括:各控件或RSS阅读器执行的移动、反复的HTTP轮询,网络节点远程调控(例如,网络操作中心(NOC)),从而大大降低了设备消耗的电池/功率、无线信道信令和使用的带宽。此外,程序卸载能透明地执行,因此无需改变现有的应用程序。
[0094] 一些实施例中,利用移动设备(例如,任何无线设备)的本地代理,自动检测符合特定规则(如时间间隔为15分钟)相同内容的反复请求(RSS资源,控件数据集),能实现这一功能。本地代理将轮询指派给服务器时,能自动缓存移动设备上内容(例如,代理服务器作为通信网络元件之一)。若内容变化,服务器则通知移动/客户端代理;若内容未变化(变化不充分,或改变方式或数额不明显),移动代理将其缓存的最新内容提供给用户(根本无需使用无线)。利用此方式,如果请求的内容被监控,且未标记新/更改,移动或无线设备(例如:移动电话,智能手机、M2M模块/调制解调器或其它任何无线设备等)无需打开(例如,因此打开无线电)或使用数据连接。
[0095] 自动添加被监控的内容源/应用程序服务器(如包括网址/内容)的逻辑还能检查各种因素:内容一致的频率,提出相同请求的频率(是否存在固定的时间间隔/模式?),请求数据的应用程序等。本地代理和/或服务器也可实施和执行类似规则,确定是使用缓存还是向原始资源请求数据。
[0096] 例如,请求在未预定/非预期时间提出(用户启动的检查),或连续几次在缓存已提出响应后,亦或应用程序处于后台运行或前台的频繁互动模式。随着越来越多移动应用程序或无线启用应用程序的特性以其在网络中的可用资源为基础,这也显得愈发重要。此外,所公开的技术可以消除不必要的网络对话,使试图最优化无线频谱应用的运营商从中受益。
[0097] 调整从服务器至接收器的数据突发
[0098] 在某些情况下,移动设备或移动客户端(例如,图1B和图2A-2E的本地代理175或275)可以接收来自在无线或宽带网络中的多个源(例如,不同的服务、不同的服务器、Web网站、网络的各个节点等)的数据。服务和移动客户端或移动设备之间的路由器/通信网络网络使得多种服务,包括由不同的服务器或内容主机托管的不同的服务,通过单个的物理连接或比原本需要的更少的连接传播变化至客户端。然而,因为由不同服务器托管的不同的服务(无需知道对方的行动)可以触发他们各自的在移动设备上的客户端/移动应用程序以在不同时间创建连接,一般存在有效或最优的从服务至移动设备的数据传输的调整的缺乏以与相应的移动客户端或应用程序进行通信。因此,共享连接的有效地利用的缺乏(或至少最小或次优)以及有时单个连接实际上只为单个服务或数据源提供足够的或现实的服务水平。
[0099] 本发明的实施例使数据突发从而进一步使来自多个源或服务器到移动设备的数据的传输是更有效的。例如,本发明的实施例调整的数据传输过程以更接近(在临时的或其他相关意义中)数据的源。换句话说,系统调整部分或全部服务以按调整的时间获取数据,而不是在随机时间获取并缓冲数据,从而使得最小的内存中的缓冲是必要的以及/或者使得数据的批处理发送至移动客户端/设备。
[0100] 例如,考虑一个例子,其中移动设备用户订阅,或以其他方式注册/签约了以下服务:
[0101] 1)来自雅虎的电子邮件:每30分钟在后台中的服务轮询以及当新的通知被接收时;
[0102] 2)来自通用IMAP的电子邮件:每13分钟一次的服务,没有通知可用;
[0103] 3)Twitter的智能代理:每4分钟一次服务轮询;
[0104] 4)RSS客户端的智能代理:每10分钟一次服务轮询;以及
[0105] 5)ESPN体育提要的智能代理:每3分钟一次服务轮询。
[0106] 如果所有的这些上述服务/手机客户端的一些在移动或无线宽带设备由他们原来的轮询间隔在随机时间启动,则轮询将相当均匀分布在每一个小时,很少或小的调整或彼此对应。由于这些服务不一定在服务器端知道对方(这种依赖不应该/不会建立在它们之间),移动设备(如移动设备的本地代理175或275)可以获得来自在调整这些努力以及因此在更好的优化数据传输中的移动应用程序的信息。
[0107] 一些实施例中,移动设备(例如,本地代理175或275)进行计算和分析以驱动在移动设备的移动应用的这些轮询间隔之间的调整。由于本地代理与公开的系统中的主机服务器100的远程代理服务器125协同工作以轮询原始应用程序服务器/内容提供商(例如,应用程序服务器/内容提供商110),所以本地代理125可以为一个或多个移动应用程序或客户端至远程代理125指定轮询间隔以用于轮询。当所有的服务(例如,移动客户端或移动应用程序)传播他们的轮询间隔到客户端(不是给双方),本地代理175或275的将看到整体画面。
[0108] 使用本地代理175或275具有的与单独的应用程序、用户、移动设备、操作系统或平台、网络条件、应用程序的优先级/流量或内容的临界有关的单独的轮询间隔和附加信息,本地代理175可以以智能的方式为每个移动客户端或应用程序调整轮询间隔以尽量减少所需要的数据传输的数量,以满足用户的期望和应用程序需求,从而不会引起应用程序发生故障。
[0109] 公开的策略是调整的轮询时间间隔以使得至少对某些移动应用程序、轮询、在时间间隔调整后,可以至少部分地临时地一致。例如,一种方法是调整和设时序间间隔为一组移动应用程序的原始的或默认的轮询间隔的共同因素或分母的倍数。在上述的例子中,这个所使的用分母可以为3分钟以及轮询时间间隔可以被调整为3分钟的倍数。在必要时,在一个例子中可以产生以下的调整的时间间隔:
[0110]服务/移动应用程序 初始轮询时间间隔 调整的轮询时间间隔
Yahoo! 30秒 30秒
IMAP 13秒 15秒
Twitter 4秒 6秒.
RSS 10秒 12秒
ESPN 3秒 3秒
[0111] 注意进一步地移动设备或本地代理可以确定每个服务的紧迫性并能基于基于应用程序类型或时间临界或其他设置如用户喜好,在为Twitter将4分钟凑整至6分钟或压缩到3分钟之间做决定以确保传递时间。本地代理也可以确定共同的时间间隔并不一定基于最小的时间间隔(这里是3分钟)而是基于最小的硬性时间间隔(这意味着,最小时间间隔不可以被扩展,例如,再基于用户的喜好、或应用程序类型/行为或其他优先级/临界参数)。在该例子中,在具有时间临界内容或高优先级应用程的Twitter或其他应用程序上的传递时间要求可以导致本地代理基于4分钟设置所有的时间间隔以确保Twitter要求被满足,同时其他时间间隔被向上而不是向下取整以节约资源。
[0112] 此外,本地代理确定值为(t0),或为各服务之间的每个轮询确定共有起点。当本地代理通信服务,这个数据返回至服务,在数据达到中可能存在延迟并且延迟在服务之间可以有所不同。为了保持同步,本地代理不能使用(t0)作为当前时间,相反可以可以固定开始时间为在服务中的相同的绝对时间点。
[0113] 服务器通常是在UTC中并可以使用NTP以留在同一时间,这提供了解决问题的一种方式。例如,本地代理可以挑选一分钟标记并传达标记给远程代理(代理服务器)。这一分钟标记可以是随机的,并且所选择的标记可作为这一分钟标记(例如:13)的下一次发生中所有服务的基础。在未来分钟标记可能是上到59分钟,并避免未轮询59分钟的延误或效率低下,该服务也可以计算任何必要的从t0返回的轮询时间间隔。
[0114] 一旦本地代理传播数据突发时间表(例如,调整后的时间间隔和/或起点)至公开的分布式系统的远程代理上的服务,它取决于远程代理以确保所接收的数据在指时序间间隔内也被发送回至移动设备,而不仅仅是在指定的时间间隔内代表移动客户端开始轮询。该服务可以使用来自过去的平均轮询时间以确保它准备好至少在某些时间在调整的突发中发送数据。本文描述的逻辑,在它们发现在轮询内新数据发送到客户端的情况下可以显著改善调整它们至移动设备(本地代理)的传播的多个服务到移动设备(本地代理)的可能性。
[0115] 其他示例。
[0116] 基于服务的通知:雅虎或其他移动客户端,其中包括在任何时间点可接收通知的实时通知。还有其他处理通知的方式:
[0117] 应用程序轮询并立即发送数据以满足实时通知的要求并能按计划使用调整后的轮询间隔并进一步调整接收到的其他数据的响应以调整下一后台的轮询。
[0118] 本地代理服务器与所有服务进行通信时间间隔的的共同基础(在上面的例子中,3分钟),以使得应用程序轮询器可为新的电子邮件安排轮询并将其在最早的共用时间间隔(这是可以计算的,例如,通过每3分钟一个步骤返回默认的/原始轮询时间间隔)发送到客户端。
[0119] 流量分类及策略
[0120] 一些实施例中,公开的代理系统是能够为选择流量(数据、内容、信息、更新等)建立策略以缓存和/或整形。此外,通过结合来自观察作出网络请求的应用程序的信息,获得来自应用程序中的明确信息,或获知应用程序到达的网络目的地,所公开的技术可确定或推断所发送的流量属于哪个类别。
[0121] 例如,在一个实施例中,移动或无线流量可以分类为:(a1)交互式流量或(a2)后台流量。区别在于(a1)中的用户正在积极等待响应,而(a2)的用户并不期待响应。这种分类可以配合或代替第二类型的流量分类使用:(b1)即时;(b2)低优先级;(b3)如果发出请求的应用程序在前台且活跃的,则为即时。
[0122] 例如,(b1)类别中的新的更新、消息或电子邮件为立即交付,但它仍然是(a2)后台流量-用户并不积极地等待。当它们来自活跃的聊天会话之外时,类似的分类适用于即时消息。在活跃的聊天会话期间,用户期待更快速的响应。这种用户的期望当在进行流量分类和策略执行中优化网络的使用和设备资源时被确定或推断并被考虑到。
[0123] 所述分类方案的应用程序的一些例子包括以下内容:(a1)交互流量可以被归类为(b1)即时-但(a2)后台流量也可以是(b2)或(b3)。低优先级传输例子是电子邮件或消息维护事件,例如,删除电子邮件或其他消息或将电子邮件在邮件或应用程序服务器中标记为已读。这样的传输通常发生在早于(a)时序器超过一个超时值(例如,2分钟)以及(b)发送的数据用于其他用途。
[0124] (b3)的例子是IM状态更新、股票代码更新、气象更新、状态更新、新闻提要。当应用程序的用户界面在前台和/或是活跃的(例如,由设备/电话的背光源的点亮或从其他传感器的状态所确定或推断出的表示)更新可以被认为立即通知服务器有东西要推送至设备。当应用程序没有在前台或不活跃时,这样的更新可被抑制直到应用程序到前台以及是活跃的。
[0125] 一些实施例,网络可以被选择或同时优化(a1)互动流量和(a2)后台流量。
[0126] 一些实施例中,由于无线设备或移动设备代理(单独或连同服务器代理)是能够分类为(例如)(a1)交互式流量或(a2)后台流量,其可以应用不同的策略至不同类型的流量。这意味着,它可以在内部不同地操作(a1)和(a2)流量(例如,通过允许交互式流量经过全部或部分的网络,并应用严格的流量控制至后台流量;或设备端只允许激活无线电的请求,如果其已接收到来自服务器的主机的内容已经更新,等等的信息)。
[0127] 当请求需要通过无线网络访问,所公开的技术可以请求无线层适用不同网络配置至不同的流量。根据不同的流量和网络,这可通过不同的手段实现:
[0128] (1)为(a1)使用3G/4G以及为(a2)使用2G/2.5G;
[0129] (2)明确为数据集FACH(前向接入信道)与DCH(专用信道)的不同数据集的使用指定网络配置,或以其他方式为后台流量要求较低/更多的网络高效数据率;或者
[0130] (3)为不同的数据集利用不同的网络接入点(接入点将被配置为使用类似上述(1)和(2)的不同的网络资源)。
[0131] 此外,3GPP快速休眠电话的改进以使得应用程序、操作系统或移动设备将意识到流量类型在未来更有效。具有流量分类的知识并能适当地利用快速休眠的公开系统的实施例可解决在快速休眠中确定的问题。通过这种方式,移动或宽带网络并不需要配置一个妥协的配置,该配置产生电池消耗和网络信令的不利影响。
[0132] 轮询时间表
[0133] 检测(或确定)轮询时间表允许代理服务器(分布式缓存系统的服务器端)尽可能使其轮询接近应用程序轮询。许多应用程序使用预定的时间间隔轮询(例如,每4小时或每30秒,在其他时间间隔)。客户端代理可以基于时间测量检测自动轮询并且为应用程序创建一个自动轮询配置文件。作为一个例子,本地代理尝试检测请求之间的时间间隔和在2、3、4之后的或更多的轮询,如果所有时间间隔各自都在1秒(或相对接近的另一测量)内,则确定一自动的速率。如果没有的话,客户端可从更大数量的轮询事件(例如,10-12个轮询)中收集数据并且应用统计分析以确定、计算或估计所使用的平均时间间隔的值。轮询配置文件传递到其被使用的服务器。如果它是一个频繁地手动请求,本地代理可以为这个应用程序用默认的时间间隔替代它,这个应用程序来自非临界应用程序的配置文件。
[0134] 在一些实施方案中,本地代理(例如,设备端代理)可能保持监控应用程序/客户端轮询并更新轮询间隔。如果其从当前值变化了30%以上(或另一个预定/动态/条件值),则它被传递到代理服务器(例如,服务器端代理)。这种方法可以称为“失去兴趣”的情况。在某些情况下,本地代理只能识别时间表之外作出的请求,认为他们是“手动的”,并相应地处理它们。
[0135] 应用程序类别/缓存模式
[0136] 在一些实施例中,应用程序可以被分成三组或缓存模式。取决于一个或多个条件,每个移动客户端/应用程序可以被分类为以其中的一种模式进行处理,或使用多个模式进行处理处理。
[0137] A)完全缓存—本地代理仅在代理服务器告诉本地代理更新时进行更新(例如,通过网络直接发送应用程序请求以由应用程序服务器/内容主机服务)。在这种模式中,本地代理可以忽略手动请求并且代理服务器使用检测到的自动配置文件(例如,体育比分的小程序、Facebook,每10、15、30或更多轮询)轮询应用程序服务器/内容提供商。
[0138] B)部分缓存—本地代理为自动请求或其他预定的请求使用本地或内部缓存(例如,应用程序自动刷新),但通过一些手工请求(例如,电子邮件下载、EBay或一些Facebook请求);以及
[0139] C)从不缓存(例如,实时股票行情、体育比分/状态,然而,在某些情况下,15分钟延迟引用可以安全地放置在30秒时间表—B乃至A)。
[0140] 实际应用程序或缓存模式分类可基于内容变化率和数据临界特征被确定。未分类的应用程序默认情况下可以设置为C类。
[0141] 背光灯和活动应用程序
[0142] 在一些实施例中,本地代理通过检测设备背光灯状态来启动。如果具有同一签名的请求被向代理服务器进行注册,显示屏灯“关闭”的请求可以被允许使用本地缓存,其轮询请求定向至的始发主机服务器/内容服务器。如果显示屏灯是“打开”,进一步的检测可以被作出以确定其是否是后台应用程序或者对于其它指示器,本地缓存条目可以或不可以被用于满足请求。当被识别时,本地条目可以被用于的请求可被相同地处理为显示屏灯关闭的状态。当缓存的数据可安全地用于处理请求时,前台请求可以使用上述应用程序分类以进行评估。
[0143] 图1A为系统示例图,其中主机服务器100促进流量管理、内容缓存和/或在客户端(例如,移动设备、任何无线设备或客户端设备150上的客户端/应用程序)和应用程序服务器或无线网络(或宽带网络)106或108中的内容提供商110之间的资源节约,以节约资源。主机服务器100可以进一步基于应用程序的行为、内容优先级、用户的活动和/或用户的期望来分类移动流量和/或实施交付策略。
[0144] 客户端设备150可以为能够创建连接,包括与其他设备、服务器和/或其他系统,如主机服务器100和/或应用程序服务器/内容提供商110的有线、无线和蜂窝连接,的任意系统和/或设备,和/或设备/系统的任意组合。客户端设备150通常包括一个显示屏和/或其他输出功能,以显示设备150和/或主机服务器100和/或应用程序服务器/内容提供商110所互动的信息和数据。
[0145] 例如,客户端设备150包含移动、手持或便携式、无线设备或非便携式设备和任意,但不限于:台式服务器、台式电脑、计算机集群或便携式设备,包括笔记本电脑,手提电脑,便携电脑,掌上电脑,移动电话,手机,智能手机,PDA,黑莓设备,Palm设备,手持平板电脑(如iPad或其它任何平板电脑),手持控制台,手持游戏设备或控制台,任何超级手机如iPhone,和/或任何其它便携式、移动、手持设备或固定无线接口如M2M设备,等等。一个实施例中,客户端设备150、主机服务器100和应用程序服务器110通过网络106和/或网络108,耦合在一起。一些实施例中,设备150和主机服务器100直接相连。
[0146] 客户端设备150的输入机制包含触摸屏键盘(包括单点触摸,多点触摸,平面或三维手势感应等)、物理键盘、鼠标、指针、触模板,运动检测器(如包括1轴,2轴,3轴加速度计等)、光传感器、电容传感器、电阻传感器、温度传感器、接近性传感器,压电器件,设备方向探测器(例如:电子罗盘、倾斜传感器、旋转传感器、陀螺仪、加速度计)或上述任意组合。
[0147] 通过如上所述的一个或多个输入机制或其他接收或检测信号,表明客户端设备150的用户活动,能用于公开的技术获取客户端设备150的上下文感知。客户端设备150的上下文感知一般包括,列举但不限于:客户端设备150活动或状态的确认、管理、用户活动/行为/互动感知、检测、传感、跟踪、趋势和/或应用程序类型(如移动应用程序)、行为、活动或运行状态等。
[0148] 本申请所公开的上下文感知还包含网络端上下文数据的知识和检测,并且包括网络信息,例如:网络容量、带宽、流量、网络/连接类型,和/或任何其他操作的状态数据。网络端上下文数据可以从网络106和/或网络108(例如:主机服务器和/或设备150)的网络服务提供商处(例如:手机提供商112和/或互联网服务提供商)接收和/或查询。除从客户端150确定的应用程序上下文感知外,应用程序上下文感知也可从各自的应用程序/服务提供商处110接收或获得/查询(通过主机100和/或客户端设备150)。
[0149] 主机服务器100可以使用,例如,客户端设备150、网络106/108、应用程序(如移动应用程序)、应用程序服务器/提供商110或上述任意组合所获取的上下文信息,管理系统流量,满足客户端设备150的数据要求(例如,满足应用程序或其他请求,包括HTTP请求)。一个实施例中,主机服务器100管理流量,满足所作出的数据请求,以响应显名或隐名用户103的请求和/或设备/应用程序的维护任务。管理流量能节约网络消耗,例如蜂窝网络,保证高效的带宽利用率。此外,主机服务器100能在最优化性能和用户体验的同时,管理和协调系统流量,秉承节约资源的总思路,最优化使用设备端150的资源(例如:包括但不限于:电池消耗电量、使用的无线、使用的处理器/内存)。
[0150] 例如,在节约电池方面,设备150能观察用户活动(例如,通过一个或多个输入机制观察用户的按键、背光状态或其他信号等),并且更改设备150的行为。基于用户活动或行为,设备150还可请求主机服务器100改变行为,降低消耗的网络资源。
[0151] 一个实施例中,利用主机服务器100和客户端设备150之间的分布式系统执行流量管理,以节约资源。分布式系统能包含服务器端100和设备/客户端的代理服务器和缓存组件,如服务器端100的缓存服务器135和客户端150的本地缓存185所示。
[0152] 本申请所公开上下文感知流量管理的功能与技术,节约网络(例如:网络106和/或108)和设备150的资源,放置于分布式代理和缓存系统。代理和缓存系统能部分或全部分布,并放置于给定的客户端设备150,和/或主机服务器100。分布式代理和缓存系统,将在如图1B所示的示例图作进一步描述。客户端设备150、主机服务器100和本申请中所述的相关组件中的代理和缓存部件执行该功能与技术,进一步详细描述分别参考示例图2A-3E。
[0153] 一个实施例中,客户端设备150与主机服务器100和/或应用程序服务器110通过网络106,可以为蜂窝网络和/或宽带网络,进行通信。为促进设备150和各应用程序服务器/内容提供商110的总体流量管理,以执行网络(带宽利用率)和设备资源(如电池消耗),主机服务器100可以与应用程序服务器/提供商110通过网络108,包含互联网(例如,宽带网络),进行通信。
[0154] 一般来说,客户端设备150与主机服务器100和/或应用程序服务器110通过网络106和/或108进行通信,网络可以为蜂窝网络、宽带网络、电话网络、开放网络,如互联网、专用网络,如内联网和/或外联网、或其任意组合。例如,互联网可以通过任何已知或方便协议提供文件传输、远程登录、电子邮件、新闻、RSS、云计算服务、即时消息、可视语音邮件、推送邮件、VoIP和其他服务,协议的列举包括,但并不限于:TCP/IP协议、UDP、HTTP、DNS、文件传输协议(FTP)、UPnP、NSF、ISDN、PDH、RS 232、SDH、SONET等。
[0155] 网络106和/或108可以是部分或全部运营网络的任意组合,结合后向客户端设备150和主机服务器100提供连接,对于服务的系统和设备,作为一个或多个网络。一个实施例中,开放网络,如互联网、专用网络,宽带网络,如内联网和/或外联网都能实现客户端设备
150通信的发送和接收。一个实施例中,安全通信协议,如安全套接层协议层(SSL)或安全传输层协议(TLS),也能实现此类通信。
[0156] 此外,一个或多个网络可以实现通信,包括但不限于:一个或多个WiMax、局域网(LAN)、无线局域网(WLAN)、个人区域网(PAN)、校园区域网(CAN)、城域网(MAN)、广域网(WAN)、无线广域网(WWAN)、或任何宽带网络并进一步由以下技术启用,例如:全球移动通信系统(GSM)、个人通信服务(PCS)、蓝牙、WiFi、固定无线数据、2G、2.5G,3G、4G,高级国际移动通信IMT-Advanced、预-4G、高级长期演进技术(LTE Advanced)、移动WiMax、WiMax2、WirelessMAN高级网络,增强型数据速率GSM演进技术、通用分组无线服务技术(GPRS)、增强型通用无线分组业务、iBurst、UMTS、HSPDA、HSUPA、HSPA、UMTS-TDD,1xRTT,EV-DO、消息传送协议,例如:TCP/IP、SMS、MMS、可扩展消息与存在协议(XMPP)、实时消息传送协议(RTMP)、即时信息和空间协议(IMPP)、即时消息、USSD、IRC或其他无线数据网络、宽带网络或消息传送协议。
[0157] 图1B为代理和缓存系统示例图,分布在主机服务器100和设备150之间,该设备促进管理设备与应用程序服务器/内容提供商(如源服务器)的网络流量,以节约资源和内容缓存。分布在主机服务器100和设备150之间的代理系统可以进一步基于应用程序行为、内容优先级、用户的活动和/或用户的期望来分类移动流量和/或实施交付策略。
[0158] 分布式代理和缓存系统可包括,例如,服务器端组件:代理服务器125(如远程代理)和服务器缓存135。如图所述,服务器端代理服务器125和缓存135能放置在主机服务器100内部。此外,服务器端代理服务器125和缓存135可部分或全部放置在主机服务器100外部,通过一个或多个网络106和108进行通信。例如,代理服务器125放置在主机服务器外部,而服务器缓存135保持在主机服务器100内部。亦或,代理服务器125放置在主机服务器内部,而服务器缓存135在主机服务器100外部。此外,代理服务器125和缓存135都可能部分置于主机服务器100内部,部分置于主机服务器100外部。
[0159] 分布式系统也能包括,一个实施例中,客户端组件,包括列举但不限于:本地代理175(如移动设备的移动用户)和/或本地缓存185,如图所示,能放置在设备150(如移动设备)内部。
[0160] 此外,客户端代理175和本地缓存185能部分或全部放置于设备150外部,并通过一个或多个网络106和108进行通信。例如,将本地代理175置于设备150外部,而本地缓存185保持在设备150内部。亦或,将本地代理175置于设备150内部,而本地缓存185则置于设备150外部。此外,代理175和缓存185都可能部分置于主机服务器100内部,部分置于主机服务器100外部。
[0161] 一个实施例中,分布式系统可以包括一个可选的缓存代理服务器199。缓存代理服务器199为一组件,由应用程序服务器/内容提供商110、主机服务器100、或网络服务提供商112,或以上任意组合,为促进网络流量管理而执行,目的在于节约网络和设备资源。代理服务器199可用于,例如,为设备150提供从一个或多个应用程序服务器/提供商110、主机服务器100,和/或网络服务提供商112的内容缓存。远程代理125也能全部或部分地执行内容缓存,以满足应用程序请求或设备150的其他数据请求。
[0162] 在上下文感知流量管理和最优化中,为节约网络资源(如蜂窝或其他无线网络),本地代理175跟踪移动设备150(例如,任何无线设备)的用户活动/行为和/或应用程序行为特征,并通过网络106与主机服务器100的代理服务器125组件进行通信,例如连接元数据。代理服务器125,依次与应用程序服务器/提供110相耦合,提供内容和数据,以满足设备150提出的请求。
[0163] 此外,本地代理175能够识别和检索移动设备的属性,包含一个或多个电池电量、设备的注册网络、无线状态、移动设备使用在是否(例如,由用户互动)。一些实例中,本地代理175在传输数据给代理服务器前,一定情况下,能够延迟、加快(预取)和/或修改数据,具体情形参见示例图2A至图3E的相关说明。
[0164] 本地数据库185能包含或耦合至本地代理175,用于本地存储数据的查询,在数据请求被转发到代理服务器125前,回应该数据请求。本地代理175通过检索存储在缓存存储器185的缓存内容,若该内容仍然有效,使用本地的缓存响应,以满足移动设备150某些应用程序的请求。
[0165] 同样,在本地代理服务器传输数据给内容源(例如:应用程序服务器/内容提供商110)之前,主机服务器100的代理服务器125可也延迟、加快或修改数据。此外,代理服务器
125利用设备属性和连接元数据,生成满足移动设备150应用程序请求的规则。代理服务器
125能够收集有关应用程序请求的实时流量信息,后续用于最优化与移动设备150或其他移动设备的类似连接。
[0166] 一般来说,本地代理175和代理服务器125清楚移动设备上执行的多个应用程序。本地代理175通常清楚移动设备的操作系统或平台,并且可能或可能不明确设备的制造商。
一些实例中,本地代理175可以选择自定义部分或全部具体设备。一些实施例中,本地代理
175可能被捆绑进无线模型,防火墙,和/或路由器。
[0167] 一个实施例中,主机服务器100在一些实例中,利用短消息服务中心(SMSC)112的存储和转发功能,由网络服务提供商所提供,与设备150进行互动,实现网络流量管理。请注意112也可以使用任何其他类型的替代信道,包括USSD或其他网络控制机制。如图3A-3E示例所作的详细描述,主机服务器100将内容或HTTP响应转发给SMSC112,若设备150可用则自动转发,若设备150当前不可用,则后续转发。
[0168] 一般来说,公开的分布式代理和缓存系统能最优化网络利用率,例如,通过回应本地缓存185的请求,本地代理175能减少需要通过网络106满足的请求数量。另外,本地代理175和代理服务器125能从通信数据中过滤无关数据。此外,为避免发送单个数据片段的协议消耗,本地代理175和代理服务器125也能累积低优先级数据,将其批量发送。本地代理
175和代理服务器125还能将流量压缩或转码,减少通过网络106和/或108发送的数据量。由于网络的使用频率降低,网络流量在各应用程序间能实现同步,网络106和/或108的信令流量则会减少。
[0169] 至于移动设备150的电池寿命,通过回应本地缓存185的应用程序或内容请求,本地代理175能减少无线模块的上电次数。当无线上电时,本地代理和代理服务器125能相互结合,累积低优先级的数据批量发送,以减少发送次数和/总时间。通过同时执行所有连接的批量数据传输,本地代理175能同步网络的使用。
[0170] 图2A为一框图,展示了放置于设备250的分布式代理系统客户端组件,管理无线网络的流量,以节约资源、内容缓存和/或流量管理。客户端代理(或本地代理275)可以进一步基于应用程序行为、内容优先级、用户的活动和/或用户的期望来分类移动流量和/或实施交付策略。
[0171] 设备250,可以为便携式或移动设备(例如,任何无线设备),如手提电话,通常包括:网络接口208、操作系统204、上下文API 206,和感知代理应用程序210或未感知代理应用程序220。注意:设备250指如图2A具体描述的移动设备,但不限定,该设备250可能是能够通过网络,包括有线或无线网络(例如:WIFI,蜂窝网络,蓝牙,LAN,WAN等),接收、传输信号的任意无线、宽带、便携式/移动或非便携式设备,以满足数据请求。
[0172] 网络接口208可以是网络模块,通过主机和外部实体支持的任何已知和/或方便协议,使设备250调解外部主机服务器250网络中实体的数据。网络接口208能包括:一个或多个网络适配卡、无线网络接口卡(例如:短信接口、WiFi接口、移动通信各代标准的接口,包括但不限于2G、3G、3.5G、4G、LTE等)、蓝牙、或者连接是否经由路由器、接入点、无线路由器、交换机、多层交换机、协议转换器、网关、网桥、桥接路由器、集线器、数字媒体接收器和/或中继器。
[0173] 设备250还能包含分布式代理和缓存系统的客户端组件,其中包括本地代理275(如移动设备的移动客户端)和缓存285。一个实施例中,本地代理275包括用户活动模块215,代理API225,请求/事件管理器235,具有应用程序协议模块248的缓存策略管理器245,流量整形引擎255和/或连接管理器265。流量整形引擎255可以更包含校准模块256和/或批处理模块257,连接管理器265可能会包括无线控制器266。请求/事件管理器235还能包含应用程序行为检测器236和/或优先级引擎241,其中应用程序行为检测器236还能包含模式检测器237和/或应用程序配置文件发生器239。本地代理275和所述的任一组件均可另外增加或减少组件/模块/引擎。
[0174] 本申请所使用的“模块”、“管理器”、“处理程序”、“检测器”、“接口”、“控制器”、“规范化器”、“发生器”、“验证器”或“引擎”包含一般用途,专用或共享处理器,和通常由处理器执行的固件或软件模块。基于具体实施或其他因素的考量,该模块、管理器、处理器、检测器、接口、控制器、规范化器、验证器或引擎,可集中或依功能分布实施。该模块、管理器、处理程序或引擎包含嵌入在计算机可读(存储)介质,具有一般或特殊用途的硬件,固件或软件,由处理器予以执行。
[0175] 本申请所使用的计算机可读介质或计算机可读存储介质,包含所有法定介质(如根据美国专利法第101条),并明确排除所有非法定的介质,本质上说排除的必要范围,使得包含计算机可读(存储)介质的权利要求能成立。已知的法定计算机可读介质包含硬件(例如:寄存器,随机存储器(RAM)、非易失(NV)存储器,仅举几例),但可能或可能不限于硬件。
[0176] 一个实施例中,用于管理网络流量的部分分布式代理和缓存系统放置在设备250内或与其进行通信,包含本地代理275(移动客户端)和/或缓存285。本地代理275能为设备250提供接口,供用户访问设备的应用程序和服务,包含电子邮件、即时消息、语音信箱、可视语音邮件、源订阅、互联网、游戏、效能工具或其他应用程序等。
[0177] 代理服务器275通常独立于应用程序,能被应用程序(例如,感知代理应用程序210和未感知代理应用程序220或移动应用程序)用于打开至远程服务器的TCP连接(例如:图1A-1B示例中的服务器100和/或图1B和图3A示例中的代理服务器125/325)。一些实例中,本地代理275包含代理API 225,可以选择用于感知代理服务器应用程序220(或移动设备(例如任何无线设备)上的应用程序(移动应用程序))的接口。
[0178] 应用程序210和220通常包含用户应用程序,控件,软件,基于HTTP的应用程序,web浏览器,视频或其他多媒体播放器或下载应用程序,视频游戏,社交网络应用程序,电子邮件客户端,RSS管理应用程序,应用商店,文档管理应用程序,生产力促进应用程序等。设备制造商或网络服务提供商能够向应用程序提供设备的操作系统,该操作程序可由用户下载或其他人提供。
[0179] 本地代理275的一个实施例包含,或耦合到上下文API 206。上下文API 206可能为操作系统204或设备平台的一部分,亦或独立于操作系统204,如图示。操作系统204可包含任意操作系统,但不限于:以前、目前和/或未来版本/版本的Windows Mobile,iOS,Android,Symbian,Palm OS,Brew MP,Java 2 Micro Edition(J2ME),黑莓等。
[0180] 上下文API206可能为操作系统204的插件或设备250上特定客户端应用程序。上下文API206能够检测用户的指示信号或设备活动,例如检测位置,手势,设备位置的变化,设备背光,按键,点击,触摸屏被激活,鼠标点击或检测其他指针设备。上下文API206可以耦合至设备250的输入设备或传感器来识别这些信号。此信号通常包含接收的输入信息,以响应用户在设备250输入设备/机制的明确输入,和/或收集到的环境信号/上下文线索,在设备250内或毗邻处检测得到(如光,动作,压电等)。
[0181] 一个实施例中,用户活动模块215与上下文API206互动,用于识别、确定、推断、检测、计算、预测和/或预计设备250上用户活动特征。用户活动模块215汇总上下文API206收集的各输入值,生成用户活动特征的侧写。这一侧写由用户活动模块215利用各临时特征生成。例如,通过提供用户在给时序间所做之事或未做之事,瞬间生成实时的用户活动侧写(例如由时间窗口定义最后一分钟或最后30秒等);用户活动侧写也能由应用程序或网页定义的“时域”生成,“时域”描述了设备250上进行的特定任务,或在特时序间内用户行为的特征(例如前2小时或前5小时)。
[0182] 此外,用户活动模块215通过描绘用户活动和行为的历史趋势(例如1周,1个月,2个月等),生成上述特征侧写。这些历史文件还可用于推断用户行为的趋势,例如:不同时间的访问频数、每周各天访问频率的趋势(周末或工作日)、基于位置数据的用户活动趋势(例如IP地址,GPS或基站协调数据)或位置数据的变化(例如基于用户位置的用户活动,或基于用户在忙碌中或在外旅行的用户活动等),以获取用户活动特征。
[0183] 一个实施例中,用户活动模块215能检测和跟踪设备250上应用程序、文档、文件、窗口、图标和文件夹的用户活动。例如,当一个应用程序或窗口(如Web浏览器或任何其它类型的应用程序)被退出,关闭,最小化,最大化,打开,移至前台,或后台,播放多媒体内容时,用户活动模块215都能检测到。
[0184] 一个实施例中,设备250上的用户活动特征可以用于本地调整设备行为(如移动设备或任何无线设备),最优化消耗资源,如电池/功率消耗和更普遍地,包含内存、存储和处理能力的其他设备资源的消耗。一个实施例中,基于耦合到用户活动模块215的用户行为特征,可调整设备使用的无线(如通过连接管理器265的无线控制器266)。例如,根据设备250上的用户活动特征,无线控制器266打开或关闭无线。此外,无线控制器266能依据用户活动特征,调整无线的功耗模式(如高功耗模式或低功耗模式)。
[0185] 一个实施例中,设备250的用户活动特征也可用于引发其他与设备250存在通信(如通过蜂窝网络或其他网络)的设备(例如其他计算机、移动设备、无线设备或非便携式设备)或服务器(例如图1A-B和图3A示例的主机服务器100和300),修改其与设备250的通信频率。利用用户活动模块确定的用户行为特征信息,本地代理275能指示远程设备如何校准其通信频率(例如,若用户处于闲置状态,降低通信频率,如数据推送频率,或当新数据、更改数据或某重要性的数据可用时,请求远程设备通知设备250等)。
[0186] 在一个实施例中,用户活动模块215能确定用户行动的特征,作为响应确定用户行为特征,指示用户在闲置一段时间后的活跃,请求远程设备发送因之前降低通信频率的缓冲数据(例如图1A-B和图3A示例的主机服务器100和300)。
[0187] 此外,或本地代理275可另外选择将设备250的用户活动特征传输给远程设备(例如图1A-B和图3A示例的主机服务器100和300),并且远程设备确定改变与设备250的通信频率,以节约网络资源和设备250资源。
[0188] 实施例之一的本地代理275还包含请求/事件管理器235,能检测、识别、截获、处理和管理设备250提出的数据请求,例如通过应用程序210和/或220,和/或直接/间接的用户请求。基于事件特征,请求/事件管理器235能够确定处理给定的请求/事件或一组请求/事件的方式和时间。
[0189] 请求/事件管理器235能对设备250上应用程序和/或用户作出的请求或事件进行优先级排序,例如通过优先级引擎241。该请求/事件管理器235通过使用规则集,确定请求/事件的重要性或优先级,例如,根据事件的时间敏感性、事件内容的时间敏感性、事件的时间紧迫性,事件中传输数据的时间紧迫性,和/或应用程序发出请求的时间紧迫性/重要性。
[0190] 此外,事件特征也取决于该事件是否为用户互动或其他用户在设备上启动的操作(例如用户与应用程序(例如,移动应用程序)的互动)。一般来说,一项时间紧迫性事件包含一项由用户启动的数据传输事件,能被列为优先事件。事件特征还取决于根据所请求的事件中将传输或预计传输的数据量。例如,跟据需传输的数据量,连接管理器265调整无线模式(例如通过无线控制器266调整高功耗或低功耗模式)。
[0191] 此外,无线控制器266/连接管理器265能依据事件的时间紧迫性/敏感性,调整无线的功耗模式(高或低)。当启动或检测到一项时间紧迫性事件时,无线控制器266触发使用高功耗无线模式(例如:由用户启动的数据传输事件,前台运行的应用程序,或符合特定条件的其他事件)。
[0192] 一般来说,优先级通常为默认设置,例如,基于设备平台、设备制造商、操作系统等。优先级也能,或由特定的应用程序另外设置,例如,Facebook应用程序(例如,移动应用程序)为自己设置各项事件的优先级(例如,状态更新的优先级高于添加朋友请求或戳请求,发送消息请求的优先级高于删除消息请求),电子邮件客户端或IM聊天客户端有自己的优先级配置。优先级引擎241可能包含分配优先级的规则集。
[0193] 优先级引擎241还可以跟踪网络提供商对应用程序或事件优先级确定请求/事件整体优先性状态的限制条件或详细说明。此外,优先级部分或全部,明确或隐含地取决于用户的喜好。用户一般能设置不同层次的优先级,例如为各时域、类型或应用程序设置具体的优先级(以浏览时域、游戏时域和IM聊天时域为例,用户可能设置游戏时域优先于IM聊天,而IM聊天的优先于浏览时域)。用户能设置应用程序的具体优先级(例如用户可设置Facebook的相关事件优先于LinkedIn的相关事件)、事件类型的具体优先级(例如所有应用程序的发送信息请求优先于删除信息请求,所有日程相关的事件具有优先级等),和/或文件夹的具体优先级。
[0194] 优先级引擎241跟踪和解决不同实体优先级设置的冲突。例如,用户具体的手动设置可能优先于设备操作系统设置,网络提供商参数/限制条件(例如,默认设置的网络服务领域,地理区域,具体时间或基于服务/费用类型的设置)可能会限制用户的具体设置和/或应用程序设置的优先级。一些实例中,用户的同步手动请求能优先于一些、大多数或全部的优先级设置,一经提出,该同步请求的执行不受单独分配的优先级或请求操作在所有优先级事件中的排序限制。
[0195] 优先级能以任何已知和/或简便方式在内部被指定并跟踪,包含但不限于:二进制表示形式,多值表示形式或分级表示形式,所有被认为的都在公开技术的范围内。
[0196]
[0197]
[0198] 表1
[0199] 如上述表1所示,为描述目的,展示了二进制表示方案中分配示例事件优先级的一些例子。针对另外的事件类型、请求或事件,存在其他的分配方式,如上所述,优先级的分配可在更多或更少层级进行,例如,时域层或应用程序层等。
[0200] 如上述表格的例子所示,优先级较低的请求/事件通常包含:更新信息状态为已读,未读、删除信息、删除联系人;优先级较高的请求/事件,一些实例包含:状态更新、新IM聊天消息、新电子邮件、日程事件的更改/取消/删除、手机游戏时域中的事件,其他娱乐相关事件、网络购买或在线购物确认,加载或下载附加内容请求,通讯录相关事件,更改设备配置的事件,位置感知或基于位置的事件/事件,或任何由用户启动的事件/请求/事件,或已知、预计或猜想用户在等待响应等。
[0201] 收件箱整理事件(如电子邮件或其他类型的消息),通常被认为是低优先级和不含紧迫性的事件,一般不会触发使用设备250的无线。具体来说,在预定的整理时间内,若没有无线,移除旧邮件或其他内容的整理事件可作为其它通信的“背驮”事件。例如,如果用户喜好的设置为“信息保存7天”,当启动无线时,再删除邮件,而非一旦邮件超过7天,就给设备的无线上电以启动设备250的删除信息操作。如果已打开无线,则在预时序间执行整理事件。
[0202] 请求/事件管理器235,可以利用请求的优先级(如通过优先级引擎241)管理设备250的输入流量,以最优化资源(例如,为节约电池更有效地利用设备无线)。例如,若无线未启用,低于一定优先级的事件/请求可能不会触发使用设备250上连接管理器265控制的无线。与此相反,当检测到某一事件请求超过一定优先级,无线控制器266则打开无线,发送该请求。
[0203] 一个实施例中,利用优先级分配(如由本地代理275或其他设备/实体确定),引发远程设备修改其与移动设备或无线设备的通信频率。例如,远程设备被配置为当重要性较高的数据可以被发送到移动设备或无线设备时,发送通知至设备250。
[0204] 一个实施例中,事件优先级结合用户活动特征,能用于整形或管理流量,如通过流量整形引擎255。例如,检测到用户处于休眠或不活跃状态,作为响应,流量整形引擎255等待一段时间,再发送设备250的低优先级事件。此外,流量整形引擎255可以允许累积多个低优先级事件,实现设备250的批量传输(如通过批量模块257)。一个实施例中,用户能设置、配置或调整优先级。例如,表1相同或类似表格中所述内容能在设备250的用户界面上获取,并且用户可用来调整或查看优先级。
[0205] 批量模块257可以基于一定标准启动批量传输。例如,批量传输(例如,事件重复出现,其中一些事件发生在不同的实例)在检测到一定数量的低优先级事件,或在第一批低优先级事件启动后一时序间,可能启动。此外,当设备250启动或检测到较高优先级事件时,批量模块257能启动所累积低优先级事件的批量传输。不然当其他原因触发使用无线时,批量传输也能被传输(例如,从远程设备,如主机服务器100或300处接收数据)。一个实施例中,当发生批量传输时,可以执行即来的整理事件(整理收件箱)或其他低优先级的事件。
[0206] 一般来说,批量功能可以在事件/事件层,应用程序层,或时域层被禁用或启用,根据以下任一或组合:用户配置、设备局限性/设置、制造商详细说明、网络提供商参数/限制性、平台具体限制条件/设置,设备操作系统设置等。一个实施例中,当应用程序/窗口/文件被关闭、退出或移至背景模式时,批量传输被启动;用户可以选择在启动批量传输前进行提示,用户还可以手动触发批量传输。
[0207] 在一个实施例中,本地代理275通过缓存285中的缓存数据,本地调整设备250使用的无线。若缓存285所存储的内容能满足设备250的请求或事件,无线控制器266无需激活无线,向远程实体发送请求(例如图1A和图3A所示主机服务器100,300,或内容提供商/应用程序服务器,如图1A和1B示例中的服务器/提供商110)。正因如此,本地代理275可以使用本地缓存285和缓存策略管理器880本地存储数据,满足数据请求,为节约网络资源和消耗的设备电池减少或降低设备使用的无线。
[0208] 利用本地缓存,一旦请求/事件管理器225截获设备250应用程序的数据请求,本地仓库285被查询后确定是否具有本地存储的响应,并确定该响应是否有效。若本地缓存285存在一个有效响应,设备250可以将该响应提供给设备的应用程序,而无需访问蜂窝网络或无线宽带网络。
[0209] 若不存在有效响应,本地代理275可以查询远程代理服务器(如图3A所示的代理服务器325),以确定是否存在远程存储的有效响应。若存在,远程存储的响应(例如,存储在服务器缓存135或如图1B示例中的可选缓存服务器199)可以提供给移动设备,无需移动设备250访问蜂窝网络,从而降低了消耗的网络资源。
[0210] 若不存在有效响应,或缓存的响应不适用被截获的数据请求,本地代理275,如缓存策略管理器245,可以将该数据请求发送至远程代理(如图3A所示代理服务器325),后者将数据请求转发内容源(如图1A所示应用程序服务器/内容提供商110),内容源通过远程代理提供响应,这将在图3A示例主机服务器300的相关说明中作进一步详述。缓存策略管理器245可以管理或处理使用不同的协议请求,包含但不限于:HTTP、HTTPS、IMAP、POP、SMTP、XMPP和/或ActiveSync。缓存策略管理器245能为本地数据库285中的数据请求本地存储响应,作为缓存条目,以满足以后相同或类似的数据请求。
[0211] 缓存策略管理器245可以请求远程代理监控数据请求的响应,并且当检测到数据请求的意外响应时,远程代理通知设备250。在这种情况下,当被通知意外响应时(例如,新数据、更改数据、附加数据等),缓存策略管理器245能够清除或替换设备250上本地存储的响应。一个实施例中,缓存策略管理器245能够检测或识别具体请求所使用的协议,包含但不限于:HTTP、HTTPS、IMAP、POP、SMTP、XMPP和/或ActiveSync。一个实施例中,本地代理275应用程序的具体处理程序(例如通过缓存管理器245的应用程序协议模块246)允许最优化任何端口映射到分布式代理服务器上处理程序的协议(例如图3A示例中代理服务器325的端口映射)。
[0212] 在一个实施例中,本地代理275通知远程代理,以便其监视从内容源接收的数据请求响应的更改结果,在将结果返回至移动设备之前更改结果,例如,当内容源的数据请求所产生的结果与返回到移动设备的结果一致。一般来说,本地代理275能使用本地缓存的内容,为设备250上应用程序模拟应用程序服务器的响应。这可以防止利用蜂窝网络传输不可获取的新/更改数据,从而释放网络资源,防止网络堵塞。
[0213] 一个实施例中,本地代理275包含应用程序行为检测器236,用于跟踪、检测、观察、监控可访问的应用程序(例如感知代理应用程序210和/或未感知代理应用程序220)或设备250上安装的应用程序。本地代理275可使用应用程序行为,或设备250上可访问应用程序所检测行为模式(如通过模式检测器237),最优化所需的无线网络流量,以满足这些应用程序的数据需要。
[0214] 例如,根据所检测的多个应用程序的行为,流量整形引擎255可以通过网络(无线网络)校准至少一些应用程序的内容请求(如通过校准模块256)。校准模块256能延迟或加快之前接收的请求以实现校准。当请求经校准后,流量整形引擎255能利用连接管理器进行网络论调,以满足应用程序的数据请求。多个应用程序的内容请求能以行为模式或规则/设置为基础进行校准,例如包含多个应用程序(音频,视频,文本等)请求的内容类型、设备(例如,移动设备)参数、和/或网络参数/流量情况、网络服务提供商限制/详细说明等。
[0215] 一个实施例中,模式检测器237可以检测由多个应用程序所提请求的重复,例如通过跟踪应用程序的行为模式。跟踪模式包含:检测某些应用程序,后台进程,定期轮调应用程序服务器,一天的某些时间,一周的某些天,以预定方式定期执行,某些频率,响应某些类型事件的某些频率,响应某种类型的用户查询,请求内容一致的频率,请求间歇,提出请求的应用程序,或任何上述组合。
[0216] 流量整形引擎255能利用这类重复,卸载从内容源(如图1A所示应用程序服务器/内容提供商110)轮询的内容,使得本该在移动设备或无线设备250执行的应用程序请求,转而由设备250的远程代理执行(如图1B所示代理服务器125或图3A所示代理服务器325)。当重复请求匹配某一规则时,流量整形引擎255卸载查询内容。例如,相同资源的多个事件或请求具有完全相同的内容或返回的值或者基于请求和响应之间的可重复时间周期的检测,如在白天的特时序间请求的资源。卸载该轮询能降低移动设备250为重复内容轮询,创建与内容源的无线(蜂窝或其它无线宽带)连接所需的总带宽消耗。
[0217] 由于卸载查询内容,当未检测到内容源查询内容的更改时,存储在本地缓存285的缓存内容能被提供给设备250,满足数据请求。正因为如此,当数据没有更改时,应用程序的数据需求能得到满足,而无需使用无线或占用蜂窝无线网络的带宽。当数据已更改和/或接收到新数据时,被卸载内容的远程实体能通知设备250。远程实体可以为如图3A示例中的主机服务器300。
[0218] 一个实施例中,本地代理275能降低所需/使用以维持TCP/IP连接的定期保活信息(心跳信息),其会消耗大量电能,从而不利于移动设备的电池寿命。本地代理(如心跳管理器)的连接管理器265能检测、识别,并拦截任何或所有从应用程序发送的心跳(保活)信息。
[0219] 心跳管理器267可以阻止任何或所有通过蜂窝或其他网络发送的心跳消息,并改由分布式代理系统的服务器组件(如图1B所示)生成并发送的心跳消息,以维持与后台的连接(如图1A示例中的应用程序服务器/提供商110)。
[0220] 本地代理275通常代表所述单一管理器、模块、和/或引擎的任一或部分功能。本地代理275和设备250在不偏离本申请所公开新颖性范围时,可另外增加或减少组件;增多或减少功能;整体或部分。
[0221] 图2B为一框图,展示了如图2A所示缓存系统中的组件的进一步示例,其能够为移动应用程序行为和/或网络条件缓存和适配缓存策略。
[0222] 在一个实施例中,缓存策略管理器245包括元数据发生器203、缓存查找引擎205、缓存适当性决策引擎246、轮询时间表发生器247、应用程序协议模块24、缓存或连接选择引擎249和/或本地缓存验证器244。缓存适当性决策引擎246可进一步包括时序预测器246a、内容预测器246b、请求分析器246c和/或响应分析器246d,以及缓存选择引擎249包括:响应排程器249a。元数据生成器203和/或缓存查找引擎205耦合至缓冲285(或本地缓存)以用于缓存条目及其查询的修改或增补。
[0223] 缓存查找引擎205可以进一步包括ID或URI过滤器205a、本地缓存验证器244可进一步包括TTL管理器244a,以及轮询时间表发生器247可以进一步包括时间表更新引擎247a和/或时间调整引擎247b。缓存策略管理器245的一个实施例包括应用程序缓存策略库243。在一个实施例中,应用程序行为检测器236包括模式检测器237、轮询间隔检测器238、应用程序配置文件发生器239和/或优先级要求241。轮询间隔检测器238可进一步包括具有响应/请求搜寻引擎238b的长轮询检测器238a。轮询间隔检测器238可进一步包括长轮询搜寻检测器238c。应用程序配置文件发生器239可以进一步包括响应延迟间隔追踪器239a。
[0224] 缓存适当性决策引擎246可以检测、评估或确定来自内容源(例如,图1B所示例子中的应用程序服务器/内容提供商110)的内容是否与移动设备250进行交互,以及是否具有可适合于缓存的内容。例如,决策引擎246可以使用与针对移动设备250启动的请求收到的请求和/或响应有关的信息以确定缓存能力、潜在缓存能力或者无缓存能力。在某些情况下,决策引擎246可以初步确认请求是否被定向到黑名单目的地或请求本身是否来源于黑名单的客户端或应用程序。如果是这样的话,额外的处理和分析可能不会被决策引擎246执行,并且请求可以被允许通过空中发送到服务器来满足该请求。黑名单目的地或应用程序/客户端(例如,移动应用)可被在本地代理(例如,在应用程序配置文件存储库242)中本地地维持或远程(例如,在代理服务器325或其他实体中)维持。
[0225] 在一个实施例中,决策引擎246,例如,通过请求分析器246c,收集与在移动设备250产生的应用程序或客户请求有关的信息。请求信息包括请求特征信息,其包括,例如,请求方法。例如,请求方法可以表示移动应用程序或客户端产生的HTTP请求的类型。在一个实施例中,如果请求方法为GET请求或POST请求,响应一个请求可以被识别为可缓存的或潜在的可缓存的。其他类型的请求(例如,选项、头部、提交、删除、跟踪或连接)可能会或可能不会被缓存。在一般情况下,具有不可缓存请求方法的HTTP请求将不会被缓存。
[0226] 例如,请求特征信息可以进一步包括关于请求的大小的信息。主体大小超过一定尺寸的响应请求(如,HTTP请求)将不会被缓存。例如,如果有关请求的信息表明请求的请求主体大小没有超过一定的尺寸,缓存能力能够被确定。在某些情况下,最大可缓存请求体的大小可以设置为8092字节。例如,在其他情况下,取决于网络容量或网络运营商的特定设置,可能会使用不同的值。
[0227] 在一些情况下,基于一组标准,例如,标准指定内容的时间关键性,该内容正从内容源被请求,来自给定应用程序服务器/内容提供商(例如,图1B的服务器/内容提供商110)中的内容被确定为适合于缓存。在一个实施例中,本地代理(例如,图1B和图2A的本地代理175或275)应用一个选择标准以存储主机服务器中的内容,其被应用程序请求作为移动设备上的本地缓存中被缓存的元素以满足由应用程序作出的后续请求。
[0228] 进一步地基于检测到的请求和/和接收到的响应的模式模式,所述请求从移动设备250发送(例如,由移动应用程序或设备250上其它类型的客户端),缓存适当性决策引擎246可以检测请求和/或响应中的可预测性。例如,由决策要求246(例如,请求分析器246c)收集的请求特征信息,可进一步包括在请求和其它由移动设备上同一客户端生成的请求或其他定向到同一个主机(例如,具有相同或相似的标识参数)的请求之间的可预测信息。
[0229] 当由相同客户端产生的请求和其他请求,以固定速率或几乎固定速率或以具有一些可识别的或部分地或全部地可复制的变化模式的动态速率发生时,周期性可以被决策引擎246或请求分析器246c所检测。如果请求以一些可识别的模式被提出(例如,定期的间隔、具有可检测的模式的间隔或趋势(例如,增加、减少、恒定的,等等),时序预测器246a中可以确定由设备上给定应用程序作出的请求是可预测的并确定它是潜在的适于缓存,至少从时序的角度来看。
[0230] 可识别的模式或趋势通常可以包括任何应用程序或客户端行为,其可被本地地模拟,例如,在移动设备上250的本地代理275上,或被远程模拟,例如,由主机300上的代理服务器325,或本地和远程模拟结合的模拟应用程序的行为。
[0231] 在一个实施例中,决策引擎246,例如,通过响应分析器246d,可以收集关于移动设备250产生的应用程序或客户端请求的响应的信息。响应通常是从应用程序的服务器或主机(例如,移动应用程序)或在移动设备250上发送请求的客户端处接收。在某些情况下,移动客户端或应用程序可以是应用程序的移动版本(例如,社交网络、搜索、旅游管理、语音邮件、联系人管理器、电子邮件)或通过网络浏览器或桌面客户端访问的网站。
[0232] 例如,响应特征信息可以包括是否传输编码或块传输用于发送响应的编码的指示。在某些情况下,具有传输编码或块传输编码的HTTP请求的响应未被缓存,因此也可从进一步分析中被删除。基本原理是分块响应通常是很大的和非最佳缓存的,因为这些事件的处理可能减慢整体性能。因此,在一个实施例中,当传输编码未用于发送响应中时,可缓存能力或潜在的可缓存能力可以被确定。
[0233] 此外,响应特征信息可以包括相关联的响应状态码,其可被响应分析器246d识别。在某些情况下,具有不可缓存状态码的HTTP响应通常不被缓存。响应分析器246d可以从响应中提取状态码,并确定它是否匹配缓存或不可缓存的状态码。一些可缓存的状态码以举例的方式包括:200-OK、301-重定向、302-发现、303-查看其他、304-未修改、307-暂时重定向或500-内部服务器错误。一些不可缓存状态码可以包括,例如,403-禁止或404-未找到。
[0234] 在一个实施例中,如果响应信息不表示不可缓存状态码或表示可缓存的状态码,则可缓存能力或潜在的可缓存能力可以被确定。如果响应分析器246d检测与给定响应相关的不可缓存的状态码,则具体的事件(请求/响应对)可能被从进一步的处理中淘汰并在临时性、半永久性或永久性的基础上被确定为不可缓存。如果状态码表示可缓存能力,事件(例如,请求和/或响应对)可能会受到进一步的处理和分析以确定可缓存能力,如图9-13的示例流程图中所示。
[0235] 响应特征信息还可以包括响应大小信息。在一般情况下,如果响应未超过一定的大小,响应可被本地缓存在移动设备250上。在某些情况下,默认最大被缓存的响应的大小被设置为128KB。在其他情况下,基于操作条件、网络条件、网络容量、用户偏好、网络运营商的要求,或其他应用程序特性、用户特性和/或设备特性原因,最大可缓存的响应的大小可能是不同的和/或动态调整的。在一个实施例中,响应分析器246d可以识别响应的大小,并且如果响应的大小不超过给定阈值或最大值,则可缓存能力或潜在的可缓存能力可被确定。
[0236] 此外,响应特征信息可以包括请求的响应的响应主体信息,以及其它请求的其它响应的响应主体信息,其它请求由在移动设备上的相同客户端生成或被定向至相同内容主机或应用服务器。如果由缓存条目提供,响应和其它响应的响应主体信息可以被比较,例如,由响应分析器246d进行比较以防止动态内容的缓存(或频繁变化的以及不能有效配合于缓存条目的内容的响应,如财务数据、股票行情、新闻、实时的体育赛事活动等),如不再相关的或最新的内容。
[0237] 缓存适当性决策引擎246(例如,内容预测器246b)可以明确地识别重复性或识别重复性、潜在重复性或从内容源(例如,图1A-B的示例中所示的内容主机/应用程序服务器110)接收的响应中的可预测性的指示的。重复性可以通过,例如,跟踪从内容源接收的至少两个响应被检测,并确定两个响应是否相同。例如,如果响应的响应主体信息和由相同移动客户端发送的其它响应或或定向到同一主机/服务器其它响应的响应主体信息是相同的或基本相同的,则可缓存能力可以由响应分析器246d确定。两个响应可能是或可能不是在响应连续中被发送的响应。在一个实施例中,为了一般的应用程序和/或特定的请求,接收到的来自给定应用程序请求的响应的散列值被用来确定内容的可重复性(带或不带试探)。对于某些应用程序或在某些情况下,可能需要额外的相同的响应。
[0238] 接收内容中的重复性不需要100%确定。例如,如果一定数量或一定比例的响应是相同的或类似的,响应可以被确定为是可重复的。一定数量或一定比例的相同/相似的响应可以被跟踪一选时序间段,设置为默认或基于应用程序产生的请求被设置(例如,无论应用程序是具有不断更新的高动态或具有不频发更新的低动态)。任何指定的可预测性或可重复性,或者可能的可重复性,可以由缓存内容的分布式系统所利用以被提供至移动设备250上的请求应用程序或客户端。
[0239] 在一个实施例中,对于长轮询类型的请求,当前两个响应的响应延迟时间是相同的、基本相同的,或检测到在间隔中的增加时,本地代理175可以开始在第三请求上缓存响应。一般情况下,前两个响应的接收到的响应应该是相同的,以及基于验证第三个请求的接收到的第三响应是相同的(例如,如果R0=R1=R2),第三响应可以本地缓存在移动设备上。取决于应用程序的类型、数据的类型、内容的类型、用户偏好或运营商/网络运营商的规格,可能需要更少或更多的相同的响应以启动缓存。
[0240] 为长轮询增加相同响应的响应延迟可以指明搜索时期(例如,给定网络将允许一时段,在该时段中移动设备上的应用程序/客户端正在寻求的请求和响应之间的最长时间,显示时序特性的时序图被在图8中说明),搜索时期由应用程序行为检测器236的长轮询搜索检测器238c检测。
[0241] 使用T0、T1、T2的例子将被描述如下,其中T表示当请求被发送和当连续请求的响应(例如,响应头部)被检测/接收之间的延迟时间:
[0242] T0=响应0(t)-请求0(t)=180秒(+/-公差)
[0243] T1=响应1(t)-请求1(t)=240秒(+/-公差)
[0244] T2=响应2(t)-请求2(t)=500秒(+/-公差)
[0245] 在上示的时序例子中,T0<T1<T2,这可能表明当网络超时尚未达到或已超过时的长轮询搜索模式。此外,如果三个请求的接收到的响应R0、R1和R2是相同的,R2可以被缓存。在这个例子中,R2是在长轮询搜索期间被缓存而无需等待处理长轮询,从而加快响应缓存(例如,这是可选的加速缓存行为,其可以实现所有的或选定的应用程序)。
[0246] 因此,本地代理275可以指定信息,该信息可以从上面显示的时序(如轮询排程,轮询间隔,轮询类型)中提取到代理服务器并开始缓存,请求代理服务器开始轮询和监测来源(例如,使用T0、T1、T2的任何一个,但通常为T2,作为轮询间隔或没有超时的最大的检测到的间隔,以及来自源的响应被接收将被发送到图3A的代理服务器325以用于轮询内容源(如应用服务器/服务提供商310))。
[0247] 然而,如果检测到的间隔越来越短,应用程序(例如,移动应用程序)/客户端可能仍然搜索能够从内容源(例如,应用程序/服务器的服务器/提供者110或310)可靠地被接收的响应的间隔,并作为这样的缓存通常不应该启动,直到请求/响应的间隔表示相同的间隔或增加的间隔,例如,用于长轮询类型的请求。
[0248] 处理检测到的下降的延迟的例子使用T0、T1、T2、T3和T4描述如下,其中T表示当请求被发送和当连续请求的响应(例如,响应头部)被检测/接收之间的延迟时间:
[0249] T0=响应0(t)-请求0(t)=160秒(+/-公差)
[0250] T1=响应1(t)-请求1(t)=240(+/-公差)
[0251] T2=响应2(t)-请求2(t)=500秒(+/-公差)
[0252] T3=700秒超时(+/-公差)
[0253] T4=响应4(t)-请求4(t)=600(+/-公差)
[0254] 如果检测到响应延迟T1<T2<T3>T4的模式,如上述时序(例如,由应用程序行为检测器236的长轮询搜索检测器238c检测到的)所示,其可以判定T3在长轮询搜索期间可能超出网络时间。请求3中,在响应被发送或可获得之前,由于连接被网络、应用程序、服务器或其他原因终止,响应很可能不会被收到。请求4(在T4后),如果一个响应(例如,响应4)被检测或接收,本地代理275稍后可以使用响应用于缓存(如果内容重复性条件得到满足)。本地代理也可以使用T4作为为代理服务器设置的轮询时间表中轮询间隔以监测/轮询内容源。
[0255] 请注意上面的描述表明只要收到回应以及给定请求没有超时,则在长轮询在检测增加的响应延迟的事件中的搜索模式中时缓存可以开始。这可以被作为在长轮询期间的可选的加速缓存。缓存也可以在搜索模式(例如,在轮询请求确定在恒定或接近恒定的延迟值之后)完成之后开始。请注意,长轮询的搜索在搜索发生时可能会或可能不会发生,代理275通常可以检测到这个并决定是否在搜索期间开始缓存(增加相同响应的间隔),或等待直到搜索定到一个稳定的值。
[0256] 在一个实施例中,缓存适当性决策引擎246的时序预测器246a可以跟踪从来自应用程序(例如,移动应用程序)或客户端的出站请求接收到的响应的时序以检测到任何可识别的模式,该模式可以是部分地全部重现性以使得本地缓存响应可以以模拟内容源(例如,应用服务器/内容提供商110或310)行为的方式被提供给移动设备250上的请求客户端。例如,以何种方式(例如,从时序的角度来看)响应或内容将被传递到移动设备250上的请求应用程序/客户端。当应用程序或移动客户端请求的响应被从本地和/或远程缓存提供而不是被直接从内容源(例如,应用程序、内容提供商110或310)检索/接收时,这将确保用户体验的保存。
[0257] 在一个实施例中,决定引擎246或时序预测器246a确定给定的应用程序(例如,移动设备应用程序)或客户端的时序特性,该应用程序或客户端来自,例如,请求/响应跟踪引擎238b和/或应用程序配置文件生成器239(例如,响应延迟间隔跟踪器239a)。时序预测器246a使用时序特性确定接收到响应请求的内容是否适合或潜在适合缓存。例如,来自给定的应用程序的两个连续请求之间的轮询请求间隔可以用来确定请求间隔是否是可重复的(例如,恒定的、接近恒定的、随模式增加,随模式减少等)并可预测的,从而在至少一些时间精确地或近似地在公差范围水平内复制。
[0258] 在一些情况下,为特定应用程序、应用程序的多个请求或多个应用程序的给点请求的时序特性可以存储在应用程序配置文件存储库242中。应用程序配置文件存储库242通常可以存储任何类型的关于应用程序请求/响应特点,包括时序模式、时序重复性、内容重复性等的信息或元数据。
[0259] 应用程序配置文件存储库242也可以存储元数据,该元数据指示由给定应用程序使用的请求的类型(例如,长轮询,长期持有的HTTP请求,HTTP流,推送,COMET推送,等等)。应用程序配置文件由应用程序指示请求类型,可以用于当检测到随后的相同/相似的请求时或当从已被分类的应用程序检测到请求时。以这种方式,已被跟踪和/或分析的给定请求类型或特点应用程序的请求的时序特性不需要被重新分析。
[0260] 应用程序配置文件可以与生存时间(例如,或者默认的过期时间)相关联。应用程序配置文件或应用程序或请求的配置文件的各个方面的过期时间的使用可以按个别情况来使用。应用程序配置文件条目的生存时间或实际到期时间可以设置为默认值或单独确定或以其组合确定。网络应用程序配置文件也可以具体到无线网络、物理网络、网络运营商或特定的运营商。
[0261] 实施例包括应用程序黑名单管理器201。黑名单管理器201可以被耦合到应用程序缓存策略存储库243并可以部分或全部内置于本地代理或缓存策略管理器245。同样,黑名单管理器201可以部分或全部内置于本地代理或应用程序行为检测器236。黑名单管理器201可以在永久或临时的基础上聚集、跟踪、更新、管理、调整或动态监测列入“黑名单”的、或认定为不缓存的服务器/主机的目的地列表。目的地的黑名单,当在请求中的确定时,有可能被使用以允许该请求被经由(蜂窝)网络发送用于服务。额外的处理请求可能不会被执行,因为它检测到引导至被列为黑名单的目的地。
[0262] 列入黑名单的目的地可在应用程序缓存策略存储库243中由地址标识符识别,该地址标识符包括标识符的特定的URI或模式,该标识符包括URI模式。一般情况下,被列入黑名单的目的地可以被任何一方设置或因任何原因被任何一方修改,该任何一方包括用户(拥有者/移动设备250的使用者)、设备250的操作系统/移动平台、目的地本身、网络运营商(蜂窝网络)、互联网服务提供商、其他第三方,或可根据已知不能被缓存/不适于缓存的应用程序的目的地列表。一些在黑名单目的地中的条目可能包括基于由本地代理(例如,缓存适当性决策引擎246)执行的分析或处理的聚集的目的地。
[0263] 例如,在移动设备上的应用程序或移动客户端的已被确定为不适合用于缓存的响应可以加入到黑名单。其相应的主机/服务器可能会增加以补充或代替在移动设备250上的请求应用程序/客户端的标识。部分或全部的这样的由代理系统标识的客户端的可以被添加到黑名单中。例如,对于所有的暂时标识为不适于缓存的应用程序客户端或应用程序中,仅有那些具有某些检测到的特征(基于时序、周期性、响应内容变化的频率、内容的可预测性、大小等)可以被列为黑名单。
[0264] 被列入黑名单的条目可包括在移动设备(而不是目的地)上的请求应用程序或请求客户端以使得当从给定应用程序或给定客户端检测到请求时,它有可能通过网络发送至响应,因为列入黑名单的客户端/应用程序的响应在大多数情况下不被缓存。
[0265] 给定应用程序配置文件还可以被不同地对待或处理(例如,本地代理275和325远程代理的不同的行为),这取决于与移动设备相关的应用程序正在访问的移动帐户。例如,更高的付费帐户,或最初的帐户可能允许更频繁访问无线网络或更高的带宽分配,从而影响本地代理275和代理服务器325之间实施的缓存策略,该策略相比于节约资源,其强调更好的性能。给定的应用程序配置文件也可以根据不同的无线网络条件(例如,基于拥塞或网络中断等)被不同地等待或处理。
[0266] 需注意的是可以为移动设备上250上的多个客户端或应用程序确定、跟踪和管理缓存适当性。也可以为移动设备250上的给定客户端或应用程序发起的不同的请求或请求类型确定缓存适当性。缓存策略管理器245与时序预测器246a和/或试探性地确定或估计可预见性或潜在的可预见性的内容预测器246b,可以跟踪,管理和存储可缓存给定的应用程序的各种应用程序或各种请求的可缓存信息。可缓存信息可能还包括条件(例如,应用程序可以在一天的某些时候、一周的某几天被缓存,或者给定的应用程序的某些请求可被缓存,或所有具有给定目标地址的请求可以被缓存),在该条件下,缓存是适当的,其可由缓存适当性决策引擎246确定和/或跟踪以及当在适当的时候应用程序缓存策略存储库243耦合到缓存适当性决策引擎246时被存储和/或更新。
[0267] 当相同的请求被检测到时,应用程序缓存策略存储库243中的关于请求、应用程序的缓存性能和/或相关条件的信息以后可以稍后使用。以这种方式,决策引擎246和/或时序和内容预测器246a/b不需要跟踪并分析请求/响应时序和内容特征以作出关于缓存性能的评估。此外,缓存性能信息可在某些情况下与其他移动设备的本地代理通过直接通信或通过主机服务器(例如,主机服务器300的代理服务器325)的方式共享。
[0268] 例如,在各种移动设备是的本地代理275检测到的缓存性能信息可以被发送到主机服务器上的代理服务器325或远程主机服务器(例如,图3A的示例中所示的主服务器300或代理服务器325,图1A-B的示例中所示的主机100和代理服务器125)。然后远程主机或代理服务器分发信息,该信息关于应用程序-特定、请求-特定的缓存性能信息和/或各种移动设备或在无线网络中或跨越多个无线网络(相同的服务提供商或多个无线服务提供商)的本地代理的用于它们使用的任何相关条件
[0269] 一般来说,缓存的选择标准可以进一步包括,通过举例的方式但不限制于,指示移动设备是否是有效或无效、网络条件和/或无线电覆盖范围统计信息的移动设备的状态。缓存适当性决策引擎246可在标准的任何一种或任何组合之中,并可以以任何顺序,识别缓存可能适合的源。
[0270] 一旦应用程序服务器/内容提供商具有可能适合于在移动设备250上本地缓存的被识别的或被检测的内容,缓存策略管理器245通过存储从内容源接收到的内容为在移动设备250上的本地缓存(例如,图1B和图2A的例子中分别所示的本地缓存185或285)中的缓存元素可以缓存从所识另的源接收的相关的内容。
[0271] 响应可以被存储在缓存285(例如,也称为本地缓存)作为缓存条目。除了请求的响应,缓存条目可包括具有关于响应缓存的附加信息的缓存元数据。元数据可以由元数据生成器203生成,并且可以包括,例如,时序数据,例如缓存条目的访问时间或者缓存条目的创建时间等等。元数据可以包括附加的信息,如适合于在确定作为缓存条目存储的响应是否用于满足随后的响应中使用的任何信息。例如,元数据信息可以进一步包括,请求时序历史(例如,包括请求时间、请求启动时间、请求结束时间),请求和/或响应的哈希值,间隔或在间隔中的变化等。
[0272] 缓存条目通常存储在与生存时间(TTL)相联的缓存285中,例如可能会由缓存无效器244的TTL管理器244a指定或确定。缓存条目的生存时间保持在缓存285中的条目时间的总量,不管响应是否依然有效或者与给定请求或在移动设备250上的客户端/应用程序相关。例如,如果设置的给定的缓存条目的生存时间为12个小时,即使包含在缓存条目的响应主体仍然是当前的并适用于相关请求的,缓存条目被清除、删除或以其他方式指明为超过生存时间。
[0273] 默认生存时间除非另有规定可以自动使用于所有的条目(例如,由TTL管理器244a),或每个缓存条目可以创建其个自的TTL(例如,基于各种动态或静态的标准由TTL管理器244a所确定)。注意,每个条目可以有与响应数据和任何相关联的元数据相关联的单个的生存时间。在某些情况下,相关联的元数据可具有不同于响应数据的生存时间(例如,较长的生存时间)。缓存条目的数据模型代表例子在图24和图25中被说明。
[0274] 具有用于缓存的内容的内容源,除了或可替代的,被确定为代理服务器(例如,分别在图1B和图3A的例子中所示的代理服务器125或325)远离移动设备250并与移动设备250无线通信以使得代理服务器可以为新的或更改的数据监测内容源(例如,应用服务器/内容提供商110)。类似地,本地代理(例如,分别在图1B和图2A的本地代理175或275)可以识别到代理服务器,从特定的应用服务器/内容提供商接收的内容作为缓存的元素285被存储在本地缓存中的。
[0275] 一旦内容已经在本地缓存,缓存策略管理器245,基于接收未来轮询请求以与应用服务器/内容主机(例如,110或310)联系,可以从本地缓存检索缓存的元素以响应在移动设备250作出的轮询请求以使得移动设备的无线电未被激活为服务轮询请求。例如,缓存查找引擎205可以查询缓冲285以确定响应被提供至响应。响应可以从缓存中提供以响应识别匹配的缓存条目和使用任何在缓存条目中与响应一起存储的元数据。缓存条目可被缓存查找引擎通过使用请求的URI或另一种类型的标识符(例如,通过ID或URI过滤器205a)进行查询。缓存查找引擎205还可以使用与与匹配的缓存条目一起存储的元数据(例如,提取任何时序信息或其他有关信息)以确定响应是否仍然适合在被提供至当前请求中使用。
[0276] 需要注意的是缓存查找可以由引擎205通过使用一个或多个不同的多种策略执行。在一个实施例中,可以按顺序存储在缓冲285中的每个条目上执行多个查找策略,直到至少有一个策略识别匹配的缓存条目。进行缓存查找所采用的策略可以包括严格匹配标准或允许非匹配参数的匹配标准。
[0277] 例如,查找引擎205可以执行严格的匹配策略,该策略寻找在代理试图识别缓存条目的目前的请求中引用的标识符(例如,一个主机或资源的URI)以及与缓存条目一起储存的标识符之间的精确匹配。在标识符包括URI(s)的情况下,严格匹配的匹配算法将查找在URL匹配中的所有参数的缓存条目。例如:
[0278] 例1
[0279] 1、缓存包含条目http://test.com/products/
[0280] 2、请求正在作出URIhttp://test.com/products/
[0281] 严格策略将发现匹配,因为这两个URI是相同的。
[0282] 例2
[0283] 1、缓存包含条目http://test.com/products/?query=all
[0284] 2、请求正在作出URIhttp://test.com/products/?query=sub
[0285] 在上述严格的策略下,匹配将不会被发现,因为URI在查询参数中不同。
[0286] 在另一个示例性策略中,查找引擎205的用标识符查找缓存,该标识符部分匹配在代理试图识别匹配缓存条目的目前的请求中引用的标识符。例如,查找引擎205可查找具有与由查询参数识别的请求不同的标识符的缓存条目。在运用这一策略中,查找引擎205可以收集信息,该信息收集多个之前请求(例如,标识符中任意参数的列表)用于稍后检查在目前请求中的检测到的任意参数。例如,在缓存条目存储与URI或URL的标识符一起存储的情况下,查找引擎搜索具有URI的缓存条目,该URI随查询参数不同而不同。如果找到了,引擎205可以检查缓存条目在以前的请求(例如任意参数列表)中收集的信息并检查在目前的URI/URL中检测到的或从目前的URI/URL中提取的任意参数是否属于任意参数列表。
[0287] 例1
[0288] 1、缓存包含条目http://test.com/products/?query=all,其中查询被标记为任意。
[0289] 2、请求正在作出URIhttp://text.com/products/?query=sub
[0290] 匹配将被发现,因为查询参数被标记为任意。
[0291] 例2
[0292] 1、缓存包含条目http://test.com/products/?query=all,其中查询被标记为任意。
[0293] 2、请求正在作出URIhttp://test.com/products/?query=sub&sort=asc
[0294] 匹配将不会被发现,因为目前的请求包含没有在缓存条目中标记为任意的分类参数。
[0295] 可采用附加策略以检测缓存命中。这些策略可以单独使用或以其任意的组合实施。当这些策略中的任何一个决定匹配时,缓存命中可被确定。当查找引擎205确定请求的数据因任何原因不能从缓存285提供时,缓存未命中可被指示。例如,当没有缓存条目被识别为任何或所有的被使用的查找策略,缓存未命中被确定。
[0296] 当匹配的缓存条目存在但被确定为无效或当前请求无关时,缓存未命中也可以被确定。例如,查找引擎205还可以分析与匹配的缓存条目有关的元数据(例如,其可以包括缓存条目的时序数据)以确定它是否仍然是适合用于响应当前请求。
[0297] 当查找引擎205已经识别了缓存命中(例如,指示请求的数据可以从缓存中提供的事件),在匹配缓存中的存储的响应可以由缓存提供以满足应用程序/客户端的请求。
[0298] 通过使用存储在缓存285中的缓存条目服务请求,网络带宽和其他资源不需要被用于请求/接收轮询响应,该轮询响应未从已经在移动设备250接收的响应改变。这种服务和实现应用程序(例如,移动应用程序)通过在本地缓存285中的缓存条目本地请求,以允许更有效的资源和移动网络流量的利用和管理,因为不需要通过无线网络发送的请求进一步消耗带宽。在一般情况下,缓存285可在移动设备250电源的开/关之间保持,并在应用程序/客户端刷新和重启时保持。
[0299] 例如,基于收到的来自其移动设备250或移动设备250上的应用程序或其他类型客户端的出站请求,本地代理275可以拦截该请求并确定缓存响应是否在移动设备250的缓存285中可用。如果是这样,出站请求由本地代理275使用移动设备的缓存上的缓存的响应作出响应。因此,发出的请求可以被填充或满足,而不需要通过无线网络发送出站请求从而节省了网络资源和电池消耗。
[0300] 在一个实施例中,响应设备250上的请求的应用程序/客户端定时至对应到内容服务器将通过持续连接响应出站请求的方式(例如,通过持续连接或长期持有的HTTP连接,长轮询式连接,将由本地代理建立缺席拦截)。通过由本地缓存285提供存储的内容而不是从预期内容源接收到的新鲜内容(例如,图1A-B的内容主机/应用程序服务器110),响应时序可以由本地代理275仿真或模拟以保存应用程序行为,以使得最终用户体验不会受到影响,或受到最小影响。时序可以准确地复制或在公差参数内被估计,其可能会被用户忽视或由应用程序类似处理以便不引起操作问题。
[0301] 例如,出站请求可以是用于内容服务器(例如,图1A-1B的例子的应用程序服务器/内容提供商)的持久连接的请求。在内容源(服务器)的持久连接(例如,长轮询、COMET式推送或任何其他在异步HTTP请求中推送模拟、长期持有的HTTP请求、HTTP流媒体或其他)中,在请求被发送之后连接被保持一定的时间。连接通常可以在移动设备和服务器之间被保存,直到内容在服务器上被提供以发送到移动设备。因此,当长轮询请求被发送以及当响应从内容源接收之间时间上通常有一些延迟。如果内容源没有为一定量的时间提供响应,如果响应未被发送,则可能由于网络原因(例如,套接字关闭)终止该连接。
[0302] 因此,模拟来自内容服务器的经由持久连接(例如,长轮询方式连接)发送的响应,内容服务器的响应的方式可以是通过在响应具有缓存的响应的出站请求之前允许间隔消逝来模拟。例如,间隔的长度可以在请求-请求的基础上或者应用程序-应用程序(客户端-客户端的基础上)被确定。
[0303] 在一个实施例中,间隔时间确定基于产生出站请求的移动设备上的应用程序的请求特性(如时序特性)被确定。例如,轮询请求的间隔(例如,它可以被跟踪、检测以及由轮询间隔检测器238的长轮询检测器238a确定)可以用来确定在响应具有本地缓存的请求之前的等待的间隔,并可以由响应排程器249a进行管理。
[0304] 缓存策略管理器245的一个实施例包括为移动设备250上的一个或多个应用程序产生轮询时间表的轮询时间生成器247。轮询时间表可以指定轮询间隔,该轮询间隔可由物理上不同于和/或独立于移动设备250的实体在监测代表移动设备的一个或多个应用程序(例如缓存的响应可以通过轮询请求被定向至的主机服务器(主机服务器110或310)来进行定期验证)的内容源中采用。这样的可以监测移动设备250的源的内容的外部实体的例子是代理服务器(例如,图1B和图3A-C的例子中的代理服务器125或325)。
[0305] 轮询时间表(例如,包含轮询率/频率)可以被确定,例如,基于定向至来自移动设备的内容源的轮询请求之间的间隔。轮询时间表或轮询速率可以在移动设备250(由本地代理)确定。在一个实施例中,为了确定由任何或所有应用程序(例如,移动设备应用程序)作出的轮询请求之间的间隔,应用程序行为检测236的轮询间隔检测器238可以监测定向至来自移动设备250的内容源的轮询请求。
[0306] 例如,轮询间隔检测器238可以跟踪设备250上的应用程序或客户端的请求和响应。在一个实施例中,连续的请求在由相同的移动客户端或应用程序(例如,移动设备应用程序)作出在移动设备250上的应用程序(例如,移动设备应用程序)发起的出站请求的检测之前被跟踪。在一个实施例中,速率由在由相同的产生请求的客户端产生的在先请求之间的间隔的平均值来确定。例如,第一间隔可能被在当前请求和前一请求之间被计算,第二间隔可以在前两个请求之间被计算。轮询速率可由第一和第二间隔的平均来设置并在设置缓存策略中发送到代理服务器。
[0307] 可选的间隔可在产生平均值中被计算,例如,除了前两个请求的多个先前的请求可用于,以及多于两个的间隔可用于计算平均值。一般情况下,在计算间隔中,给定请求不需要导致响应从主机服务器/内容源接收以便它用于间隔计算。换句话说,给定请求的时序特性可以在间隔计算中被使用,只要该请求已被检测到,即使请求在发送中失败或如果响应检索失败。
[0308] 轮询时间表生成器247的实施例包括时间表更新引擎247a和/或时间调整引擎247b。时间表更新引擎247a确定更新速率的需要或者或轮询来自先前设定值的给定应用程序服务器/内容主机具有的间隔,基于在移动设备250上的客户端或应用程序(如移动设备应用程序)产生的实际请求中检测到的间隔变化。
[0309] 例如,监测率确定的请求现在可以被从应用程序(例如,移动应用程序)或客户端以不同的请求间隔发送。预定的更新引擎247a可确定实际请求更新的轮询间隔,并生成一个不同于先前设定速率的新的速率以轮询代表移动设备250的主机。更新的轮询率可经由蜂窝网络传播至远程代理(代理服务器325)用于远程代理监测给定主机。在某些情况下,更新的轮询速率可在远程代理或监测主机的远程实体被确定。
[0310] 在一个实施例中,时间调整引擎247b可以进一步优化的被生成用来监测应用程序服务器/内容源(110或310)的轮询时间表。例如,时间调整引擎247b可选地指定开始轮询到代理服务器的时间。例如,除了设置代理服务器监测应用程序的轮询间隔,服务器/内容主机也可以指定在移动客户端/应用程序产生的实际请求的时间。
[0311] 然而,在某些情况下,由于固有的传输延迟或增加的网络延迟或其他类型的恢复时间,远程代理服务器接收来自本地代理的具有一些延迟(例如,几分钟或几秒钟)的轮询设置。在请求由移动客户端/应用程序产生后,这在源具有检测响应改变的效果,在响应不再是最新的或有效的之后,缓存的响应一旦再次被供应到应用程序则会引起缓存的响应发生的无效。这种差异进一步在图21的数据时序图中被示意性地说明。
[0312] 为了在无效之前,再次解决供应超时内容的这种非最优的结果,时间调整引擎247b可以指定轮询应该开始除速率之外的时间(t0),其中指定的到代理服务器325的初始时间t0作为一个时间是小于当请求被移动应用程序/客户端产生时的实际时间的。通过这种方式,在由移动客户端产生实际请求稍前服务器轮询资源使得在实际应用程序请求之前任何内容的变化可以被检测。这可以防止无效的或不相关的超时内容/响应在提供新鲜内容之前被再次发送。
[0313] 在一个实施例中,基于来自移动设备250上的相同应用程序或客户端的在先请求的时序特性,来自移动设备250的出站请求被检测到以用于持久连接(例如,长轮询、COMET式推送和长期持有的(HTTP)请求)。例如,请求和/或相应响应可以由轮询间隔检测238的长轮询检测器238a的请求/响应跟踪引擎的238b进行跟踪。
[0314] 连续请求的时序特性可以被确定以设置应用程序或客户端的轮询时间表。轮询时间表可用于监测内容源(内容源/应用程序服务器)的内容变化,以使得存储在移动设备250的本地缓存上的缓存内容可被适当管理(例如,更新或丢弃)。在一个实施例中,时序特性可包括,例如,响应延迟时间(D)和/或空闲时间(IT)。
[0315] 长轮询的典型响应延迟时间和空闲时间在如下所示的时序图中被说明,并被进一步在图17A-B中详细描述。在一个实施例中,响应/请求跟踪引擎238b可以跟踪请求和响应以确定、计算和/或估计请求者或客户端的请求的时序图。
[0316] 例如,响应/请求跟踪引擎238b检测到移动设备上的客户端启动的第一请求(请求0)和在响应于第一请求的移动设备处接收响应之后在移动设备上的客户端启动的第二请求(请求1)。第二请求是在第一次请求之后。请求之间的关系可见于图17A-B的时序图。
[0317] 在一个实施例中,响应/请求跟踪引擎238b可以跟踪请求和响应以确定、计算、和/或估计请求者或客户端的请求的时序图。响应/请求跟踪引擎238b可以检测移动设备上的客户端启动的第一请求和在响应于第一请求的移动设备处接收响应之后在移动设备上的客户端启动的第二请求。第二请求是在第一次请求之后。
[0318] 响应/请求跟踪引擎238b进一步确定在第一、第二请求以及接收到的响应于第一个请求的响应之间的相对时序。一般情况下,相对时序可被长轮询检测器238a用于确定由应用程序生成的请求是否是长轮询请求。
[0319] 需注意的是,在一般情况下,由响应/请求跟踪引擎238b在计算相对时序中使用的第一和第二请求被选择用于在长轮询搜索期间固定之后或在长轮询搜索不会发生时进行使用。典型的长轮询搜索期间的时序特性被在图8的例子中说明并可以,例如,由长轮询搜索检测器238c检测。换言之,由响应/请求跟踪引擎238b跟踪的请求并被用于确定给定的请求是否是长轮询请求的请求发生在长轮询固定之后(例如,在搜索模式805完成之后,图8的810所示)。
[0320] 在一个实施例中,通过识别增加的请求间隔(例如,增加的延迟),长轮询搜索检测器238c可以识别或检测搜索模式。长轮询搜索检测器238a也可以通过检测增加的跟随有没有响应的请求(例如,连接超时)的请求间隔来检测搜索模式,或通过检测增加的跟随有在间隔中的减少的请求间隔来检测搜索模式。此外,长轮询搜索检测器238c可以应用过滤器的值或阈值的请求-响应时间的延迟值(例如,一个绝对值)检测的延迟高于该值则可以被认为是一个长轮询请求响应延迟。该过滤器的值可以是任何适当长轮询和/或网络条件的值特征(例如,2秒、5秒、10秒、15秒、20秒,等等),并可以用作过滤器的值或阈值。
[0321] 响应延迟时间(D)是指在请求发送后开始接收响应的时间以及空闲时间是指在响应接收之后发送后续请求的时间。在一个实施例中,出站请求被检测用于持久连接,其基于响应延迟时间相对(D)或(D)的平均值(例如在一段时间的任何平均值)与空闲时间(IT)的比较(例如,由跟踪引擎238b执行的),例如,长轮询检测器238a。所使用的平均的数量可以是固定的、动态调整的或在一段较长的时间内可改变的。例如,由客户端发起的请求被确定为长轮询请求,如果响应延迟间隔大于空闲间隔(D>IT或D>>IT)。在一个实施例中,长轮询检测器的跟踪引擎238b计算、确定或估计响应延迟间隔作为在第一请求的时间和初始检测或完整接收响应之间所经历的时间量。
[0322] 在一个实施例中,当空闲时间(IT)短暂时,请求被检测为持久连接,因为持久连接被建立至长轮询请求或长轮询的HTTP请求的响应中,例如,在收到前一个请求的响应(例如,IT~0)之后,也可以在检测随后请求的即时或接近即时的发布中被特征化。因此,空闲时间(IT)也可以被使用来检测这样的即时或接近即时的重新请求以识别长轮询请求。第一请求的响应被收到后,由跟踪引擎238b确定的绝对或相对时序被用于确定第二请求是否是即时或接近即时的重新请求。例如,一个请求可能被归类为一个长轮询请求,如果D+RT+IT~D+RT因为IT较小是成立的。如果IT小于阈值,则它可能被确定为小。请注意,该阈值可以是固定的或在有限的时间段(一个会话、一天、一个月等)计算出的或在一个较长的时间周期(例如,数月或分析的寿命)中计算出的。例如,对于每一个请求,平均IT可被确定,并可使用该平均(例如,平均IT小于百分比可能被作为阈值)确定阈值。这可以允许阈值随时间自动适应网络条件和服务器性能、资源的可用性或服务器响应中的变化。固定的阈值时可以采取任何值,包括但不限于(例如,1秒、2秒、3秒.....等等)。
[0323] 在一个实施例中,长轮询检测器238a可以比较相对时序(例如,由跟踪引擎238b所确定的)和其他应用程序的请求-响应时序特性以确定应用程序的请求是否是长轮询请求。例如,由客户端或应用程序启动的请求可以被确定为长轮询请求,如果响应延迟间隔(D)或平均响应延迟间隔(例如,平均x个请求或任何数目的延迟间隔时间平均x时间量)大于一个阈值。
[0324] 阈值可以使用由其他客户端,例如,请求/响应跟踪引擎238b和/或应用程序配置文件生成器239(例如,响应延迟间隔跟踪器239a),所产生的请求的响应延迟间隔时间所确定。其他客户端可能在同一移动设备上,并通过在移动设备上的组件本地确定阈值。例如,所有网络的所有资源服务器的所有请求的该阈值可被确定。该阈值可以被设置为一个特定的恒定值(例如,30秒)被用于所有的请求,或任何不具有可适用的阈值(例如,如果D>30秒,则检测到长轮询)的请求。
[0325] 在一些情况下,其他客户端位于不同的移动设备上并且阈值可以由代理服务器(例如,图3A-B的例子中所示的主机300的代理服务器325)确定,该代理服务器在移动设备的外部并能够通过无线网络与多个不同的移动设备进行通信,正如将由图3B进一步地描述。
[0326] 在一个实施例中,缓存策略管理器245发送轮询时间表到代理服务器(例如,图1B和图3A的例子中所示的代理服务器125或325),并被由代理服务器在监测内容源中使用,例如,用于改变的或新的内容(不同于缓存的响应的更新的响应,缓存的响应与请求或应用程序相关联)。发送到代理的轮询时间表可以包括多个时序参数,包括但不限于间隔(从请求1请求2的时间)或超时间隔(例如,在长轮询中使用的等待响应的时间)。参照图17A-B的例子中所示的请求/响应时序的时序图,间隔RI、D、RT和/或IT,或上述值的一些统计操作(例如,平均值,标准偏差等)可全部或部分地被发送到代理服务器。
[0327] 例如,当本地代理275检测到到长轮询的情况下,请求/响应时序中的不同的间隔(例如,D、RT和/或IT)可以被发送到代理服务器325以轮询内容源(如应用程序服务器/内容主机110)中使用。本地代理275还可以识别至代理服务器325,被监测的给定的应用程序或请求是长轮询请求(例如,指示代理服务器设置“长轮询标志”)。此外,代理服务器使用不同的间隔以确定何时发送代表移动设备的保活指令。
[0328] 缓存策略经理245的本地缓存无效器244可以无效缓存在本地缓存(例如,缓存185或285)中的缓存元素,当从应用服务器/内容源检测到给定请求的新的或更改的数据(例如,更新的响应)。基于从代理服务器(例如,代理325或主机服务器300)收到的一份通知,缓存的响应可为出站请求被确定为无效。供到响应至移动客户端的请求的源可以被监测以确定存储在移动设备250的缓存中的请求中的缓存的响应的相关性。例如,当缓存的响应对于给定的请求或给定的应用程序不再有效时,缓存无效器244可以进一步从移动设备的缓存中移除/删除缓存的响应。
[0329] 在一个实施例中,在缓存的响应再次被提供给应用程序后,缓存的响应被从缓存中移除,该应用程序在确定缓存的响应不再有效后生成出站请求。缓存的响应在无需等待间隔的情况下可以被再次提供,或在等待间隔(例如,确定为特定的模拟长轮询中的响应延迟的间隔)之后被再次提供。在一个实施例中,间隔是响应延迟“D”或响应延迟“D”的两个或多个值的平均值。
[0330] 新的或更改的数据可以,例如,由代理服务器(例如,图1B和图3A的例子中的代理服务器125或325)检测。当给定请求/轮询的缓存条目失效时,移动设备250上的无线电的使用可以启用(例如,由本地代理275或者缓存策略管理器245)以满足后续的轮询请求,参考图4的交互图表将进一步说明。
[0331] 缓存策略管理器245的一个实施例包括缓存或连接选择引擎249,缓存或连接选择引擎249可以决定是否使用本地缓存的条目以满足轮询/内容在移动设备250处由应用程序或部件产生的请求。例如,本地代理275或缓存策略管理器245可以拦截移动设备上的应用程序(例如,移动应用程序)作出的轮询请求以联系应用服务器/内容提供商。选择引擎249可以确定拦截的请求接收到的内容是否已被本地存储为缓存元素以用于决定移动设备的无线电是否需要被激活以满足由应用程序(例如,移动应用程序)作出的请求,也确定缓存的响应在使用缓存的响应响应于出站的请求之前是否仍然对出站请求是有效的。
[0332] 在一个实施例中,响应于确定相关的缓存的内容存在并仍然有效,本地代理275中可以从本地缓存中检索缓存的元素以提供响应给应用程序(例如,移动应用程序),该应用程序作出轮询请求以使得移动设备的无线电不被激活以提供响应至应用程序(例如,移动设备应用程序)。在一般情况下,每次收到出站请求本地代理275继续提供缓存的响应直到检测到不同于缓存的响应的更新的响应。
[0333] 当确定缓存的响应已不再有效时,对于给定的请求的新的请求被通过无线网络发送以获取更新的响应。该请求可以被发送到应用服务器/内容提供商(例如,服务器/主机110)或主机服务器上的代理服务器(例如,主机300上的代理325)的以获取新的和更新的响应。在一个实施例中,在缓存的响应从移动设备上的缓存移除之前,如果新的响应在间隔内未被接收,可以再次提供缓存的响应作为出站请求的响应。
[0334] 图2C是一框图,展示了图2A的例子中所示的分布式代理系统中的客户端上的本地代理275中的应用程序行为检测器236以及缓存策略管理器245中的另一组件。例如,图示的应用程序行为检测器236和缓存策略管理器245可以使本地代理275检测缓存失败并由旨在战胜缓存的标识符处理的缓存的内容进行执行。
[0335] 在一个实施例中,缓存策略管理器245包括缓存失败解析引擎221、标识符规化器211、缓存适当性决策引擎246、轮询时间表生成器247、应用程序协议模块248、具有缓存查询模块229的缓存或连接选择引擎249和/或本地缓存无效器244。缓存失败解析引擎221还可以包括模式提取模块222和/或缓存失败参数检测器223。缓存失败参数检测器223还可以包括随机参数检测器224和/或时间/日期参数检测器226。一个实施例中还包括耦合到决策引擎246的应用程序缓存策略存储库243。
[0336] 在一个实施例中,应用程序行为检测器236包括模式检测器237、轮询间隔检测器238、应用程序配置文件生成器239和/或优先级引擎241。模式检测器237还可以包括缓存失败参数检测器223,该缓存失败参数检测器223还具有,例如,随机参数检测器233和/或时间/日期参数检测器234。一个实施例中还包括耦合至应用程序配置文件生成器239的应用程序配置文件存储库242。应用程序配置文件生成器239,已被描述的优先级引擎241与图2A的例子中的应用程序行为检测器236的描述相关联。
[0337] 缓存失败解析引擎221能够检测、识别、跟踪、管理和/或监测内容或内容源(例如,服务器或主机),其采用标识符和/或由标识符(例如,资源标识符,如URL和/或URI)与一个或多个击败缓存或旨在击败缓存的机制进行处理。例如,缓存失败解析引擎221可以从由应用程序或客户端产生的给定的数据请求检测,该应用程序或客户端标识失败或潜在的失败缓存,其中数据请求不同的处理内容或来自主机或服务器(例如,应用程序检测服务器/内容主机110或310)的响应是可缓存的。
[0338] 在一个实施例中,缓存失败解析引擎221使用在移动设备250检测到的数据请求的标识符检测或识别由内容源(例如,应用服务器/内容主机110或310)所使用的缓存失败机制。缓存失败解析引擎221可以检测或识别表明缓存失败机制被使用的标识符中的参数。例如,参数的格式、语法或模式可用于标识缓存失败(例如,由模式提取模块222确定或提取的模式、格式或语法)。
[0339] 模式提取模块222可以解析标识符为多个参数或组件并在每个参数上执行匹配算法,以识别任何匹配一个或多个预定的格式(例如,日期和/或时间的格式,如图7中所示的参数702)。例如,来自标识符的匹配或解析出的参数的结果可用于(例如,由缓存失败参数检测器223)以确定包括一个或多个改变参数的缓存击败参数。
[0340] 在一个实施例中,缓存失败参数检测器223可以检测随机参数(例如,由随机参数检测器224)和/或时间和/或日期参数,其典型地用于缓存失败。缓存失败参数检测器223使用这些参数通常采用的格式并执行匹配算法和测试的模式可以检测随机参数(例如,图7中所示的参数752中所示出的)和/或时间/日期。
[0341] 除了检测模式、格式和/或语法,缓存失败参数检测器223进一步确定或确认给定参数是否击败缓存以及和被处理的内容是否可以被分布式缓存系统缓存。缓存失败参数检测器223可以通过分析收到的由给定的数据请求使用的标识符的响应检测到这种动作。在一般情况下,当响应对应的多个数据请求相同时,即使当多个数据请求使用具有变化的参数的标识符因多个数据请求的每个而不同,该标识符中的变化的参数被标识为指明缓存失败。例如,图7的例子中所示的请求/响应对展示了接收到的响应(图7中的704和754)是相同的,即使资源标识符包括随每个请求而变化的参数(图7中的702和752)。
[0342] 例如,至少有两个相同的响应可能被要求识别变化参数表明为指示缓存失败。在某些情况下,可能需要至少三个相同的响应。相同响应的数量的要求可以是应用程序特定、上下文相关和/或用户依赖的/用户指定的,或上述的组合,该相同响应需要确定具有在请求之间的变化值的给定参数是缓存击败。这样的要求也可以由分布式缓存系统静态地或动态地调整以满足某些性能阈值和/或显式/隐式关于用户体验(例如,用户或应用程序是否正在接收响应于请求的相关的/新鲜的内容)的反馈。如果应用程序由于响应缓存开始出现故障和/或如果用户表示不满(显式用户反馈)或系统检测到用户受挫(隐式用户提示),可能需要更多的相同的响应以确认缓存失败,或为系统处理给定的参数用于缓存失败。
[0343] 缓存适当性决策引擎246可以检测、评估或确定是否来自移动设备250进行交互的内容源(例如,图1B的例子中的应用服务器/内容提供商110)的内容是否具有可适合于缓存的内容。在某些情况下,基于一套标准(例如,指定被从内容源请求的内容的时间关键性的标准),来自给定应用程序服务器/内容提供商(例如,图1B的服务器/提供商110)的内容被确定为适合于缓存。在一个实施例中,本地代理(例如,图1B和图2A的本地代理175或275)应用选择标准存储来自主机服务器的内容,该主机服务器由应用程序请求作为在移动设备上的本地缓存中的缓存的元素以满足由应用程序作出的后续请求。
[0344] 选择标准也可以包括,通过举例的方式但不限于,指示移动设备是否是活跃或不活跃的移动设备的状态、网络条件和/或无线电覆盖范围的统计信息。缓存适当性决策引擎246可采用标准的任何一个或任何组合,并以任何顺序,以识别缓存可能适合的源。
[0345] 一旦应用程序服务器/内容提供商具有被识别的或被检测到的可能适合在移动设备250上本地缓存的内容,缓存策略管理器245通过存储从内容源接收到的内容为在移动设备250上的本地缓存中的缓存元素(例如,分别在图1B和图2A的例子中显示的本地缓存185或285)可以缓存从所识别的源接收到的相关联的内容。内容源也可以被识别至远离移动设备250并与移动设备250无线通信的代理服务器(例如,分别在图1B和图3A的例子中显示的代理服务器125或325)以使得代理服务器可以为新的或变更的数据监测内容源(例如,应用服务器/内容提供商110)。类似地,本地代理(例如,分别在图1B和图2A中的本地代理175或275)可以识别到代理服务器,从特定应用程序服务器/内容提供商接收的内容被存储为本地缓存中的缓存的元素。
[0346] 在一个实施例中,缓存的元素被存储在本地缓冲285中作为与标识符的归一化版本相关联以用于标识符采用一个或多个只在击败缓存的参数。标识符可以由标识符规化器模块211标准化以及规化过程可以包括,通过举例的方式,一个或多个:转化URI方案和主机为小写,大写在百分比转义序列中的字母,移除默认的端口并删除重复的斜线。
[0347] 在另一个实施例中,标识符取可以通过移除缓存失败的参数和/或通过更换参数为静态值进行标准化,该静态值可用于处理接收到的缓存的响应或与接收到的缓存的响应相关联,该接收到的缓存的响应由规化器211或缓存失败参数处理器212利用标识符响应于请求。例如,存储在本地缓冲285(图2A中所示)中的缓存的元素可使用标识符的归一化版本或标识符的归一化版本的哈希值进行识别。该标准化的标识符或标识符的哈希值可由哈希引擎213产生。
[0348] 一旦内容已经在本地缓存,缓存策略管理器245可以,基于接收未来轮询请求以与内容服务器联系,检索来自本地缓存中的缓存的元素以响应在移动设备250作出的轮询请求以使得未激活的移动设备的无线电维护轮询请求。这样的通过本地缓存条目本地地维护和实现应用程序(例如,移动应用程序)请求允许更有效的资源和移动网络流量利用率和管理,因为网络带宽和其他资源不需要被用于请求/接收轮询响应,该轮询响应可能没有从已经在移动设备250接收到的响应改变。
[0349] 缓存策略管理器245的一个实施例包括轮询时间表生成器247,该轮询时间表生成器247可以为在移动设备250上的一个或多个应用程序产生轮询时间表。轮询时间表可以指定由代理服务器(例如,图1B和图3A的例子中所示的代理服务器125或325)在监测一个或多个应用程序的内容源中采用的轮询间隔。轮询时间表可以被确定,例如,基于定向至来自移动设备的内容源的轮询请求之间的间隔。在一个实施例中,应用程序行为检测器的轮询间隔检测器238可以监测定向至来自移动设备250的内容源的轮询请求,以确定的任何或所有的应用程序(例如,移动应用程序)作出的轮询请求之间的间隔。
[0350] 在一个实施例中,缓存策略管理器245发送轮询时间表发送到代理服务器(例如,图1B和图3A的例子中所示的代理服务器125或325)并可被由代理服务器在监测的内容源中,例如,为改变的或新的内容所使用。当从应用程序服务器/内容源检测到给定请求的新的或变更的数据时,缓存策略管理器245的本地缓存无效器244可以无效在本地缓存(如缓存185或285)中缓存的元素。新的或更改的数据,例如,可以被代理服务器检测。当给定请求/轮询的缓存条目在无效后被失效和/或移除(例如,从缓存中删除)时,移动设备250上的无线电的使用可以被启用(例如,由本地代理或策略管理器245)以满足随后的轮询请求,参照图4的交互图表将进一步描述。
[0351] 在另一个实施例中,代理服务器(例如,图1B和图3A的例子中所示的代理服务器125或325)使用在数据请求中使用的资源标识符的修改后的版本用于为新的或更改的数据监测给定的内容源(图1A和图1B中的数据请求向其提出的应用程序服务器/内容主机110)。
例如,在该实施例中,在其中内容源或标识符被检测到采用缓存击败机制的情况下,修改(例如,标准化)后的标识符可以用来代替轮询的内容源。标识符的修改或归一化版本可以通过缓存策略管理器245传送到代理服务器,或更具体地,标识符规化器211的缓存失败参数处理器212。
[0352] 由代理服务器所使用的用于轮询代表移动设备/应用程序(例如,移动应用程序)的内容源的修改后的标识符,可能或可能不会与标准化的标识符相同。例如,标准化的标识符可以是具有被移除的改变缓存参数的原始标识符,然而修改后的标识符使用替代参数来替代被用于击败缓存的参数(例如,由本地代理和/或代理服务器已知的静态值或其他预定值替代改变的参数)。修改后的参数可以由本地代理275确定并传送到代理服务器。修改后的参数也可由代理服务器(例如,由图3C的例子中所示的标识符修改器模块353)产生。
[0353] 缓存策略管理器245的一个实施例包括缓存或连接选择引擎249,该引擎可以决定是否使用本地缓存条目以满足在移动设备250由应用程序或部件产生的轮询/内容请求。例如,本地代理275或缓存策略管理器245可拦截由移动设备上的应用程序(例如,移动应用程序)作出的轮询请求以与应用服务器/内容提供商联系。选择引擎249可以确定拦截请求的已接收到的内容是否被本地存储作为缓存元素以用于决定移动设备的无线电是否需要被激活来满足由应用程序(例如,移动应用程序)作出的请求。在一个实施例中,响应于确定相关的缓存的内容存在并仍然是有效的,本地代理275可以从本地缓存检索缓存的元素以提供到应用程序(例如,移动应用程序)的响应,该应用程序作出轮询请求以使得移动设备的无线电没有被激活以提供到应用程序(例如,移动应用程序)的响应。
[0354] 在一个实施例中,存储在本地缓存285(图2A中所示)中的缓存的元素可以使用标识符的归一化版本或标识符的归一化版本的哈希值被识别,例如,使用缓存查询模块229。缓存的元素可以与标准化的标识符一起存储,该标识符具有被移除的或以其他方式被替代的缓存击败参数以使得相关的缓存的元素可以在未来被识别并检索以满足采用相同类型的缓存击败的其他请求。例如,当在后续请求中使用的标识符被确定为采用相同的缓存击败参数时,该标识符的归一化版本可以被生成的并用于识别存储在移动设备缓存中的缓存的响应以满足数据请求。标识符或标准化的标识符的哈希值可由标识符规化器211的哈希引擎213产生。
[0355] 图2D是一框图,展示了如图2A的例子中所示的在本地缓存275中的附加组件的例子。该例子能进一步基于应用程序行为和/或用户的活动执行移动流量分类和策略实施。
[0356] 在本地代理275的实施例中,用户活动模块215还包括一个或多个的:用户活动跟踪器215a、用户活动预测引擎215b和/或用户期望管理器215c。应用程序行为检测236可以进一步包括优先级引擎241a、时间关键性检测引擎241b、应用程序状态分类器241c和/或应用程序流量分类器241d。本地代理275还可以包括背光检测器219和/或网络配置选择引擎251。网络配置选择引擎251可以进一步包括一个或多个的:无线代标准选择器251a、数据速率指示器251b,接入信道选择引擎251c和/或接入点选择器。
[0357] 在一个实施例中,应用程序行为检测器236能够检测、确定、识别或推断流量源自或定向至的移动设备250上的应用程序的活动状态,例如,通过应用程序状态分类器241c和/或流量分类器241d。活动态可以由应用程序是否是在移动设备上的前台后台状态(通过应用程序的状态分类241c)进行确定,因为前台应用程序与后台应用的流量可被进行不同地处理。
[0358] 在一个实施例中,活动状态可以一确定性启发法被确定、检测、识别或推断,基于移动设备250的背光状态(例如,由背光源检测器219)或在移动设备上的其他软件代理或硬件传感器,包括但不限于,电阻传感器、电容传感器、环境光传感器、运动传感器,触摸传感器等。在一般情况下,如果背光打开,流量可以被处理作为或确定将从应用程序中产生,该应用程序是活跃的或在前台中的,或者流量是交互的。此外,如果背光打开,流量可以被处理作为或确定为来自用户交互或用户活动的流量,或流量包含用户在一段时间帧内所期望的数据。
[0359] 在一个实施例中,活动状态被基于流量是否是交互式流量或维护流量来确定。交互式流量可以包括来自直接由具有应用程序的用户活动/交互生成的响应和请求的事件,并且可以包括用户等待或期待收到的内容或数据。维护流量可用于支持应用程序的功能,该应用程序不直接由用户检测。维护流量还包括可能发生响应用户动作的动作或事件,但用户不是积极等待或预期响应。
[0360] 例如,移动装置250的邮件或消息的删除动作产生一个请求以删除在服务器上的相应的邮件或消息,但用户通常不会等待响应。因此,这样的请求可能被归类为维护流量,具有较低优先级(例如,由优先级引擎241a)的流量和/或非时间关键性(例如,由时间关键性检测引擎214b)。
[0361] 相对地,移动设备250的用户发起的邮件‘读’或消息‘读’请求可以被归类为“交互式流量,因为当用户要求阅读信息或邮件时,他们通常等待访问内容或数据。同样,这样的请求可以被归类为具有较高优先级(例如,由优先级发动机241a)的和/或为时间关键性/时间敏感的(例如,由时间关键性检测引擎241b)。
[0362] 时间关键性检测引擎241b可大致确定、识别、推断流量中所含的数据的时间敏感性,该流量从移动设备250发送或发送至来自主机服务器(例如,主机300)或应用程序服务器(例如,应用程序服务器/内容源110)的移动设备。例如,时间敏感数据可以包括状态更新、股票信息更新、IM状态信息、电子邮件或其他信息、手机游戏应用程序产生的动作、网页请求、位置更新等等。不是时间敏感或时间关键性的数据,按内容或请求的性质,可以包括请求删除消息、标记为已读或编辑操作、应用程序特定的操作,如添加或删除朋友朋友的请求,某些类型的消息,或其他性质不经常变化的信息等等。在某些情况下,当数据不是时间关键性时,允许流量通过的时间基于当附加数据需要从移动设备250被发送时被设置。例如,流量整形引擎255可以调整流量和一个或多个后续的事件以在移动设备的无线电(例如,使用调整模块256和/或批次处理模块257)的单电源事件上被一起发送。调整模块256还可以调整轮询请求,该轮询请求在时间上接近定向到同一个主机服务器时发生,因为这些请求可能使用相同的数据进行响应。
[0363] 在替代选择或组合中,活动状态可从评估、确定、估计、推论、识别移动设备250的用户的活动(例如,通过用户活动模块215)中被确定。例如,可以直接检测出用户活动并使用用户活动跟踪器215a进行跟踪。然后,由此产生的流量可以适当地进行分类以进行后续程序确定处理策略。此外,用户活动可由用户活动预测引擎215b进行预测的或预期。通过预测用户活动或预测用户活动,因此发生在预测之后的流量可以被作为用户活动产生的进行处理并适当分类以确定传输策略。
[0364] 另外,用户活动模块215也可以管理用户期望(例如,通过用户期望管理器215c和/或与活动跟踪器215和/或预测引擎215b的结合)以确保流量适当地被分类以使得用户的期望通常被满足。例如,用户发起动作应被分析(例如,由期望管理器215)以确定或推断用户是否将等待响应。如果是的话,这样的流量应按照策略被处理以使得用户不会经历在接收这样的响应或动作中的不愉快的延迟。
[0365] 在一个实施例中,基于流量源自并定向至的移动设备上的应用程序的活动状态,高级的新生代无线标准网络被选择用于发送在无线网络中的移动设备和主机服务器之间的流量。高级的技术标准,如3G、3.5G、3G+、4G或LTE网络,可以被选择用于处理作为用户交互、用户活动的结果的流量,或含有用户期待或等待的数据的流量。高级的新生代无线标准网络也可以被选择以用于传输包含在定向至移动设备的流量中的数据,该移动设备响应前台的活动。
[0366] 在流量分类和定义移动流量的传输策略中,网络配置可以被选择在发送移动设备和代理服务器(325)和/或应用程序服务器(例如,应用程序服务器/主机110)之间的流量中的移动设备250上使用(例如,通过网络配置选择引擎251)。被选择的网络配置可以基于应用程序行为模块236收集的关于应用程序活动状态(例如,后台或前台流量)、应用程序流量分类(例如,互动或维护流量)、任何数据/内容的优先级、时间敏感/关键性的信息被确定。
[0367] 网络配置选择引擎2510可以选择或指定在任何组合中的一个或多个新生代标准(例如,通过无线新生代标准选择器251a)、数据速率(例如,通过数据速率指示器251b)、接入信道(例如:接入信道选择引擎251c)和/或接入点(例如,通过接入点选择器251d)。
[0368] 例如,当活动状态与用户交互或在移动设备上的前台时,更高级的新生代(例如,3G、LTE或4G或更高版本)可以被选择或指定流量。相反,当检测到一个或多个下列内容时,老一代的标准(如2G、2.5G、3G或更老的版本)可以指定流量:应用程序不与用户进行交互,应用程序是在移动设备上的后台运行,或包含在流量中的数据不是时间关键性,或另外的被确定为具有较低的优先级。
[0369] 同样地,当检测到一个或多个下列内容时,具有较慢的数据速率的网络配置可以指定流量:应用程序不与用户交互,应用程序在移动设备上的后台运行,或者包含在流量中的数据不是时间关键性。接入信道(例如,前向接入信道或专用信道)可以被指定。
[0370] 图2E是一框图,展示了如图2A的例子中所示的流量整形引擎255和应用程序行为检测器236中的附加组件的例子。这些例子能够进一步促进到移动或宽带设备或其用户的输入的数据传输的调整以优化需要被建立用于通过无线网络或宽带网络接收数据的连接的数量。
[0371] 在本地代理275的实施例中,流量整形引擎255,除了调整模块256、批次处理模块257外,还包括轮询间隔调节器258。轮询间隔调节器258可以包括因子或分母检测引擎
258a、关键性应用程序检测器258b、关键性间隔标识符258c和/或轮询间隔设置引擎258d。
此外,在一个实施例中,本地代理275的应用程序行为检测器236还包括轮询间隔检测器
238。
[0372] 在促进到移动设备250的各种服务或主机的数据突发的调整中,本地代理275可以初步确定、检测、识别、计算、推断,提取原始的或默认的轮询间隔以用于移动设备250上的应用程序和移动客户端(例如,由轮询间隔检测器238)。原始的或默认的轮询间隔通常是移动设备应用程序本身和/或它的主机(例如,其相应的显示在图1A-1B中的应用程序服务器/内容主机110)所特有的特性。轮询间隔检测器238可以为任何数量的或所有的移动应用程序检测原始的或默认的轮询间隔,基于其上安装的应用程序和他们各自的轮询时序特性,该移动应用程序由代理275在生成或调整轮询间隔中定期轮询它们的应用服务器或主机,以适合于设备250使用。
[0373] 例如,设备250上的移动客户端或应用程序的轮询间隔(原始的或默认的)可以由轮询间隔调节器258使用。在一般情况下,第一服务的调整的轮询间隔是基于第二服务的轮询间隔产生的,该第二服务由来自第一服务(例如,Twitter=服务1;ESPN.com=服务2)的不同的主机服务。由于在第一和第二服务的移动设备上的访问,计算第一服务和/或第二个服务的调整的轮询间隔可用于调整至少一些从不同的主机接收的流量。
[0374] 例如,在一个实施例中,第一服务的调整的轮询间隔可以是第一服务的原始的轮询间隔和第二服务的原始的轮询间隔共有的因子或分母(例如,正如由因子或分母检测引擎258a所确定的),并可以进一步基于第一服务的原始的轮询间隔被确定。注意当第一服务的原始的轮询间隔和第二服务的轮询间隔是彼此的因子或分母时,第一服务的调整的轮询间隔不必要不同于第一服务的原始的轮询间隔。
[0375] 在一个实施例中,检测引擎258a可以进一步确定第二服务的轮询间隔和第一服务的调整的轮询间隔的因子或分母的倍数是第二服务的轮询间隔的因子的倍数或分母的倍数。此外,引擎258a可确定在移动设备250上的多个应用程序的大多数的默认的轮询间隔的因子的共同倍数或分母的共同倍数。
[0376] 此外,基于相对于来自第二服务的流量的时间关键性的来自第一服务的流量的时间关键性,或在移动设备250上的附加服务,第一服务的调整的轮询间隔可以被进一步确定、调整、或重新配置(例如,通过轮询间隔设置引擎258d)。例如,关键性应用程序检测器258b可以识别、检测或接收作为比其他更重要的识别或指定一个或多个在设备250上的应用程序的输入(如,更高的优先级、时间敏感内容/流量、用户首选的应用程序、操作系统赞助的应用程序、运营商赞助的内容等),如果需要并进一步调整第一和/或第二的服务的轮询间隔。
[0377] 例如,关键性应用程序检测器258b可以识别关键性应用程序为在移动设备上的所有应用程序的最重要的时间关键性,或者数据突发调校正在其上应用或试图应用的一组应用程序。对于关键性应用程序,关键性应用程序的轮询间隔被识别为为最小的关键性间隔(例如,由关键性间隔标识符258c),其不能在调整关键性应用程序的更新的轮询间隔中被超过从而使得在数据中的优先级需要(例如,无论是用户需要、设备需要或应用程序需要)推进和及时传递来自应用程序服务器或内容主机的数据。
[0378] 高优先级信息/数据或应用程序可以包括,例如,财务数据、运动数据或其他本质上不断变化的数据、其之前的值几乎没有相关性的任何数据、用户希望立即被实时或接近实时通知的任何数据(例如,订阅或提要),任何被应用服务器/内容主机指定为实时或接近实时特征的特定特征(例如,实时状态更新、或实时通知、高优先级的邮件或其他消息、即时消息等等)或服务任何类型的高优先级/时间敏感内容的应用程序。
[0379] 一旦在移动设备250上的一个或多个应用程序的轮询间隔已经设置,本地代理275传播轮询时间表,该轮询时间表包括至代理服务器(例如,图3A-3E的远程代理325)的调整的轮询间隔以用于在调整中使用,在时间上,至少一些流量由于访问移动设备上的第一和第二服务,以及任何额外的服务而从不同的主机接收。
[0380] 在一个实施例中,轮询间隔设置引擎258d也选择在时间中的共同起点用于服务多个应用程序的内容主机的初始轮询。轮询间隔设定引擎258d可以设置开始时间以固定至设备250上的多个应用程序在时间中的相同的绝对时间点。在一般情况下,应用程序服务器/内容主机通常在UTC中并使用NTP以留在相同时间。例如,间隔设置引擎258d可以旋转任何分钟标记、第二标记,小时标记或其他的时间指标,并传送这个至远程代理服务器(例如,代理325)作为调整的轮询参数的一部分。标记可以随机选择以由所有的应用程序使用作为共同的“初始时间t0”。
[0381] 需注意的是虽然上述描述使用两个应用程序的示例,但相同的过程可以被执行用于移动设备250上的任意数量的应用程序或所有应用程序/客户端。在某些情况下,由一个或多个组件的轮询间隔调节器258执行的一些或所有的功能中可被远程执行,例如,在远程代理服务器(例如,代理325)使用在移动设备250本地检测到的轮询间隔(例如,由轮询间隔检测器238)。注意远程代理(例如,代理服务器325)可接收在多个设备中的应用程序轮询间隔并跟踪在多个设备上的应用程序的调整的间隔,参考图3E将进一步描述。
[0382] 图3A是一框图,展示了分布式代理和缓存系统的服务器端组件,放置于主机服务器300,管理无线网络的流量,以节约资源。服务器端的代理(或代理服务器325)可以基于应用程序行为、内容优先级、用户的、活动和/或用户的期望进一步分类移动流量和/或实施交付策略。
[0383] 主机服务器300一般包含,例如,网络接口308和/或一个或多个存储库312、314和316。注意:该服务器300可以为任何便携/移动或非便携设备、服务器、计算机集群和/或(例如图11示例中所示任何机器3200)能通过网络,包含任何有线或无线网络(例如,WiFi、蜂窝、蓝牙等),用于接收或传输信号满足数据请求的其他类型处理单元。
[0384] 网络接口308可以包含网络模块或设备,能使服务器通过任何由主机和外部实体所支持的已知和/或方便通信协议,与主机服务器300外部实体调解网络数据。具体而言,网络接口308允许服务器300与多台设备进行通信,含移动电话设备350,和/或一个或多个应用程序服务器/内容提供商310。
[0385] 主机服务器300可以将设备的连接信息(例如,网络特征、条件、连接类型等)存储至连接元数据存储库312。此外,第三方应用程序或内容提供商的相关信息也可以存储在存储库312中。主机服务器300可以存储设备信息(例如,硬件性能、属性、设备设置、设备语言、网络性能、制造商、设备模型、操作系统、操作系统版本等)至设备信息存储库314。此外,主机服务器300可以将网络提供商和各类网络服务区域的信息存储至网络服务提供商存储库316。
[0386] 具备通信功能的网络接口308允许与设备350进行即时连接(如包含蜂窝连接)和/或与内容服务器/提供商310的连接(例如,包含有线/无线,HTTP,互联网连接,网卡,WIFI等),为最优化网络资源利用率和/或节约服务设备350消耗的电源(电池),管理设备350和内容提供商310的流量。主机服务器300能与由不同的网络服务提供商和/或在相同/不同的网络服务区域内提供服务的移动设备350进行通信。主机服务器300能操作,并且兼容各类型或各整体性能水平的设备350,包含如下列举但不限于:1G、2G、2G过渡(2.5G,2.75G)、3G(IMT-2000)、3G过渡(3.5G,3.75G,3.9G),4G(IMT-Advanced)等。
[0387] 一般来说,网络接口308可以包含一个或多个网络适配卡、无线网络接口卡(例如:SMS接口、WiFi接口、各代移动通信标准接口,包含但不限于:1G,2G,3G,3.5G,4G类型网络,例如LTE、WiMAX等)、蓝牙、WiFi或任何其他是否经由路由器,接入点、无线路由器、交换机、多层交换机、协议转换器、网关、网桥、桥接路由器、枢纽、数字媒体接收方,和/或中继器连接的网络。
[0388] 主机服务器300还包含,包含代理服务器325和服务器缓存335的分布式代理和缓存系统服务器端组件。一个实施例中,代理服务器325可以包含HTTP访问引擎345,缓存策略管理器355,代理控制器365,流量整形引擎375,新数据检测器347,和/或连接管理器395。
[0389] HTTP访问引擎345还能包含心跳管理器398;代理控制器365还能包含数据无效模块368;流量整形引擎375还能包含控制协议376和批次处理模块377。代理服务器325和各所述组件能增加或减少包含的组件/模块/引擎。
[0390] 本申请所使用的“模块”,“管理器”,“处理程序”,“检测器”,“接口”,“控制器”、“规化器”、“生成器”、“无效器”或“引擎”包含一般用途,专用或共享处理器,和通常由处理器执行的固件或软件模块。基于具体实施或其他因素的考量,该模块、管理器、处理器、检测器、接口、控制器、规化器、生成器、无效器或引擎,可集中或依功能分布式实施。该模块、管理器、处理器、检测器、接口、控制器、规化器、生成器、无效器或引擎能包含嵌入在计算机可读(存储)介质,具有一般或特殊用途的硬件,固件或软件,由处理器予以执行。本申请所使用的计算机可读介质或计算机可读存储介质,包含所有法定介质(例如,美国专利法第101条),并明确排除所有非法定的介质,本质上说排除必要范围,使得包含计算机可读(存储)介质的权利要求能成立。已知的法定计算机可读介质包含硬件(例如:寄存器,随机存储器(RAM)、非易失(NV)存储器,仅举几例),但可能或可能不限于硬件。
[0391] 示例中设备(如移动设备350)向应用程序服务器或内容提供商310提出应用程序或内容请求,该请求可能被截获,并路由到代理服务器325,其耦合至设备350和应用程序服务器/内容提供商310。具体来说,代理服务器能够与移动设备350的本地代理进行通信(例如图1和图2A-2E示例中各自的代理服务器175和275),本地代理将数据请求转发到代理服务器325,某些实例中,如需要进一步处理,为响应数据请求将其发送至应用程序服务器/内容服务器310。
[0392] 在这样的配置下,主机300或主机服务器300的代理服务器325可以利用本地代理提供的智能信息,调整其与设备的通信方式,以最优化网络使用和设备资源。例如,代理服务器325可以识别设备350的用户活动特征,修改其通信频率。用户活动特征可以由,例如,代理控制器365的活动/行为感知模块366,通过设备350上本地代理所收集的信息进行确定。
[0393] 一个实施例中,代理服务器325的连接管理器395可以控制通信频率,例如,调整设备350内容的推送或更新频率。例如,当用户活动特征表明用户处于不活跃状态时,连接管理器395可以降低推送频率。在一个实施例中,当用户活动特征表明用户处于闲置一段时间后的活跃状态,连接管理器395能调整与设备350的通信频率,将因降低通信频率的缓冲数据发送至设备350。
[0394] 此外,代理服务器325包含感知优先级的各项请求、事件、时域、应用程序,和/或特定事件。这种感知由设备350的本地代理确定,并提供给代理服务器325。代理服务器325的优先级感知模块367一般能评估各事件或应用程序的优先级(例如,包含时间的紧迫性,时间敏感性等);此外,优先级感知模块367能跟踪设备350的本地代理所确定的优先级。
[0395] 一个实施例中,连接管理器395通过优先级感知还能修改服务器300与设备350的通信频率(例如,使用或无线由无线控制器396控制)。例如,当需要发送满足一定重要性/优先级标准的数据或更新时,若未使用无线,服务器300可以通知设备350,请求使用无线。
[0396] 一个实施例中,代理服务器325能检测事件的重复(如从服务器/提供商310接收的事件、内容或数据),并允许事件累积,批量传输至设备350。基于模块367和/或模块366所跟踪的优先级感知和/或用户活动/应用程序行为感知,批量传输可以累积,并且能延迟传输事件。例如,当服务器300上检测到高优先级事件(满足阈值或标准)时,批次处理模块377可以启动批量传输多个事件至设备350(低优先级)。此外,当服务器从设备350接收数据,表明已在使用无线设备,这能触发服务器300的批量传输。一个实施例中,代理服务器325可以基于事件/事件的优先级对传输的批量信息/数据包进行排序,高优先级内容优先发送,防止连接中断或电池耗尽等。
[0397] 一个实施例中,服务器300缓存数据(例如,由缓存策略管理器355管理),能通过网络(例如,蜂窝网络)修改(如降低)其与设备350的通信频率。数据能缓存,例如至服务器缓存335,为后续检索或批量发送至设备350减少设备350打开无线的需要。服务器缓存335可以部分或者全部放置于主机服务器300内,尽管在图3A示例中,其置于主机服务器300外部。某些实例中,服务器缓存335可能相同于和/或部分或全部统一于另一缓存,由另一实体进行管理(例如图1B所示的可选缓存代理服务器199),如被应用程序服务器/内容提供商310、网络服务提供者,或其他第三方进行管理。
[0398] 在一个实施例中,内容缓存由设备350在主机服务器300的支持下本地执行。例如,主机服务器300的代理服务器325向应用程序服务器/提供商310查询请求,监测响应的变化。当检测到更改或新响应时(如通过新数据检测器347),代理服务器325通知移动设备350,因此设备350上本地代理可以确定本地缓存存储作为响应的相关缓存条目无效(如标记为陈旧)。另外,数据无效模块368能基于从应用程序服务器/提供商310接收的响应,自动指示设备350的本地代理使某些缓存数据失效。当新的内容被从内容服务器310接收时,缓存的数据被标记为无效,也可以被替换或删除。
[0399] 应注意的是,检测器347能通过一种或多种方式检测到数据更改。例如,服务器/提供商310能将更改通知主机服务器300。为响应源服务器/提供商310的直接检索,主机服务器300也能检测到更改。某些实例中,代理服务器325可以另外,预加载设备350上本地缓存的新/更新数据。当主机服务器300检测到移动设备上的无线已在使用时,或服务器300有附加内容/数据发送至设备350,可以执行此操作。
[0400] 一或多个上述机制可以同时被执行或基于应用程序(例如不同服务器/提供商310的不同策略)进行调整/配置。某些实例中,源提供商/服务器310可通知主机300某些类型的事件(如满足优先级阈值级别的事件)。此外,提供商/服务器310被配置为不论事件优先级,均在特定间隔期通知主机300。
[0401] 一个实施例中,主机300的代理服务器325可以监测/跟踪从内容源接收的数据请求的响应,在将结果返回至移动设备之前更改结果,当内容源的数据请求所产生的结果与返回到移动设备的结果一致时,这种监测才适合,从而在特定的请求不存在新/更新时,防止使用网络/功耗。设备350的本地代理能指示代理服务器325执行这种监测或代理服务器325对于一特定请求,接收到几个相同的响应时,能自动启动这一过程(或在一段时间内几个相同的响应)。
[0402] 一个实例中,服务器300,例如,通过活动/行为感知模块366,能够在独立于移动设备350的设备中识别或检测用户活动。例如,模块366可以检测被访问的用户收件箱(例如电子邮件或收件箱类型)。这可以表明,用户利用设备,而非移动设备350与他/她的应用程序进行互动,可能根本无需频繁的更新。
[0403] 在本实例中,服务器300降低将新或更新后内容发送至移动设备350的频率,或只要检测到用户使用另一台设备访问,消除所有通信。降低具体应用程序的频率(例如,用户在另一台设备上与应用程序互动)或普遍降低与移动设备350的频率(例如,因为用户被检测到通过另一台设备与服务器或应用程序进行互动,他/她同时利用该设备访问其他服务)。
[0404] 在一个实施例中,主机服务器300能够代表设备350轮询内容源310,以节约电能或设备350的电池消耗。例如,移动设备350上的某些应用程序可以预定的方式反复轮询其各自服务器310。代理控制器365的活动/行为模块366能够跟踪其重复或其他类型的应用程序行为。主机服务器300从而可以轮询移动设备350上应用程序的内容源,要不然设备350通过无线(如包含蜂窝连接)也能执行。主机服务器通过HTTP访问引擎345,创建HTTP连接或利用无线控制器396通过蜂窝网络连接到源310,轮询源310新或更改数据。当检测到新或更改数据时,新数据检测器347通知设备350,该数据可用和/或将新/更改数据提供给设备350。
[0405] 在一个实施例中,连接管理器395确定移动设备350不可用(例如无线已关闭),并利用SMS传输内容至设备350,如通过图1B所示的SMSC。SMS是用来传输无效消息、批次无效消息,甚至在内容足够小以适应到仅有几个(通常是一个或两个)SMS消息的情况下的内容。这就避免了访问的无线电信道发送的开销信息的必要。主机服务器300可以将SMS用于某些优先级高于阈值或满足其他标准的事件或响应。主机服务器300还能将SMS作为带外抑制触发器维持或唤醒IP连接,这是维持IP持续连接的替代之法。
[0406] 一个实施例中,代理服务器325的连接管理器395(如心跳管理器398)能够生成和/或代表连接的设备350传输心跳信息,为设备350上运行的应用程序维持与提供商310的后台连接。
[0407] 例如,在分布式代理系统中,设备350的本地缓存可以防止通过蜂窝网络或其他网络发送任何或全部维持应用程序必要TCP/IP连接所需心跳信息,却反而依赖主机服务器300的代理服务器325生成和/或发送心跳信息,以维持与后台的连接(例如图1A所示应用程序服务器/提供商110)。代理服务器能够独立于移动设备本地代理的操作,生成保活(心跳)信息。
[0408] 存储库312、314和/或316可以另外存储软件、说明性数据、图像、系统信息、驱动程序、和/或任何由主机服务器300的其他组件和/或任何其他服务器操作所使用的数据项目。存储库可以由数据库管理系统(DBMS)管理,例如但不限于:Oracle、DB2、MicrosoftAccess、MicrosoftSQLServer、PostgreSQL、MySQL,FileMaker等。
[0409] 存储库可以通过面向对象技术和/或文本文件实施,由分布式数据库管理系统,面向对象的数据库管理系统(OODBMS)(例如:概念库、FastDB主存数据库管理系统、JDOInstruments、ObjectDB等),对象-关系数据库管理系统(ORDBMS)(例如:Informix、OpenLinkVirtuoso、VMDS等),文件系统,和/或任何其他方便或已知的数据库管理程序包进行管理。
[0410] 图3B是一框图,展示了如图3A的例子中所示的缓存系统的缓存策略管理器中的组件的进一步的示例,其能够为移动应用程序(例如,移动应用程序)行为和/或网络条件缓存并适配缓存策略。
[0411] 在一个实施例中,缓存策略管理器355可以进一步包括元数据生成器303、缓存查找引擎305、应用协议模块356、具有轮询时间表管理器358的内容源监测引擎357、响应分析器361和/或更新的或新的内容检测器359。在一个实施例中,轮询时间表管理器358还包括主机时序模拟器358a、长轮询请求检测器/管理器358b、时间表更新引擎358c和/或时间调节引擎358d。为修改或增补,元数据生成器303和/或缓存查找引擎305可以耦合到缓存335(或服务器缓存)以缓存条目或其查询。
[0412] 在一个实施例中,代理服务器(例如,图1B和图3A的例子的代理服务器125或325)可以通过监测引擎357监测新的或更改的数据的内容源。如图所示的代理服务器是图2A-B的移动设备250的外部的实体。内容源(例如,图1B的应用程序服务器/内容提供商110)可以是已被识别至代理服务器(例如,由本地代理)作为具有被本地缓存在移动设备(例如,移动设备150或250)上的内容的一种。例如,内容源可以由监测引擎357以一频率进行监测,该频率是基于移动设备的内容源的轮询频率。例如,轮询时间表可以由本地代理产生并发送到代理服务器。轮询频率可以被轮询时间表管理器358跟踪和/或管理。
[0413] 例如,代理服务器可以轮询代表移动设备的主机(例如,内容提供商/应用服务器)和通过主机定时模拟器358a模拟至主机的客户端行为。轮询行为可以被模拟以包括在主机持久连接(例如,通过长轮询请求检测器/管理器358b)中经历的长轮询请求-响应序列的特征。请注意,一旦轮询间隔/行为被设定,设备端上的本地代理275和/或服务器端上的代理服务器325可以验证应用程序和应用服务器/内容主机行为是否匹配或是否可以被这种预测模式所表示。在一般情况下,本地代理和/或代理服务器可以检测出偏差,并且在适当的时候,重新评估和计算、确定或估计另一项轮询间隔。
[0414] 在一个实施例中,分布式代理的服务器端的缓存策略管理器355可以配合或独立于移动设备上的代理服务器275识别或检测长轮询请求。例如,缓存策略管理器355可以确定阈值,该阈值被用于与在请求-响应序列中的应用程序请求的响应延迟间隔时间(图17A-B的示例时序图中所示的间隔时间‘D’)进行比较以识别或检测长轮询请求、可能的长轮询请求(例如,用于与客户端通信的主机的永久连接的请求,包括但不限于,长期持有的HTTP请求、能够以COMET式推送的持久连接、HTTP流的请求,等等)或其他可以以不同方式被作为长轮询请求处理的请求。
[0415] 例如,该阈值可以由代理服务器325使用由移动设备的客户端/应用程序生成的请求的响应延迟间隔时间进行确定,该移动设备由多个不同的蜂窝或无线网络提供服务。由于代理325位于主机300上能够通过多个网络与多个移动设备通信,缓存策略管理器355在全球层面上访问应用程序/客户端信息,其可用于设置阈值以分类和检测长轮询中。
[0416] 通过经由不同或相同的网络跟踪设备的应用程序的响应延迟间隔时间,缓存策略管理器355可以设置一个或多个阈值以用于与长轮询检测的响应延迟间隔时间的比较。由代理服务器325设置的阈值可以是静态或动态的,并且可以与条件和/或生存时间(相对或绝对的过期时间/日期)相关联。
[0417] 另外,代理服务器325的缓存策略管理器355可以进一步确定该阈值,全部或部分地基于给定无线网络的网络延迟、由给定运营商(服务提供商)服务的网络,或多个无线网络。代理服务器325还可以基于一个或多个应用程序(例如,移动应用程序)或移动客户端请求定向至的应用服务器/内容提供商(例如,110)的延迟确定长轮询请求识别的的阈值。
[0418] 代理服务器可以在被监测的内容源检测到新的或更改的数据并传输消息到移动设备通知其这样的改变以使得移动设备(或移动设备上的本地代理)可以采取适当的动作(例如,无效在本地缓存中的缓存的元素)。在某些情况下,代理服务器(例如,缓存策略管理器355)基于检测到新的或更改的数据也可以在其缓存(例如,分别在图1B和图3A的例子中的服务器缓存135或335)中存储新的或更改的数据。存储在服务器缓存335中的新的/更新的数据可以在某些情况下被使用以满足移动设备的内容请求,例如,它可以用于代理服务器通知移动设备新的/更改的内容之后以及本地缓存的内容已无效之后。
[0419] 类似于图2B的例子中所示的元数据生成器203的元数据生成器303可以在移动设备250生成为请求缓存的响应的元数据。元数据生成器303可以生成存储在服务器缓存335中的缓存条目的元数据。同样地,缓存查找引擎305可以包括相同或相似的用于描述图2B的例子中所示的缓存查找引擎205的功能。
[0420] 响应分析器361可以执行任何或所有的功能,该功能与分析为请求接收的响应相关,该请求在移动设备250以相同或类似的方式被生成至,图2B的例子中所示的本地代理的响应分析器246d。由于代理服务器325能够从定向至移动设备250的应用程序服务器/内容源310接收响应,代理服务器325(例如,响应分析器361)可以执行类似的响应分析步骤以确定如描述本地代理的响应分析器的缓存性能。响应分析程序的例子也结合图11-13的例子中所示的流程图被描述。响应可以被分析以补充或代替可以被在移动设备250上的本地代理275执行的分析。
[0421] 此外,基于如为本地代理275的时间表更新引擎描述的移动设备250的应用程序的应用程序请求间隔改变,时间表更新引擎358c可以更新给定应用程序服务器/内容主机的轮询间隔。时间调整引擎358d可以设置应用程序服务器/内容主机的轮询即将开始的初始时间,以防止在服务为在本地代理275中的时间表更新引擎所描述的新鲜内容之前再次地过时内容的服务。时间表更新和时间调整算法可连同或替代移动设备250上的本地代理275执行的类似的过程。
[0422] 图3C是一框图,展示了如图3A的例子所示的分布式代理系统中的服务器端组件上的代理服务器375中的缓存策略管理器355中的组件的另一示例,其能够管理并检测缓存击败机制及监测内容源。
[0423] 在一个实施例中,缓存策略管理器355可以进一步包括:缓存击败源管理器352、具有轮询时间表管理器358的内容源监测引擎357,和/或更新或新的内容检测器359。缓存击败源管理器352可以进一步包括标识符修改器模块353和/或标识符模式跟踪模块354。
[0424] 在一个实施例中,代理服务器(例如,图1B和图3A的例子中的代理服务器125或325)可以通过监测引擎357的为新的或更改的数据检测内容源。内容源(如图1B的应用服务器/内容提供商110或图3A的310)可以是已被识别至代理服务器(例如,由本地代理)以具有在移动设备(例如,移动设备150或250)上被本地缓存的内容。例如,内容源310可以由监测引擎357以一基于移动设备的内容源的轮询频率监测。例如,轮询时间表可以由本地代理产生并发送到代理服务器325。轮询频率可以被轮询时间表管理器358跟踪和/或管理。
[0425] 在一个实施例中,代理服务器325在轮询内容源310中使用标准化的标识符或修改的标识符以检测新的或更改的数据(响应)。标准化标识符或更改的标识符也可由代理服务器325用于在服务器缓存335上存储响应。在一般情况下,标准化的或修改的标识符可以被当为缓存的内容采用击败机制时使用。缓存击败机制可以是在例如URI或者URL的标识符中的变化参数的形式,并且可以包括变化的时间/数据参数、随机变化的参数或其它类型的参数。
[0426] 标准化标识符或更改标识符删除或以其他方式取代变化参数为相关联的后续请求和相关响应的标识,也可以被用于轮询内容源。在一个实施例中,修改后的标识符由代理服务器325(分布式代理系统的服务器端组件)上的缓存策略管理器355的缓存击败源管理器352(例如,标识符修改器模块353)的生成。修改后的标识符可以利用替代参数(一般在一段时间是静止的)代替用来击败缓存的改变的参数。
[0427] 缓存击败源管理器352可选地包括标识符模式跟踪模块354以跟踪、存储和监测各种标识符的修改或为一个或多个内容源(如应用服务器/内容主机110或310)处理内容的标识符以不断验证由代理服务器325使用修改的标识符和/或标准化的标识符以轮询的作为预测或意图的内容源(例如,接收相同的响应或以其他方式与相比原始的、未修改的标识符相关的响应)。
[0428] 模式跟踪模块354检测导致内容源上的不稳定或不可预知行为(例如,将被发送的意想不到的响应)的标识符的修改和标准化,跟踪模块354可以登录修改并指示缓存击败源管理器352生成另一个修改/标准化或通知本地代理(例如,本地代理275)生成另一个修改/标准化以在轮询内容源中使用。在替代方案或并行方案中,来自移动设备(例如,移动设备250)的给定应用程序/客户端的请求可以暂时通过网络发送到内容源用于提供直接响应给移动设备和/或直到工作可以产生标识符的修改。
[0429] 在一个实施例中,当新的或更改的数据被检测用于已经存储在移动设备(例如,移动的移动设备250)上的本地缓存(例如,缓存285)中的响应时,响应被作为服务器缓存原始被存储在服务器缓存中。因此,移动设备或本地代理275可以连接到代理服务器325以检索请求的响应的新的或更改的数据,该请求是之前被本地地缓存在本地缓存285中(现在是无效的,过时的,或以其他方式确定为无关的)。
[0430] 代理服务器325可以在被监测的应用服务器/内容主机310检测新的或改变的数据并传输消息至移动设备通知它这样的变化以使得移动设备(或在移动设备上的本地代理)可以采取适当的措施(例如,无效在本地缓存中的缓存的元素)。在某些情况下,代理服务器(例如,缓存策略管理器355),基于检测到新的或更改的数据,也可以存储新的或更改的数据在其缓存中(例如,分别在图1B和图3A的例子中的服务器缓存135或335)。存储在服务器缓存中的更新的/新的数据可以被使用,在某些情况下,以满足移动设备的内容请求,例如,它可以在代理服务器通知移动设备新的/更新的内容以及本地缓存的内容已经失效之后被使用。
[0431] 图3D是一框图,展示了如图3A的例子中所示的代理服务器中的附加组件的例子。该例子进一步能够基于移动应用程序行为和/或流量优先级实现流量分类和策略实施。
[0432] 在代理服务器325的一个实施例中,流量整形引擎375进一步耦合到流量分析器336以分类定义策略的移动流量和移动流量以及被定向至一个或多个移动设备(例如,图
2A-2D的移动设备250)或应用程序服务器/内容主机的事件(例如,图1A-1B的110)。在一般情况下,代理服务器325远离移动设备和主机服务器,如图1A-1B的例子中所示。代理服务器
325或主机服务器300可以监测多个移动设备的流量,并能够为不同的移动设备分类流量和制定流量策略。
[0433] 另外,代理服务器325或主机服务器300可以与多个运营商或网络运营商合作并可以实施关于各种类别的流量分类和流量策略实施的运营商特定策略。例如,代理服务器325或主机服务器的300的流量分析器336可以包括一个或多个:优先引擎341a,时间关键性检测引擎341b、应用程序状态分类器341c和/或应用程序流量分类器341d。
[0434] 这些引擎或模块的每一个可以跟踪基于不同的无线运营商被认为是优先级、时间关键性、后台/前台或互动/维护的不同标准。不同的标准也可能存在不同的移动设备类型(例如,设备的型号、制造商、操作系统等)。在某些情况下,移动设备用户可以调整有关的流量类别的设定或标准以及代理服务器325能够跟踪和实施这些用户调整的/配置的设置。
[0435] 在一个实施例中,流量分析器336能够检测、确定、识别或推断一个或多个移动设备(如移动设备150或250)上的应用程序的活动状态,例如,流量通过应用程序状态分类器341c和/或流量分类器341d源自或被定向到该设备。活动状态可以基于应用程序是否是处于一个或多个移动设备(通过应用程序状态分类器341c)的前台或后台状态,因为前台应用程序与后台应用的流量可以被区别处理以优化网络使用。
[0436] 在备用或组合中,应用程序的活动状态可以由无线连接的移动设备确定(例如,通过在本地代理中的应用程序行为检测器)并传输给代理服务器325。例如,活动状态可以确定、检测、确定或推断出启发式确定性水平,基于移动设备的背光状态(例如,通过背光检测器)或其他软件代理或移动设备上的硬件传感器,包括但不限于电阻传感器、电容传感器、环境光传感器、运动传感器、触摸传感器等。在一般情况下,如果背光开启,流量可以视作为或确定为被从应用程序产生,该应用程序是活跃的或在前台中固定,或者流量是是互动的。此外,如果背光开启,流量可以视作为或确定来自从用户交互或用户活动的流量,或包含用户期望在一段时间帧内的数据的流量。
[0437] 活动状态可以从评估、确定、评价、推断、识别移动设备250(例如,通过用户活动模块215)识别用户的活动并传达给代理服务器325。在一个实施例中,活动状态被基于流量是否是交互式流量或维护流量而确定。交互式流量可以包括直接从用户活动/与应用程序的交互生成的响应和请求的事件,并且可以包含用户等待或期待收到的内容或数据。维护流量可以被用于支持不直接由用户检测的应用程序的功能。维护流量还包括可能发生响应用户动作的行动或事件,但用户不是积极等待或期待响应。
[0438] 时间关键性检测引擎341b可以大致确定、识别、推断包含在流量或应用程序服务器(例如,应用程序服务器/内容源110)中的数据的时间敏感性,该流量从移动设备250发出或发至主机服务器300或代理服务器325的应用程序服务器。例如,时间敏感数据可以包括状态更新、更新股票信息、IM状态信息、电子邮件或其他信息、从手机游戏应用程序产生的动作、网页请求、位置更新等。
[0439] 不是时间敏感或时间关键性的数据,内容或请求的本质,可包括删除消息、标记读取或编辑操作、应用程序特定动作,例如添加-朋友或删除-朋友的请求、某些类型的消息,或其他本质上不经常变化的消息等等的请求。在某些情况下,当数据不是时间关键性时,允许流量被发送到移动设备的时序是基于当存在需要被发送到相同移动设备的附加数据时。例如,流量整形引擎375可以以一个或多个后续事件调整流量,事件将在移动设备无线电的单个电源开启事件中被一起发送(例如,使用调整模块378和/或批次处理模块377)。调整模块378还可以调整时间上接近定向至相同主机服务器的轮询请求,因为这些请求可能使用相同的数据进行响应。
[0440] 在一般情况下,无论是从主机服务器传送到移动设备的新的或更改的数据,可基于新的或更改的数据相关的移动设备上的应用程序是否正在前台中运行(例如,通过应用程序状态分类器341c),或新的或更改的数据的优先级或时间关键性被确定。如果应用程序是在移动设备上的前台中,或者如果应用程序是在前台并处于与移动设备上的用户交互的活跃状态,和/或是用户否在等待将被在新的或更改的数据中提供的响应,代理服务器325可以发送新的或更改的数据到移动设备。代理服务器325(或流量整形引擎375)可以发送高优先级或时间关键性的新的或更改的数据。
[0441] 同样地,如果应用程序是在移动设备上的后台,代理服务器325(或流量整形引擎375)可以抑制新的或更改的数据的发送。如果用户不是在等待将被在新的或更改的数据中提供的响应,代理服务器325也可以抑制新的或变更数据的发送,其中抑制是由耦合到主机服务器的代理服务器实施的并能够以无线连接到移动设备。
[0442] 一般来说,如果数据,包括新的或更改的数据,是低优先级的或不是时间关键的,代理服务器可以等待传输数据,直到一段时间之后或直到有额外的数据要被发送(例如,通过调整模块378和/或批次处理模块377)。
[0443] 图3E是一框图,展示了图3A的流量整形引擎375的例子中的附加的组件的例子。该例子还能够调整至移动或宽带设备或其他接收方的数据传输,以优化被建立用于无线网络或宽带网络中的传输的连接。
[0444] 在代理服务器325的一个实施例中,流量整形引擎375还包括通知引擎379,调整模块378包括调整的轮询跟踪器378a以及批次处理模块377还包括连接触发器377a。
[0445] 在一个实施例中,代理服务器325可以轮询不同的主机,该主机以一时间表服务给定的移动设备上的各种应用程序(例如,第一和第二服务)。轮询时间表可由本地代理(如,图2A-2E的代理275)设置,可以包括在已被调整的移动设备(例如,设备250)上的应用程序分配的轮询间隔。轮询时间表可以由例如代理服务器325中的流量整形引擎375的调整模块378中的调整后轮询跟踪器378a进行跟踪。服务/应用程序的调整的轮询间隔可以根据在移动设备上的其他服务的轮询间隔被确定以使得在远程代理服务器325处接收到的数据可以在批次处理中被提供至移动设备,例如,由批次处理模块377。
[0446] 轮询时间表也可以包括初始启动时间(t0)以启动代表在给定移动设备上的多个应用程序轮询。不同的主机的第一轮询的初始启动时间(例如,共有的起始时间点)可以被选择,主机服务于第一和第二服务,例如,由本地代理275(例如,图2A-2E的代理服务器275),在某些情况下,由代理服务器325。当由本地代理确定时,本地代理传播轮询的共有的起始时间点至代理服务器325。在一个实施例中,共有的起始时间点被设定为在未来延补通信偿迟。
[0447] 在一个实施例中,如果给定移动客户端/移动应用程序并未打开或激活,或者如果给定移动设备250没有连接至无线网络,连接触发器377a可以发送触发(例如,在带外)触发到移动设备或移动设备上的本地代理以请求无线电供电和/或激活一个或多个相关的应用程序。例如,批次处理模块377可批次处理的各种内容或数据发送至给定移动设备上的多个应用程序,如果移动客户端/移动应用程序并未打开或激活,连接触发器377a请求可以发送触发请求应用程序被激活。另外,通知引擎379可以发送移动设备250一指示,表明数据已准备好要被发送,请求移动设备250打开无线电,如果目前是在关闭模式的话。
[0448] 需要注意的是代理服务器325监测多个移动设备并跟踪应用程序特性和/或多个设备、用户和网络的用户行为/特性。因此,上述有关调整轮询间隔跟踪器的特征,虽然描绘了定向至给定设备上的多个应用程序的一个例子,请注意,同样对多个设备进行跟踪,在其上安装其自己的其他的应用程序集,基于每个移动设备上的应用程序,例如位于之上的本地代理(例如,本地代理275的图2E中示出的组件,本地代理275可被安装在一个或多个的由代理服务器325提供服务的多个移动设备上),为该应用程序集计算调整轮询间隔或轮询时间表。
[0449] 需要注意的是,因为代理服务器325管理至/来自多个移动设备的流量,移动设备在一个网络中、跨越多个网络、在一个地理区域中、跨越多个地域,一个网络运营商或跨越多个网络运营商,代理服务器325可以基于流量条件或网络条件的数据概述或汇总调整数据的流量和批量传输。代理服务器325可以优先考虑移动设备的数据传输,例如,当检测到网络拥塞时。例如,代理服务器325可以将数据传送到移动设备,其中移动设备用户的订阅的类型或级别基于传递到移动设备的内容的最高优先级被分层或交错(例如,当设备A的最高优先级数据具有高于设备B的最高优先级数据的优先级,则一批数据可能被首先传递到移动设备A相比于被传递至移动设备B)。
[0450] 需要注意的是,例如,有可能存在用于地理区域、特定的网络运营商、网络服务的类型,或所述的任何组合的代理服务器325。基于不同的服务实体,代理服务器325可以聚合有关网络流量、运营商设置、应用程序喜好/需求、用户偏好,订阅相关的参数的不同类型的信息,上述的各种组合可以由代理325在优化需要由接收移动设备建立的连接中使用。多个代理服务器325服务在地理区域中的不同的网络,不同的运营商可以共享其间的流量、订阅、用户或应用程序级别信息,以进一步促进网络资源的利用率、流量管理以及在某些情况下促进至移动设备的数据传输。
[0451] 图4展示了分布式代理系统460如何协调无线网络中从移动设备450到应用程序服务器/内容提供商495的数据请求,通过分布式代理系统460执行的内容缓存和监测,以达节约网络和电量资源的目的。
[0452] 为满足移动设备450的应用程序或服务器请求,移动设备450或其执行的软件控件在缺少分布式代理系统460时,直接执行应用程序服务器495的数据请求402(如HTTP、GET、POST或其他请求),并且直接接收服务器/提供商495的响应404。如果数据已更新,移动设备450的控件455自我刷新以反映更新,等待一段时间后向服务器/提供商495提出另一数据请求。
[0453] 一个实施例中,设备450上提出请求的客户端或软件控件455可以利用分布式代理系统460处理服务器/提供商495的数据请求模式。一般来说,分布式代理系统460能包含本地代理465(通常被认为是系统460的客户端组件,可放置在移动设备450内),缓存代理475(被认为是系统460的服务器端组件470,可放置在主机服务器485内,或全部或部分置于主机服务器485外部)和主机服务器485。本地代理可以通过任何网络或网络组合连接到缓存代理475和主机服务器485。
[0454] 当分布式代理系统460用于数据/应用程序请求时,控件455能通过本地代理465执行数据请求406。本地代理465可以截获设备应用程序的请求,并识别请求的连接类型(如HTTP获取请求或其他类型的请求)。本地代理465能查询本地缓存该请求的之前信息(例如,以确定本地存储的响应是否可用和/或是否有效)。如果本地存储的响应不可用,或所存储的响应无效,本地代理465能更新或存储请求的信息,请求时间或任何附加数据至本地缓存。该更新的信息可能用来满足后续的请求。
[0455] 然后本地代理465将请求发送到主机服务器485,主机服务器485执行该请求406,并返回结果作为响应408。本地代理465可存储结果和结果另外的相关信息,将结果返回给请求控件455。
[0456] 一个实施例中,如果同样的请求出现多次(在特定时序内),并且产生结果相同,本地代理465可以通知服务器485,在将结果返回至本地代理465或请求控件455前,应该监测该请求的结果变化(如步骤412和414)。
[0457] 一个实施例中,如果请求被标记监测,本地代理465即可存储结果至本地缓存。当控件455提出数据请求416,且请求具有可用的本地响应,为本地代理465所截获,本地代理465无需通过无线网络创建连接通信,便可从本地缓存中返回响应418。
[0458] 此外,服务器代理执行被标记监测420的请求,以确定是否更改给定请求的响应422。一般来说,主机服务器485独立于控件455或本地代理465的操作执行监测。当接收到请求的意外响应422时,服务器485通知本地代理465该响应已更改(例如步骤424的无效通知),并且应该删除客户端上本地存储的响应或替换为新响应。
[0459] 这种情况下,设备450上控件455的后续数据请求导致主机服务器485的数据被返回(如通过缓存代理475),以及在步骤428中,请求从缓存代理475被满足。因此,当移动设备450上控件或软件应用程序的内容/数据实际更改时,通利用分布式代理系统460智能地使用无线网络(蜂窝)。正因为如此,检查应用程序数据的变化所需要的流量不通过无线网络(蜂窝)执行。这样能减少产生的网络流量,缩短总时间和移动设备450无线模块的上电次数,从而降低电池消耗,还能释放网络带宽。
[0460] 图5展示了在移动设备550上利用分布式代理和缓存系统(例如图1B示例中的分布式系统),执行混合型IP和SMS省电模式的示例过程。
[0461] 步骤502中,本地代理(如图1B所示代理175)监测设备的用户活动。当确定用户活跃时,服务器推送也活跃。以这种方式,如果该推送可用,也能维持持续推送的IP连接,并且在其可用时,SMS触发器立即被发送至移动设备550。
[0462] 步骤504中,当用户被检测为不活跃或闲置一段期间(如本实例所示的闲置期为20分钟),本地代理可以调整设备进入省电模式。在省电模式下,当本地代理接收到信息或源自分布式代理和缓存系统服务器端的远程代理(例如图1B所示服务器代理135)的回应,本地代理能够以指令回应,表明该设备550目前处于省电模式(例如通过远程节电过程指令)。某些实例下,本地代理可以借此机会通知各帐户或提供商(如图510A和510B)的当前节电状态(例如时序使用相同的无线上电事件)。
[0463] 一个实施例中,本地代理的响应可以包含,当设备550将要接收更改或附加数据时,表示远程代理(例如服务器代理135)的时间(例如节电期)和/或应用程序服务器/提供商510A/B。本地代理可以设置默认的节电期。
[0464] 在一个实施例中,如果在任一省电期间结束前接收到新的、更改的或不同的数据或事件,与服务器510A/B通信的等待期为现存期间,而非之后的时间段。远程代理服务器自接收到设备550的节电通知,作为回应,在请求时间内(等待期)停止发送更改信息(数据或短信)。等待期结束时,能执行所接受的任何通知,例如更改信息作为单一批量事件或独立事件发送至设备550。若没有通知,以数据恢复推送,或将短信发送至设备550。代理服务器可以安排轮询或数据收集事件的时间以最优化批量发送至移动设备550的内容以增加客户端在下一次无线上电事件中接收数据的概率。
[0465] 需注意的是,等待期能实时更新操作,以适应操作情况。例如,本地代理能够调整等待时间,以适应发生在系统中的不同的延迟。
[0466] 在步骤508中,检测设备550的用户活动需要退出省电模式。当设备550退出省电模式时,它可以开始接收与任何待定通知相关的任何更改。如果节电期间已过,则无需节电取消指令,因为代理服务器将处在传统的推送操作模式中。
[0467] 一个实施例中,当设备550插入充电器时,省电模式不能适用。用户或另一方可以重新配置或调整此设置。一般说来,用户通过设备550上的用户界面可以开启和关闭省电模式。一般说来,电源事件接收数据的时间与节点指令同步,以最优化使用无线。
[0468] 图6是一流程图,展示了在移动设备和远程代理之间的分布式内容缓存以及内容缓存的分布式管理的示例过程。
[0469] 如图4的例子中的分布式交互图所示,所公开的技术是一种具有各方面缓存任务的分布式缓存模型,该缓存任务在客户端/移动设备端(例如,图4的例子中的移动设备450)以及服务器端(例如,服务器端470包括主机服务器485和/或可选的缓存代理475)之间拆分。
[0470] 一般而言,设备端的责任可包括确定特定请求的响应是否可以是和/或应该被缓存的。代理的设备端可以基于从请求和响应中/在请求和响应期间收集的信息(例如,时序特性、检测模式、具有启发法的检测模式、可预测性或重复性的指示)做出这个决定并缓存这个决定(例如,把它存储在移动设备上的本地缓存中)。设备端也可以通知在分布式缓存系统中的服务器端的本地缓存事件,并通知其监测内容源(如图1A-B的应用程序服务器/内容提供商110)。
[0471] 设备端可以进一步指示分布式代理的服务器端定期验证缓存响应(例如,通过轮询的方式或发送轮询请求到内容源)。设备端可以进一步决定特定缓存请求的响应是否应从本地缓存(例如,是否检测缓存击中)返回。设备端(例如,设备上的本地代理)可以通过使用信息作出决定,该信息从由内容源接收到的请求和/或响应中收集/在由内容源接收到的请求和/或响应的过程中收集。
[0472] 在一般情况下,服务器端的责任可包括验证缓存的响应的关联(例如,确定缓存的响应是否依然有效或有关于其相关的要求)。当缓存的响应被检测到不再有效或不再是相关的时候(例如,服务器无效给定的内容源),服务器端可发送移动设备无效的请求以通知设备。然后设备端可从本地缓存移除响应。
[0473] 图6显示了为每个检测到的或在移动设备(例如,分布式代理的客户端)检测到的拦截的请求(例如,HTTP请求)所执行的缓存逻辑流程。在步骤602中,代理的客户端(例如,在图2A-B示出的本地代理275或图4的移动设备450)接收到一个请求(从应用程序(例如,移动应用程序)或移动客户端)。在步骤604中,URL被标准化,并在步骤606中客户端检查以确定该请求是否是可缓存的。如果在步骤612中该请求被确定为不可高速缓存,则该请求在步骤608中被发送到源(应用服务器/内容提供商),并在610中接收到响应以及交付给请求应用程序622,类似于无需由客户端代理的拦截的请求-响应序列。
[0474] 如果该请求被确定为是可缓存的,在步骤612中,客户端查找缓存以确定当前请求的缓存条目是否存在。如果存在,在步骤624中,客户端能够确定该条目是否是有效的,如果有效,客户端可以检查请求以查看是否在步骤628中包括一个验证器(例如,修改后的头部或实体标签)。例如,验证的概念是躲避至RFC2616的13.3节,其描述头部的可能类型(例如,电子标签、修改_何时、需要_重新生效,编译指示未_缓存)并形成无效响应632,如果是这样,则在步骤622中被传递到请求应用程序。如果请求不包含步骤628所确定的验证,在步骤630中从本地缓存中形成一个响应,并在步骤622中传送到请求应用程序。该验证步骤可用于通常被认为不能被缓存的内容。
[0475] 相反地,如果在步骤624中缓存条目被发现但被确定为不再有效或无效,则在步骤618中,代理的客户端发送请求616至内容源(应用程序服务器/内容主机),并直接从源接收响应。同样,如果在步骤612中,缓存条目在查找过程中被发现,该请求在步骤616中也被发送。一旦接收到响应,客户端检查响应以确定在步骤626中它是否是可缓存的。如果是这样,在步骤620中响应被缓存。然后客户端在步骤614中发送另一个轮询,然后在步骤622中传递响应至请求应用程序。
[0476] 图7是一交互图,展示了内容的分布式代理系统的缓存管理,内容经由长期保留请求传递至移动应用程序,同时保证被传递内容的新鲜度。
[0477] 该图展示了在长期持有的请求(如长期持有的HTTP请求、长轮询、或HTTP流)中接收的缓存的响应如何被提供至请求应用程序755和过期/无效/非相关的缓存条目的管理。长期持有的请求可以是持久连接的任何一个请求,该持久连接是在设备和服务器之间被持有直到响应被在服务器获得并被发送(推送)至设备。长期持有的请求或长期持有的HTTP请求可以允许设备/服务器交互以模拟内容经由持久连接推送(例如,COMET式推送),例如,通过HTTP的持久连接。
[0478] 在步骤702中,应用程序755发送一个请求,该请求被代理系统760的客户端/设备端上的移动设备750上的本地代理765的检测并截获。需要注意的是所示的请求-响应序列702、704、706和708会在长轮询搜索期间之后出现,该长轮询搜索期间有时由应用程序(例如,移动应用程序)发送长轮询请求来执行。长轮询搜索期间可能会或可能不会被执行,但执行时,它允许请求应用程序755找到它可以持有请求的最长的时间量,在该请求结束时服务器/提供商795连接超时之前(例如,由于网络的原因,如套接字关闭)打开。
[0479] 特性请求-响应的时序的时序图进一步被在图8的例子中被说明。在一般情况下,设备代理750或本地代理765能够检测到来自应用程序755发起的请求-响应模式序列,而长轮询搜索和可以等待直到搜索期间在缓存来自长轮询请求之前固定。如果它被请求应用程序755执行,702和710之间所示的请求-响应步骤在长轮询搜索请求/响应对之后发生。
[0480] 当服务器795在步骤708中发送响应返回到设备端750的应用程序755时,在步骤704中请求被发送到服务器/提供商795或706以及在步骤706中请求超时或关闭。由于在步骤702中长期持有的请求发送的性质,当服务器795在步骤708中发送响应时连接超时。发送时的响应也由分布式代理760的移动端750上的本地代理765截获以用于本地缓存。
[0481] 一旦缓存,在步骤712中,本地代理765通知系统760的代理的服务器端770并请求服务器端770代理(例如,主机服务器785)开始监测的服务器/提供商795。在步骤714中,服务器端的代理770现在开始将请求发送到服务器/提供商795以为了监测从服务器/提供商795收到的响应716。
[0482] 下一次应用程序755发送请求718,在步骤722中,本地代理765确定现在存在的本地缓存条目并在提供缓存的响应返回应用程序755之前等待一段时间720(例如,长轮询间隔)。本地代理765允许经过一段时间以模拟具有应用程序755的服务器/提供商795的实际行为。由于在通过网络的实际的长轮询请求中,直到经过一些延迟才收到响应,给定的长轮询的特性。
[0483] 开始于步骤724,当在步骤726中来自服务器/提供商795的响应被验证时,从应用程序(例如,移动应用程序)发送的另一个请求755。在步骤744中,在回复缓存条目之前,在步骤728中本地代理765等待间隔。然而,在此期间,步骤730中服务器端代理770在监测响应中发送请求至服务器/提供商795并步骤734中在从服务器/提供商795接收的响应中检测内容的变化。因此,在步骤736中服务器端770代理在服务器端代理缓存更改的/更新的响应数据,并通知本地代理765无效相关联的缓存条目738。
[0484] 在步骤740中,本地代理765,响应于接收到的无效通知,设置相关联条目为“瞬态”无效,或以其他方式附加说明或表示被标记为删除或移除。在这点上,在步骤744中,本地代理765再次回复给应用程序755瞬态缓存。步骤742中,本地代理765也可以连接到服务器端代理770以服务器端770获得新的缓存数据在和在步骤746接收响应(新的/更新的响应)。
[0485] 在步骤748中,下一次从应用程序(例如,移动应用程序)发送的同样的请求,在步骤750中,本地代理765现在可以回答从服务器接缓存收到的响应。因此,即使在缓存条目无效时,应用程序(例如,移动应用程序)请求不需要通过网络(例如,无线或蜂窝网络)发送以接收当前的/有关的响应。在步骤754中,后续请求752被发送到本地代理765用于处理(例如,转发至应用服务器/内容提供商795)。
[0486] 图8展示了长轮询请求中的搜寻模式行为805的时序图以及当长轮询确定时的时间特征的时序图。
[0487] 在搜索模式805中,请求时间被保持增加的时间量(180,360....1024秒)直到请求超时无需接收来自服务器(如802、804、806、808中所示)的响应。在这个时间被检测后,请求时间现在被保持在小于超时所花费的时间(例如,现在500秒),并用于未来的长轮询请求。图810显示在长轮询搜索期间确定之后的请求/响应对的时序特性。这些特性可以在操作中由由本地代理和/或远程代理检测到并识别以用于缓存期间的处理。如前所述,分布式缓存系统可以开始缓存(可选),同时应用程序仍然在长轮询搜索模式,或在搜索期间805完成之后开始缓存以及应用程序在如810的固定模式中。一般情况下,如果在间隔中检测到减少,则响应不被缓存直到本地或远程代理可以验证随后接收到的响应满足缓存性能条件。
[0488] 在一般情况下,长轮询搜索可能会或可能不会由移动应用程序或客户端执行,但分布式系统包括为应用程序长轮询检测长轮询搜索活动的机制以及可以可以简单地忽略长轮询搜索请求并在经过搜索之后开始缓存,长轮询被在一些恒定或接近恒定的间隔值处确定或应用逻辑开始在搜索期间内缓存,从而加速缓存以提升性能和改善用户体验。
[0489] 过程802中,决定被作出以开始缓存从主机服务器受到的内容。决定可以通过在图9的例子中所示的示例流程被作出,图9描述了一个流程图,该流程图示出确定是否通过确定在步骤802中被主机服务器作出的轮询请求的频率和/或通过在步骤804中确定主机服务器的内容的变化的频率以缓存来自特定的主机服务器(内容源)的内容。在步骤806中,这两个步骤可以在决定来自主机服务器的内容是否是要被缓存中被结合使用或彼此独立地使用。
[0490] 在过程804中,来自内容服务器的内容被存储为在移动设备上的本地缓存中的缓存的元素。在过程806中,联系内容服务器的轮询请求通过分布式缓存系统被接收。在过程808中,如果确定移动设备的无线电没有被激活,以及在过程810中,即使当采用缓存击败机制时,缓存的元素被从本地缓存中检索响应轮询请求而不激活无线电。
[0491] 缓存击败机制,或使用的旨在击败由这样的标识符处理的缓存,可以由内容服务器采用(使用标识符的轮询请求所定向至的服务器)。在一般情况下,缓存击败机制或用于缓存击败的标识符可以被从包括在识别内容服务器的轮询请求中的源标识符的语法或模式检测的吞吐量的内容服务器的轮询请求中包含的资源标识符。
[0492] 例如,该资源标识符可以包括URI或URL并且URI/URL被通过执行一个或多个的下列步骤标准化:转化URI方案和主机为小写,大写在百分比转义序列中的字母,移除默认的端口并删除重复的斜线。此外,采用缓存击败的标识符的标识符的归一化过程移除任何部分的标识符,该标识符旨在击败缓存(例如,通常是在请求之间的变化的参数,该请求由参数的格式、模式、语法进行检测)。
[0493] 需要注意的是,旨在击败缓存的缓存击败机制或标识符的检测不需要100%的确定。具有某些特征的标识符(例如,具有参数匹配特定的格式)可以除了确定采用缓存击败外,可仅被作为缓存击败处理或用于为经由无限网络的缓存内容的目的击败缓存,例如这些可能被以分布式的方式进行管理。
[0494] 图9是一交互图,展示了具有通过无线网络从移动设备至应用程序服务器/内容提供商995的数据请求的应用程序(例如,移动应用程序)955轮询如何被缓存在本地代理上并且由分布式缓存系统(包括本地代理965和主机服务器985(具有服务器缓存935或缓存代理服务器975))管理。
[0495] 在一个例子中,当移动应用程序/部件955轮询应用程序服务器/提供商932时,轮询可以在移动设备上由本地代理965进行本地拦截934。本地代理965可以检测缓存的内容是可用于请求中的轮询内容并因此可以从本地缓存中检索响应以满足被拦截的轮询936,而无需使用无线网络带宽或其他无线网络资源。移动应用程序/部件955可随后接收响应至来自缓存条目938的轮询。
[0496] 在另一个例子中,移动设备应用程序部件955轮询应用服务器/提供商940。轮询由本地代理965拦截942并检测缓存内容无法在本地缓存中可用并决定为缓存944设置被轮询的源。为了满足要求,轮询被转发至内容源946。应用程序服务器/提供商995接收来自应用程序的轮询请求并提供响应以满足当前的请求948。在950中,应用程序(例如,移动应用程序)/部件955接收来自应用服务器/提供商的响应以满足请求。
[0497] 为了设置内容缓存,结合本地代理965跟踪应用程序的轮询频率并可以设置轮询时间表以被发送到主机服务器952。本地代理发送缓存设置至主机服务器954。主机服务器985可以使用缓存设置,其包括,例如,应用程序服务器/提供商的识别将可选地被轮询时间表956轮询。主机服务器985现在可以轮询应用程序服务器/提供商995以监测代表移动设备的请求958的响应。主机服务器985确定被接收的相同的响应并根据特定的轮询时间表962轮询应用程序服务器995。应用服务器/内容提供商995接收轮询并做出相应的响应964。
[0498] 主机服务器985检测更改的或新的响应并通知本地代理965。主机服务器985可以额外存储在服务器中缓存或缓存代理968中的更改的或新的响应。本地代理965从主机服务器985收到新的或更改的数据现已可用并可使受影响的缓存条目970无效的通知。下一次,应用程序(例如,移动应用程序)/部件955为同一服务器/内容提供商972产生了同样的请求,本地代理确定没有有效的缓存条目而检索来自服务器缓存974的响应,例如,通过HTTP连接。主机服务器985接收新响应的请求并发送响应回976至本地代理965。请求被从服务器缓存或缓存代理978满足,而不需要利用移动设备使用其无线电或消耗移动网络带宽,从而节省了网络资源。
[0499] 另外,当应用程序(例如,移动应用程序)在步骤980产生相同的请求,本地代理965,响应于确定没有有效的缓存条目可用,则在步骤982通过移动网络转发轮询到应用程序服务器/提供商。应用程序服务器/提供商995接收轮询并在步骤984中通过移动网络将响应返回到移动设备。因此,在步骤986中该请求使用移动网络从服务器/提供商被满足。
[0500] 图10是一交互图,展示了应用程序1055如何轮询来自应用程序服务器/内容提供商1095的内容,其通过无线网络采用标识符(例如,旨在击败缓存的标识符)中的缓存击败机制仍可以被检测并本地缓存。
[0501] 在一个示例中,当应用程序(例如,移动应用程序)/部件1055在步骤1032中轮询应用程序服务器/提供商时,在步骤1034中轮询可以在移动设备上由本地代理1065本地地拦截。在步骤1034中,在移动设备上的本地代理1065也可能确定(以某种程度的确定性和启发式)缓存击败机制由服务器提供商采用或可能采用。
[0502] 本地代理1065可以为请求中的轮询的内容检测缓存的内容是可用的,因此可以从本地缓存中检索响应以满足被拦截的轮询1036,而无需使用无线网络带宽或其他无线网络资源。在步骤1038中,应用程序(例如,移动应用程序)/部件1055可随后接收响应至来自缓存条目(例如,在移动设备上本地存储的缓存条目)的轮询。
[0503] 在另一个例子中,在步骤1040中,应用程序(例如,移动应用程序)部件1055轮询应用服务器/提供商1095。该轮询在步骤1042中被由本地代理1065拦截,本地代理1065确定缓存击败机制由服务器/提供商1095采用。本地代理1065也可以检测该请求在本地缓存中的缓存的内容是不可用,并决定在步骤1044中为缓存设置轮询内容源。本地代理1065可以稍后提取请求的标识符的的模式(例如,格式或语法)并在步骤1046中跟踪应用程序的轮询频率以设置主机服务器1085的轮询时间表。
[0504] 为了满足该请求,在步骤1048中,轮询请求被转发给内容提供商1095。应用服务器/提供商1095从应用程序中接收轮询请求并在步骤1050中提供响应以满足当前的请求。在步骤1052中,应用程序(例如,移动应用程序)/部件1055从应用服务器/提供商1095接收响应以满足请求。
[0505] 为了设置内容缓存,结合本地代理1065缓存响应并存储标识符(或标准化的标识符的哈希值)的归一化版本,该标识符与接收到的响应相关联以用于未来在步骤1054中的识别和检索。在步骤1056中,本地代理发送缓存设置到主机服务器1085。缓存设置包括,例如,标识符和/或标识符的归一化版本。在某些情况下,不同于标准化的标识符的修改后的标识符被发送到主机服务器1085。
[0506] 主机服务器1085可以使用缓存设置,其中包括,例如,将要轮询的应用程序服务器/提供商的识别和在步骤1058中可选的的轮询时间表。主机服务器1085现在可以轮询应用服务器/提供商1095以监测在步骤1060中代表移动设备的请求的响应。在步骤1062中,应用程序服务器1095从主机服务器1085接收轮询响应。主机服务器1085确定相同的响应已被接收并轮询应用程序服务器1095,例如,根据指定的轮询时间表并在步骤1064中使用标准化的或修改过的标识符。在步骤1066中,应用程序服务器/内容提供商1095接收投票并做出相应的响应。
[0507] 这一次,在步骤1068中,主机服务器1085检测更改的或新的回应并通知本地代理1065。在步骤1070中,主机服务器1085可附加地在服务器缓存中1035或缓存代理1075中存储更改的或新的响应。在步骤1072中,本地代理1065从主机服务器1085接收新的或更改的数据现已可用并可以使受影响的缓存条目无效的通知。下一次,在步骤1074中,应用程序(例如,移动应用程序)/部件为同一服务器/内容提供商1095产生同样的请求,本地代理
1065确定没有有效的缓存条目可用,而在步骤1076中,从服务器缓存中检索响应,例如,通过一个HTTP连接。在步骤1078中,主机服务器1085接收新的响应的请求并将响应发送回本地代理1065。在步骤1080中,请求被因此从服务器缓存或缓存代理满足,而不需要为移动设备利用其无线或消耗移动网络带宽,从而节省了网络资源。
[0508] 可替代地,当应用程序(例如,移动应用程序)1055产生了同样的要求,在步骤1084中,本地代理1065响应于确定没有有效的缓存条目,在步骤1082中,通过移动网络转发轮询到应用服务器提供商1095。应用服务器/提供商1095接收轮询并在步骤1086中将响应通过移动网络返回到移动设备。在步骤1088中,通过使用移动网络1086,该请求因此被从服务器/提供商满足。
[0509] 图11是一流程图,展示了收集关于请求以及相关的识别缓存性能的响应的信息并缓存该响应的示例过程。
[0510] 在过程1102中,关于请求的信息和关于请求的接收到的响应的信息被收集。在过程1104和1106中,关于在移动设备发起的请求和信息以及关于请求的接收到的响应的信息被合计或独立使用以在步骤1108确定缓存性能。使用请求和响应信息以用于评估缓存性能的步骤的细节被将在图12的例子中进一步描述的流程A进行说明。
[0511] 在步骤1108中,如果基于流程A它确定响应是不可缓存的,那么响应在步骤1110中不可被缓存,并且流程可选的在1102重新开始以收集关于请求或响应的信息以用于再次评估缓存性能。
[0512] 在步骤1108中,如果从流程A确定响应是可缓存的,则在1112响应可以作为缓存条目被存储在缓存中,缓存条目包括具有有关响应缓存的附加信息的元数据。缓存条目,除了响应,包括具有响应有关响应缓存的附加信息的元数据。元数据可以包括,例如,缓存条目的访问时间或缓存条目的创建时间。
[0513] 在响应被存储在缓存中之后,可出现并行的过程以确定存储在缓存中的响应是否需要在过程1120中被更新。如果是,在过程1122中,存储在移动设备的缓存中的响应是无效的或从移动移动设备的缓存被移除。例如,响应的相关性或有效性可以通过定期轮询请求被定向至的代表移动设备的主机服务器而被定期验证。主机服务器可以通过使用被收集用于响应请求的请求信息以在移动设备上所确定的速率进行轮询。该速率由产生请求的相同客户端产生的之前的请求之间的间隔的平均所确定。
[0514] 验证可以由物理上不同于移动设备的实体进行执行。在一个实施例中,该实体是耦合到移动设备的代理服务器并能够与移动设备进行无线通信并且以及基于由产生请求的相同客户端产生的之前的请求之间的间隔,代理服务器以一移动设备所确定的速率轮询请求所定向的主机服务器。
[0515] 在过程1114中,相同的客户端或应用程序的后续请求被检测到。在过程1116中,本地缓存中的缓存查找被执行以确定的缓存条目被用于响应后续请求。在一个实施例中,元数据被用确定存储作为缓存条目的响应是否被使用以满足随后的的响应。在过程1118中,可以从缓存中提供响应以满足后续请求。响应可以提供以响应为后续请求识别匹配的缓存条目,该后续请求至少部分地使用元数据来确定。
[0516] 图12是一流程图,展示了确定请求的响应是否能被缓存的决定流程的示例过程。
[0517] 过程1202确定如果请求被定向到被列为黑名单的目的地。如果是这样的话,响应不会在步骤1285中被缓存。如果被列为黑名单的目的地被检测到或如果请求本身与被列为黑名单的应用程序相关联,图中所示分析的其余部分可能无法执行。如果请求及其目的地不被列入黑名单,这个过程可以继续到步骤1204和1206中。
[0518] 在过程1204中,与该请求关联的请求特征信息被分析。在分析该请求中,在过程1208中,请求方法被识别,并且在步骤1214中,判断响应是否可以基于请求方法被缓存。如果检测到不可缓存的请求,该请求不被缓存并且过程可能会在1285终止。如果请求方法被确定为可缓存的,或不不可缓存的,那么在步骤1295响应可以被识别为可缓存的或潜在可缓存的(例如,缓存,但受其他的测试和分析图中所示)。
[0519] 在过程1210中,该请求的大小是确定的。在过程1216中,确定请求的大小是否超过可缓存的大小。如果是的话,响应不被缓存以及在分析可能在过程1285终止。如果在步骤1216中请求的大小不超过可缓存的大小,那么在步骤1295中响应可以被识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他的测试和分析)。
[0520] 在步骤1212中,相同的客户端产生的请求和其它请求之间的周期性的信息被确定。在步骤1218中,判断周期性是否已被确定。如果不是,响应不被缓存并分析可在1285终止。如果是,那么在步骤1295中响应可以被识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他的测试和分析)。
[0521] 与请求收到的响应相关的请求特性信息在过程1206中被分析。
[0522] 在过程1220中,状态代码被识别并确定在过程1228中状态代码是否表示可缓存的响应状态码。如果不可缓存的状态代码被检测到,请求不被缓存并且过程可能会在1285终止。如果响应状态代码表示缓存性能,或不可缓存的,那么在步骤1295中响应可以识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他测试和分析)。
[0523] 在过程1222中,确定响应的大小。在过程1230中,判断响应的大小是否超过可缓存的大小。如果是的话,响应不被缓存以及分析可能在在1285终止。如果响应的大小不超过在步骤1230中的可缓存的大小,那么在步骤1295中响应可以识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他测试和分析)。
[0524] 在过程1224中,响应主体被分析。在过程1232中,判断响应是否包含动态内容或高动态内容。由于数据的内在本质(例如,股票行情、体育比分、快节奏的体育赛事等)动态内容包括以高频率进行改变的和/或具有较短生存时间或较短相关时间的数据。如果是的话,响应是不被缓存以及分析可能在1285终止。如果不是,那么在步骤1295中响应可以识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他测试和分析)。
[0525] 过程1226确定传输编码或块传输编码是否在响应中使用。如果是的话,响应是不被缓存以及分析可能在1285终止。如果不是,那么在步骤1295中响应可以识别为可缓存的或潜在可缓存的(例如,可缓存但受限于图中所示的其他测试和分析)。
[0526] 不是所有的上述测试需要被执行以确定响应是否被缓存。未示出的附加的测试也可以被执行。需要注意的是,测试1208、1210、1212、1220、1222、1224和1226中的任何一个都可以被单独或以任何组合执行以确定缓存性能。在某些情况下,所有的上述产测试都被执行。在某些情况下,所有被执行的测试(任意数量的上述被实际执行的测试)需要为确定为可缓存的响应确认缓存性能。换句话说,在某些情况下,如果上述的测试中任一项指示非不可缓存性能,则响应不被缓存,而不管其他测试的结果在其他情况下,基于请求特性和响应特性的组合,可以使用不同的标准以确定哪些测试或多少测试需要通过系统来决定缓存给定的响应。
[0527] 图13是一流程图,展示了基于请求周期性和/或响应重复性判断潜在的缓存性能的示例过程。
[0528] 在过程1302中,由客户端生成的请求被跟踪以检测请求的周期性。在过程1306中,判断在请求的时序中是否有可预测的模式。如果是,响应内容可在过程1395中被缓存。如果不是,在过程1308中,判断请求间隔是否落入公差范围内。如果是,响应内容可以在过程1395中被缓存。如果不是,响应在过程1385中不被缓存。
[0529] 在过程1304中,由客户端产生的请求的接收到的响应被跟踪以检测响应内容中的重复性。在过程1310中,为客户端接收的响应的响应主体的哈希值被检查并在过程1312中检查与响应相关的的状态码。在过程1314中,通过使用哈希值和/或状态码判断是否在至少两个响应的内容中存在相似。如果是的话,响应在过程1395中可以被缓存。如果不是,响应在1385中不被缓存。
[0530] 图14是一流程图,展示了为给定请求或客户端动态调节缓存参数的示例过程。
[0531] 在步骤1402中,由客户端生成的或定向至主机的请求被在移动设备处跟踪以检测请求的周期性。过程1404确定两个或多个请求之间的请求间隔是否是相同的或大致相同的。在过程1406中,判断两个或多个请求的请求之间的请求间隔是否落入公差范围内。
[0532] 基于步骤1404和1406的结果,周期性被检测的请求的响应被在过程1408中接收。
[0533] 在过程1412中,响应被缓存作为移动设备的缓存中的缓存条目。在过程1414中,主机被以一速率进行检测以验证缓存条目的相关性或有效性,同时在过程1416中,响应可以从缓存中被提供以满足后续请求。
[0534] 在步骤1410中,监测主机的速率从请求的间隔确定,使用,例如,过程1404和/或1406的结果。在过程1420中,给定主机被监测所使用的速率被设置以验证请求的缓存条目的相关性或有效性。在过程1422中,由客户端生成的请求的请求间隔的变化被检测。在过程
1424中,不同的速率基于请求的间隔的变化被技术。在过程1420中,给定主机被监测所使用的速率被更新以验证请求的缓存条目的相关性或有效性。
[0535] 图15是一流程图,展示了使用请求间隔以确定和设置轮询间隔或速率的示例过程,在该间隔或速率,代理服务器监测代表移动设备的应用程序服务器/内容主机。
[0536] 流程图1500是图17A-B中的动态所示的请求/响应序列的各种时序参数。时序参数“IT”、“RI”、“D”、“RT”被定义如下并显示在图17A-B中。
[0537] 1、RI-请求间隔-在“请求发送0”和“请求发送1”之间的时间。
[0538] 2、D-延迟-“请求发送”和“响应(头部)的第一个字节到达”之间的时间。
[0539] 3、IT-空闲时间-“整个响应内容收到0”和“请求发送1”之间的时间。
[0540] 4、RT-响应时间-“响应(头部)的第一个字节到达”和“整个响应内容收到”之间的时间。
[0541] 当本地代理以代理服务器设置轮询时,轮询间隔或速率可以通过时序参数RI、IT、D或上述任何组合进行指定。本地代理以代理服务器设置轮询的方式的一些例子包括:a)仅指定IT-可以在稳定的IT间隔的情况下使用;b)指明IT和D-这可以在稳定的IT和长D的情况下使用;c)仅RI-在稳定RI的情况下(例如,检测到的线性模式);d)RI和D-这可在稳定的RI和长D的情况下使用。
[0542] 设置中的每一个都可以被基于流程图中所示的标准被选择,在开始于步骤1502,其中判断给定客户端/应用程序(例如,移动应用程序)的请求的IT是否是稳定的。如果IT并不稳定,在过程1512中,判断RI是否是周期性的,若否,在步骤1520中无模式被检测到。RI是周期性的,则该过程继续到步骤1522,如下文所详述。
[0543] 如果在1502中IT是稳定的,在步骤1504判断‘IT’是否为0。如果在步骤1504‘IT’不是零,在步骤1514判断‘RI’是否比‘IT’更稳定。若否,过程继续到1506。如果是的话,则过程继续判断‘D’是否稳定,或者在步骤1522中是否检测到长轮询搜索模式。如果不是,那么在步骤1526轮询被设置以‘RI’轮询。如果在步骤1522中,D是稳定的并且搜索模式被检测到,则过程继续到步骤1524以确定‘D’是否是长的,若是,则轮询被以‘RI’和‘D’设置。若否,在过程1526中,轮询仅以‘RI’设置。
[0544] 如果在1504检测到‘IT’为零,则稍后在步骤1506判断‘D’是否稳定或搜索模式(长轮询)是否被检测到。若是,在步骤1508中判断′D′是否是长的,并且如果是,则在步骤1510中‘D’和‘IT’的间隔可以用于轮询。因此,所确定的‘D’和/或‘IT’可以被指定至代理服务器或监测代表移动设备或本地代理的内容源的其他实体。如果‘D’在步骤1508被确定为不是长的,则在步骤1518中轮询可仅以‘IT’设置。但是,如果在1506中,‘D’还没有被检测为是稳定并且搜索模式未被检测到,则在步骤1516中没有模式被检测到。
[0545] ‘稳定’的间隔一般都可以用来指在两个或更多请求之间的一些公差阈值之内的间隔的某种程度的重复性或可预见性。例如,‘稳定’可以表示两个间隔在彼此的5%、10%、15%、或20%之内。在一些实例中,一个较大的差也可能被允许。用于量化‘稳定’的阈值可能是静态值,或者它可能是随实时操作条件而改变的动态值和/或基于设备、用户、操作系统、应用程序、网络运营商、ISP和/或其他第三方规格而不同的值。不需要采用严格的‘稳定’的定义,只要被用于代表移动设备上的代理服务器的轮询的指定的间隔并没有显著负面影响用户感知性能或用户体验。
[0546] 图16是一示例时序图,展示了请求-响应序列的各种类型的时序特征。
[0547] 在图16中,8时间线组合被展示,每一个含2块请求-响应序列。在每个序列中,虚线表示在请求-响应的间隔中的响应。序列1602的特点是很短的‘D’、‘RT’和长的‘IT’。因此,序列1602可能是一个典型的轮询。序列1604的特点是短的‘D’、短的‘RT’、短的‘IT’,并是高轮询率的指示。序列1604也可以指示用户是积极与应用程序交互和/或积极更新应用程序。
[0548] 序列1606的特点是很短的‘D’、长的‘RT’和短的‘IT’,其可以指示可能的流。序列1608的特点是短的‘D’、长的‘RT’和长的‘IT’其可指示较大内容的轮询。序列1610的特点是长的‘D’、短的‘RT’和长的‘IT’,其可能以高延迟指示长轮询,该高延长在应用程序级别被允许。
[0549] 序列1612,具有长的‘D’、短的‘RT’、短的‘IT’,其可能指示长轮询。序列1614,具有长的‘D’、长的‘RT’、短的‘IT’,其可以指示较大内容的流或长轮询。序列1616有很长的′D′一个′长′RT′长′IT′可以是1614和1610的组合。
[0550] 图17A系时序图1700的一示例,展示了请求响应序列的时间特征。。
[0551] 本技术包括分布式缓存模型,其中包括设备端代理和服务器端的合作。为了缓存的响应之后的工作,客户端组件需要通知服务器端代理并提供特定的资源(应用程序服务器/内容提供商)必须被轮询的速率(验证缓存的内容的有效性)。收到此通知后,服务器端代理可以监测资源更改资源(验证资源),一旦改变被检测到,则服务器端组件可以通过发送无效请求通知设备端组件。
[0552] 客户端组件需要提供正确的和合适的轮询间隔至服务器端代理(例如,服务器端代理的间隔轮询资源以用于监测)以用于最佳性能,因为如果轮询间隔太低,负荷不必要在服务器端代理上被增加。通过增加轮询间隔,本地代理承担提供过期的/不相关的信息至用户设备的用户的风险。
[0553] 正如前面描述的,请求客户端/应用程序和内容提供商/应用程序服务器之间的请求-响应序列的时序特性可以用于确定应用程序行为和/或分类请求类型。这些信息可以用来确定、识别、估计或预测应用程序的轮询间隔,例如,服务器端代理需要监测资源的最佳轮询间隔可以被确定并提供至服务器端代理。
[0554] 时序特性可以包括,例如,请求被发送之后的接收响应的响应/延迟时间以及在响应被接收之后发送后续请求的空闲时间。响应请求序列中的各间隔的的关系可见于图1700。
[0555] 每个请求-响应时间序列可以使用全部或部分的下列事件被描述:1)启动发送请求(1705);2)请求发送;3)响应启动(1710);4)响应结束(1720);5)下一个请求发送(1715)。“启动响应”(1710)指示响应(头部)的第一个字节何时到达。“响应结束”(1720)指示何时收到所有的响应内容。
[0556] 使用这些事件,设备端可以计算出在1700所示的以下间隔:
[0557] 1、RI1708-请求间隔-“请求发送0”和“请求发送1”之间的时间。
[0558] 2、D1704-延迟-“请求发送”和“响应(头部)的第一个字节到达”之间的时间。
[0559] 3、IT1706-空闲时间-“整个响应内容收到0”和“请求发送1”之间的时间。
[0560] 4、RT1712-响应时间-“响应(头部)的第一个字节到达”和“整个响应内容收到”之间的时间。
[0561] 请求-响应序列(RI=D+RT+IT)的时序特性的关系可以被考虑以提取应用程序行为信息用于以分布式的方式在缓存内容中使用。不同的间隔之间的相对比较也可以用来描述应用程序和及其请求的特征。
[0562] 一般情况下,分布式代理的设备端组件可以保持跟踪在请求-响应序列中的个别时序间隔并以相对(例如,大于或小于另一个间隔)或绝对(相比于动态或静态阈值的具体期间,长的,短的等)的方式比较这两个值。设备端组件可以跟踪这些随时间变化的间隔值,检查稳定的组件并确定或识别趋势或模式。例如,设备端组件可以检测长轮询请求的长轮询搜索模式的情况下的增加或减少的‘D’1704。图17B系时序图1750的一示例,展示了长轮询的请求响应序列特性的时序特征。注意,时序图1750可能并不适用于高延迟长轮询。
[0563] 在一个实施例中,基于相对于请求01755和响应启动时间1760之间的空闲时间(IT1756)的响应/延迟时间(D1754)的比较,请求可以被检测、确定或为长轮询请求。例如,当空闲时间相比于响应延迟时间(IT1756<D1754)较短时,请求可以被检测为长轮询请求。
当IT1756是零或基本为零(~0)时,请求也可被确定是长轮询。
[0564] 此外,如果空闲时间(IT1756)指示在响应接收(例如,短的IT1756)之后的随后请求的即时或接近即时的发行,则请求可以被确定或归类为长轮询请求。此外,如果RI1758=D1754+RT1762+IT1756~D1754+RT1762,则请求可以被确定为长轮询。在一个实施例中,响应时间‘RT’1762可以用于确定比特率(例如,字节大小*8/时间)。
[0565] 一般来说,间隔的不同的组合提供关于特定的应用程序或请求的轮询模式的指示并可被设备端组件用于生成服务器端组件的轮询间隔以在检测内容源中使用。
[0566] 图18是一时序图1800,展示了可能适于缓存的周期请求的检测的示例。
[0567] 在所示的例子中,来自移动设备上的客户端/应用程序的第一请求被时间1:00(t1)检测到。此时,缓存条目可以被在步骤1802中创建。在时间2:00(t2),第二请求被从同一客户端/应用程序检测到,并且被创建的缓存条目现在可被在步骤1804中的时间t2与t1之间的1小时的间隔更新。来自同一客户端的第三请求现在可以在时间t3=3:00检测到,并且它现在可以被确定周期性的请求在步骤1806中被检测到。本地代理现在可以缓存响应并发送指定到代理服务器的间隔(例如,在这种情况下,1小时)的启动轮询请求。
[0568] 时序图进一步示出2:54和3:06之间的时序图,这指示一个窗口的边界,如果第三请求在时间帧1810中被接收,则在该窗口内的周期性将被确定。2:54和3:06分之间的时序窗口1808对应于以前的间隔的20%并且是所示公差的示例。其他公差也可以被使用,以及可以动态地确定或根据不同的情况(应用程序)被确定。
[0569] 图19是一数据时序图1900,展示了请求间隔中的变化的检测以及响应中的服务器轮询速率的更新的示例。
[0570] 在步骤1902中,代理确定周期性请求被检测到,本地代理缓存响应并设置轮询请求到代理服务器,并且,例如,间隔被在第三请求设置为1小时。在时间t4=3:55,请求在55分钟而不是1小时之后被检测到。55分钟的间隔仍适合窗口1904给定的20%的公差。然而,在步骤1906中,在五请求在时间t5=4:50被接收,其不再适合从第一和第二,以及1小时的第二和第三请求之间的间隔被确定的公差窗口设置。现在本地代理从代理服务器中检索资源或响应,并刷新本地缓存(例如,不用来提供第五请求的缓存条目)。本地代理也以一更新的间隔(例如,在本例中为55分钟)重发启动轮询请求至代理服务器并且窗口由公差定义,例如设置为20%,现在变成了11分钟,而不是12分钟。
[0571] 需注意的是,在一般情况下,当间隔的改变被检测到时和/或当新的速率已经被确定时,本地代理以一更新的轮询间隔通知代理服务器。然而,这通常只用于后台应用程序请求或自动/程序化的刷新(例如,不涉及用户交互的请求)。一般情况下,如果用户与应用程序在前台进行交互并导致检测到一段请求,指定至代理服务器的轮询或轮询间隔的速率通常不会被更新,如图20所示。图20描绘了数据时序图2000,其显示提供具有缓存条目的前台请求的一个例子。
[0572] 例如,时代t=3:00和3:30之间,本地代理在t=3:10和t=3:20检测第一和第二前台请求。这些前台请求在为检测前台应用程序或自动应用程序请求的周期性之外。然而,为前台请求检索的响应数据可以被缓存和更新,前台请求的请求间隔在过程2008不被发送到服务器。
[0573] 如图所示,在t=4:00从应用程序(例如,后台请求,程序性/自动刷新)检测到的下一次周期请求,响应是从缓存中提供,作为在t=5:00的请求。
[0574] 图21是一数据时序图,展示了发生在过时的内容可能再次服务于请求应用程序之后的缓存失效的非最佳影响的示例。
[0575] 由于代理服务器轮询的间隔设置为大致相同的间隔,应用程序(例如,移动应用程序)以该间隔发送请求,有可能的情况是代理服务器通常在缓存的条目(现在已过时)已经被提供至请求之后检测改变的内容(例如,在t=5:02)(例如,在t=5:00至第五请求)。在所示例子中,资源在t=4:20更新或更改以及之前的发生在t=4:02d服务器轮询不能够捕获这种改变直到在5:02的下一个轮询,并在2100发送缓存失效至本地代理。因此,在第五请求在时间t=5:00已经被提供旧内容之后,本地缓存不能在某些时间无效缓存。新鲜的内容现在不会提供给请求应用程序直到第六请求在t=6:00,在过程2106的1周期以后。
[0576] 要优化缓存性能并解决这个问题,本地代理可以通过指定请求的初始时间调节时间设置,除了到代理服务器的轮询间隔。在此的请求的初始时间在请求实际发生之前设置为某些时间(例如,几分钟),以使得代理服务器轮询稍微发生在未来的实际应用请求之前。通过这种方式,代理可以及时获得响应中的任何改变以被提供至随后的应用程序请求。
[0577] 图22是一数据时序图,展示了缓存管理和考虑缓存条目的生存时间(TTL)设置的和响应的示例。
[0578] 在一个实施例中,在本地缓存中的缓存的响应数据指定时间量,缓存条目可以存储在本地缓存中直到它被删除或移除。
[0579] 在给定的缓存条目中的响应数据将被移除的时间可以使用下面的公式确定:<响应数据_缓存时间>+,如图所示在t=3:00,响应数据在TTL过期后由于在步骤2212中的缓存(例如,在这个例子中,在步骤2212中的缓存之后的24小时)被自动移除。在一般的情况下,生存时间(TTL)适用于整个缓存条目(例如,包括响应数据和包括有关周期性和用于计算周期的信息的信息的任何元数据)。在一个实施例中,缓存的响应数据TTL由默认值或某些其他值(例如,6小时、12小时、48小时等)被设定为24小时。TTL也可能是动态可调节的或在管理员/用户重新配置和/或基于不同情况、设备、应用程序、网络提供商,网络条件、运营商和/或特定用户而不同。
[0580] 图23系缓存存储的组件API层的示例的图。
[0581] 缓存存储的组件API层的一个例子可以包括以下实体:1)缓存管理器2312。面临缓存管理系统的切入点的客户端。这可以允许多个应用程序/客户端的不同的缓存的注册,当需要时为他们提供相关的应用程序/客户端。2)高速缓存2314。这个实体代表缓存存储,即,维持一些缓存条目的机制。在高速缓存中的缓存条目可以进行查询、编辑、删除和/或用新的条目更新。3)高速缓存侦听器2304。这允许在应用程序/客户端的特征的执行以使得收到相关通知的缓存。4)缓存事件2302。这代表缓存相关事件。5)迭代器2320。这提供了缓存条目的收集的迭代机制。6)高速缓存过滤器2306。这提供过滤缓存条目的机制。7)URI过滤器2308。这是允许基于条目的URI执行缓存查找的缓存过滤器。8)身份过滤器2310。这是允许基于条目ID进行缓存查找的缓存过滤器。9)高速缓存条目2316。这个实体代表一个单独的缓存条目。缓存条目由ID或URI标识,两者都通常在单个的缓存的范围中是独一无二的。10)高速缓存条目数据2318。这是一个命名的与一些数据相关的缓存条目。
[0582] 图24系展示缓存存储的数据模型的示例的图。缓存存储可能是移动平台特定的。在一个实施例中,缓存存储可以利用混合存储,包括以下组件:1)用于存留缓存条目的SQL文件数据库,或2)用于存留元数据和二进制响应数据文件系统。这个配置可以用于如
Android的移动平台。
[0583] 图25系展示在缓存存储2502中缓存条目2504的数据模型的例子的概念图。给定缓存条目2504可以被识别符(例如,URI)识别。在一般情况下,缓存条目包括响应数据的组件(如,响应数据字段2508)和任何相关的元数据(例如,元信息字段2506)
[0584] 图26A-B系示例请求-响应对,展示了由具有变化参数2602和2652的标识符处理的可缓存的响应2604和2654。
[0585] 图26A中所示的请求/响应对说明用于缓存默认的时序参数2602,因为为每个请求接收的响应2604是相同的即使时序参数2602每次都更改。基于第二次的‘响应’或第三次,或之后随后的响应被检测到是相同的,资源标识符和参数2602可以被识别作为缓存击败。‘响应=x’的缓存同样可以启动第二检测到的同样的响应,第三检测到的相同的响应,或者以后随后检测到的相同的响应。
[0586] 类似地,图26B中所示的实施例的请求响应对说明用于缓存击败的随机参数2652,因为为每个请求接收的响应2654是相同的,即使标识符中的随机参数2652每次都不同。基于第二次的‘响应’或第三次,或之后随后的响应被检测到是相同的,资源标识符和参数2602可以被识别作为缓存击败。‘响应=x’的缓存同样可以启动第二检测到的同样的响应,第三检测到的相同的响应,或者以后随后检测到的相同的响应。
[0587] 虽然变化参数的两种类型被示出(时序/日期2602和随机参数2652),变化参数的其他类型可能被用于缓存击败,以及可以被系统同样地检测到。
[0588] 图27A展示了移动设备的应用程序或客户端的默认或初始轮询间隔的示例列表2700。
[0589] 应用程序列表可以是全部或部分的移动应用/客户端轮询或检测到在移动设备轮询。轮询间隔和任何其他轮询行为或网络访问可以在移动设备(例如,由本地代理275)检测到。每个应用程序的相对优先级(如,雅虎邮件与通用IMAP电子邮件、Twitter、RSS或ESPN)也可以由移动设备上的本地代理275确定或推断。
[0590] 图27B展示了移动设备的应用程序或客户端的调整的轮询间隔的示例列表2706。
[0591] 调整轮询间隔的多种方式可以被设置以及根据列2706示出的列表是给定应用程序的许多可能的情况中的一个例子。在这个例子中,在大部分轮询间隔之间选择的共同分母或因子是‘3秒’以及其他应用程序的间隔可以向上或向下被选择或设置。例如,IMAP、Twitter、RSS的轮询间隔以最小化传输和减轻网络流量的优势被被向上取整。在某些情况下,该系统可以检测在应用程序之间的更高优先级,例如,Twitter以及设置调整的轮询间隔设置为3秒而不是6秒以确保更新后的内容在其无需适用数据调整策略就能被最初交付之时或之前被接。轮询间隔也可以设置为更多或更少频率轮询,例如,基于优先级、用户偏好、网络状况,运营商设置,等等。基于例如应用需求、应用程序行为、运营商指定的设置、用户设置或偏好,上述的组合,轮询间隔可以为某些应用程序被设置为更频繁的轮询以权衡设置其他为较少频繁轮询。
[0592] 图28是一流程图,展示为多个移动设备或移动设备用户执行的示例过程以经由多个事件批次处理接收到的数据用于至给定移动设备的传输,以使得移动设备不需要在每次事件发生时建立或开启无线电。
[0593] 在步骤2802中,定向到移动设备的数据在多个事件中被接收。请注意,并非所有或任何的多个事件需要在同一时间发生。例如,有些可能会发生在同一时间以及它们都可能发生在不同的时间。
[0594] 在步骤2804中,数据在传输之前被批次处理。通过批次处理数据,数据传送到移动设备可以被调整以优化由在蜂窝网络中的移动设备作出的连接。一般情况下,在多个事件中接收到的数据在时间窗口内发生,该时间窗口可被预定和/或还可以是动态可调的,例如,基于应用程序特性、行为、应用程序的关键性或其承载的流量、用户的喜好、实时的网络条件、网络拥塞、网络类型、网络运营商/运营商设定或喜好、用户订阅类型、用户帐户类型、移动设备制造商设置(例如,设备硬件设置和性能)、平台或操作系统特定设置,等等。
[0595] 需注意的是,多个事件中的接收到的数据可以被定向到移动设备上的多个不同的客户端(例如,到不同的移动客户端或应用程序),或者来自不同的移动设备用户订阅的Web服务。例如,在一个事件中,收到一封电子邮件,以及在第二个事件中,为网络应用程序(例如,Facebook和Linkedin等)的接收状态更新或新闻提要。其他可以批量处理的时间可以包括相同或不同应用程序在相同或不同时间的数据或内容(例如,IM通知/消息、网络浏览器的内容、短信、通知等)。
[0596] 在过程2806中,批次处理的数据被通过蜂窝网络传输至移动设备以使得无线连接不需要在每次发生多个事件时被移动设备建立。例如,来自一些事件的的数据子集可以在一个事件中批次处理至移动设备以及在另一个事件中的第二子集可批次处理至该移动设备。在一个实施例中,在过程2808中,批次处理的数据被在单个事件中经由移动设备的无线网络连接的实例发送至移动设备,例如所有在多个事件中接收到的数据被在一个事件中批次处理至移动设备。
[0597] 图29是一流程图,展示了通过操纵轮询间隔管理至无线网络中移动设备的数据传输的示例性过程。
[0598] 在过程2902中,内容主机的多个应用程序的默认轮询间隔被从各自的内容主机确定。来自默认的轮询间隔,例如,第一服务的调整的轮询间隔可基于由不同内容主机服务的第二服务的轮询间隔被确定或生成。
[0599] 在过程2904中,更新的轮询时间间隔被分配到多种应用程序,例如,至少一些的多个应用程序的轮询时间时间上是一致的。由于第一和第二服务的移动设备上的访问,更新的间隔可以进一步用于调整从不同的主机接收到的至少一些流量。
[0600] 更新的轮询间隔可以被确定,例如,从多个应用程序的间隔的共同的因子或分母中。间隔时间也被确定同时因子分解考虑到在其中包含的流量的应用程序关键性和/或优先级/时间敏感。用于确定或设置轮询间隔的示例性过程被在图30中进行说明。一般情况下,当第一服务的原始的轮询间隔和第二服务的轮询间隔是彼此的因子或分母时,给定服务的调整的轮询间隔也是基于第一服务的原始的轮询间隔以及调整的轮询间隔不需要不同于第一服务的原始的轮询间隔。在一个实施例中,调整的轮询间隔是另一服务的轮询间隔的因子的倍数或分母的倍数。调整的轮询间隔可以进一步基于相对于第二服务的流量的时间关键性的第一服务的流量时间关键性被确定。
[0601] 在过程2906中,时间中的共同起点选择为服务于多个应用程序的内容主机的初始轮询。在过程2908中,基于时间中的共同起点和更新的轮询间隔,内容被从内容主机轮询。
[0602] 图30是一流程图,展示了基于同一设备上的其他服务的间隔为第一服务产生调整的轮询间隔的示例性过程。
[0603] 在过程3002中,一些默认轮询间隔的共同因子的倍数被确定。在过程3004中,一些默认轮询间隔的共同分母的倍数被确定。在过程3050中,更新后的轮询间隔通过使用共同的因子和/或共同的分母被确定。
[0604] 在过程3012中,相对于移动设备上的其他应用程序的应用程序的流量的时间关键性被确定。在过程3014中,关键性的应用程序被确定为在移动设备上的多个应用程序的最关键的时间。
[0605] 在过程3016中,关键性的应用程序的默认轮询间隔被识别为最低关键性间隔。在一般情况下,在为关键性的应用程序分配更新的轮询间隔中,最低关键性间隔不会被超过。在过程3050中,更新的轮询间隔可以被确定,例如,使用在任何关键性的应用程序和/或时间敏感流量中的默认的轮询间隔和因子分解。
[0606] 图31是一流程图,展示了调整数据传输以优化被建立用于通过无线网络的传输的连接的示例性过程。
[0607] 在过程3102中,定向到收件人的第一数据集被在第一实例接收。在过程3104中,定向到收件人的第二数据集被在第二个实例接收。第一和第二实例可以是不同的时间并且第一和第二数据集被从不同的Web服务的(例如,用户/收件人被订阅至的服务)接收。第一和第二数据集被定向到同一移动设备的不同的移动应用程序,以使得它们在调整中可以被批次处理并传输至移动设备,即使它们可能会在不同的时间被接收。
[0608] 在步骤3106中,无线网络中的单个的无线连接被建立。在一个实施例中,至收件人的传输被发起以响应确定包括用于更新移动设备上的缓存的内容的改变的数据的第一和第二数据集。此外,单个无线连接的建立被触发以响应检测在第二数据集所定向至的移动设备上的第二数据集或应用程序的优先级或时间关键性。在过程3108中,在第一和第二实例被接收的第一和第二数据集被通过无线网络传输至收件人。
[0609] 图32是一机器3200的图形表示形式,以包含指令集的计算机系统为例,执行该指令,使得机器3200运行本申请所探讨的一种或多种方法。
[0610] 其他实施例中,该机器3200能作为独立运行的设备,或可连接(如网络)到其它机器3200。在网络部署中,机器3200可能作为服务器或客户端机器3200在客户端服务器网络环境中运行,或作为对等(或分布式)网络环境中的同行机。
[0611] 该机器3200可能为服务器计算机、客户端计算机、个人电脑(PC)、用户设备、平板电脑、便携式电脑、机顶盒(STB)、个人数字助理(PDA)、移动电话、iPhone、iPad、黑莓、处理器、电话、web装置、网络路由器、交换机或网桥、控制台、手持式的控制台、(手持式)游戏设备、音乐播放器、笔记本电脑、移动,手持设备或能够执行该机器3200所采取具体操作指令集的机器3200(顺序或其它)。
[0612] 示范实施例中的机器可读介质或机器可读存储介质为单一介质,术语“机器可读介质”和“机器可读存储介质”应包含存储一个或多个指令集的单一或多个介质(例如:集中式或分布式数据库,和/或相关的缓存和服务器)。术语“机器可读介质”和“机器可读存储介质”也应包含能够存储,编码或执行机器3200所带指令集,并能够使机器3200执行一种或多种所公开的技术和创新方法的介质。
[0613] 一般来说,执行例程可作为一部分操作系统或特定应用程序,组件,程序,对象,模块或称为“计算机程序”的指令序列来实施公开的实施例。计算机程序通常由不同时期计算机内各内存和存储设备中的一个或多个指令集构成,当计算机一个或多个处理单元或处理器读取和执行指令集时,导致计算机执行涉及所公开各方面元素的操作。
[0614] 此外,本申请描述了实施例计算机和计算机系统的全部功能,本领域技术人员能够领会各实施例能分布成各种形式的程序产品,且所公开内容对实际影响分布均适用,不论机器3200的特定类型或使用的计算机可读介质。
[0615] 机器可读存储介质,机器可读介质或计算机可读(存储)介质的更多实例包含但不限于:可刻录类型介质,如易失性和非易失性存储设备、软盘和其它可移动磁盘、硬盘驱动器、光盘(例如:只读光盘存储器(CDROMS)、数字多功能磁盘(DVD)等)及其他,和传输类型介质,如数字和模拟通信链路。
[0616] 除非文中明确要求之外,否则在整个说明书和权利要求中,词语“包含”“包含”之类都解释为包含的含义,与排除的或穷举的含义相对;也就是说,意为“包含,但不限于”。本文所使用“连接”,“耦合”或类似词语,意为两个或多个元件之间直接或间接的连接或耦合;连接元件的耦合可以是实体的、逻辑的或两者组合。另外,词语“这里”、“以上”、“以下”与所引入的类似的词语,当用于本申请中时,通常应该指作为整体的本申请而不是指本申请的任何特定部分。在上下文允许的情况下,在上面详细说明中所使用的单数的或复数数目的词语也可以分别包含复数的或单数的数目。涉及到两个或多个项目的列表的词语“或”,覆盖该词语的以下所有的解释:列表中任何一个项目、列表中所有的项目和列表中项目的任意组合。
[0617] 本发明实施例的以上详细描述并不是为了穷举或者限制本发明上述公开的紧缺形式。上面所描述的本发明的特定实施例和示例基于阐述的目的,但在本发明的范围内可以进行各种等同的修改,正如相关领域技术人员所认识的那样。例如,尽管处理或模块以给定的顺序呈现,但可选择的实施例可以执行具有不同顺序的步骤的程序,或利用具有不同顺序的模块的系统,并且一些处理或模块可以被删除、移动、增加、分割、组合和/或修改来提供可选择例或子组合。这些处理或模块中的每一个可以以各种不同的方式实现。而且,尽管处理或模块以串行的方式在所示的时间执行,作为替代这些处理或模块可以以并行的方式执行,或者在不同的时间执行。此外,本发明所记录的具体序号仅为举例;替换执行方案需部署不同值或范围。
[0618] 在这里所提供的本发明的教导能应用到其他系统,而不必是上面所描述的系统。上面所描述的各种实施例中的要素和动作可以被组合或改变以提供进一步的实施例。
[0619] 上面所记录的专利、应用和其他参考,包含附属申请文件中所列的参考,均属于本申请的参考。所公开方面如有必要可以被修改,以使用如上所述各参考的系统、功能和概念,提供进一步的实施例。
[0620] 根据上文详细的说明,可以对本发明进行这些或其他的变化。尽管上述说明描述本发明特定实施例,并且描述所考虑的最佳方式,但上述描述在文章中多么详细,本发明都可以以多种方式实现。系统的各细节可以在其实施细节上产生相当大的变化,同时仍然包含在这里所公开的发明内。如上所述,用来描述某些公开的特征或方面的特定的术语不应理解为该术语在本文被重新定义为限于与该术语相关,公开的具体特性,特征或方面。一般来说,下面权利要求所使用的术语不应该被解释为将本发明限制到说明书中所公开的具体实施方式,除非上面的详细说明部分明确的定义了这种术语。因此,本发明的实际内容不仅包含所公开的实施例,而且也包含在权利要求下实现或实施本发明的所有等同的方式。
[0621] 尽管本发明的某些方面在下面以某些权利要求的形式提出,但发明人期望本发明的各个方面体现在任意数量的权利要求形式中。例如,尽管根据35U.S.C.§112,6,仅仅将本发明的一个方面作为装置加功能权利要求来叙述,但其他方面可同样地作为装置加功能权利要求体现(35U.S.C.§112所保护的权利要求必须以“...方法”开头)。因此,申请人在提交申请之后,保留添加附加的权利要求的权利,从而寻求为本发明的其他方面追加这种附加权利要求形式。