CN106462589A - 动态缓存器分配和网络管理 - Google Patents
动态缓存器分配和网络管理 Download PDFInfo
- Publication number
- CN106462589A CN106462589A CN201580015415.9A CN201580015415A CN106462589A CN 106462589 A CN106462589 A CN 106462589A CN 201580015415 A CN201580015415 A CN 201580015415A CN 106462589 A CN106462589 A CN 106462589A
- Authority
- CN
- China
- Prior art keywords
- website
- caching
- statistical data
- buffer
- activity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
提供了一种用于对由用户通过网络访问的站点的内容进行动态缓存的系统和方法。该系统包括:处理器;第一存储设备,用于维护缓存器账户,以基于由用户通过网络与站点的活动来存储由用户通过网络访问的站点的内容;第二存储设备,用于存储统计数据;以及非暂态物理介质。在该介质上存储有指令,当指令由处理器执行时使处理器:基于网络活动来采集关于缓存的站点的适用性的统计数据;将缓存适用性统计数据存储在第二存储设备上;以及基于缓存适用性统计数据来动态地创建、删除缓存器账户或调整缓存器账户的尺寸。
Description
技术领域
本发明的实施方式的各方面涉及动态缓存器分配和网络管理。
背景技术
使用移动设备如智能电话和平板电脑(平板),许多最终用户被现在由层封顶的数据计划所控制。在某种程度上,这是因为数据消费比基础设施容量增长得快。此外,漫游成本可能过高,如在欧洲(其中例如跨越国界的漫游可能很常见)。此外,基于覆盖范围和拥塞,性能可能会明显不同。这可能是由于例如网络覆盖范围引起的,该网络覆盖范围按照位置和无线运营商而大不相同。
运营商也在经历着负面影响。网络拥塞减少了蜂窝覆盖范围/质量。实际上,小区站点“缩小”以适应过度拥塞。此外,经常需要向竞争对手运营商支付高昂的漫游费用。这尤其影响较小的运营商,使较小的运营商不得不因为超出网络覆盖范围而向其较大的竞争对手支付更多的漫游费用。
企业也可能经历高的数据计划费用,尤其是对于出差中的管理人员。替选方案可能不太愉快,如更多地离线工作,这降低了效率,特别是对于平板用户来说。
由于移动网络更慢并且功能强大的设备更少,相应地,网站的用户体验慢/不佳。这可能部分地由于蜂窝延迟,由于蜂窝连接设置,蜂窝延迟可能很高(通常是一至二秒)。此外,用于访问网站的带宽成本——例如用于网站的视频或音频部分——可能很高。
对这样的问题的一个可能的解决方案是,通过用较低分辨率的版本来替换媒体,使代理服务器减少服务器响应的规模,但是这降低了媒体质量和用户体验。另一种解决方案是主动连接到任何开放的Wi-Fi网络,但是这可能危险地连接到不可信的网络。再一个解决方案是使客户端/服务器软件提供各种WAN优化技术,如数据的重复删除或较低级别的数据包缓存(例如,TCP),但是这需要部署大量的服务器侧的软件或设备,并且在减少对原始服务器的往返/请求时通常不如更高级别的缓存(如HTTP)有效。
更高级别的缓存可以以多种方式来完成。例如,缓存器可以保存由该设备接收的每个响应,这些响应按照最近最少使用缓存协议来管理。然而,这浪费了用于不重复访问的数据密集型应用的缓存资源,并且为了有利于较大应用空间占用而将较小应用空间占用挤出缓存器。相比而言,另一种解决方案是为每个应用(例如,软件应用或应用)采用单独的缓存器,但随后这样的缓存器将不能由运营商或企业配置,这样的缓存器也将不能够利用重复活动(例如,当一个应用针对相同内容表现出本地化的重复请求时偏好该应用)或者应用之间针对相同内容共享的活动。
发明内容
本发明的实施方式解决上述以及其他问题。另外的实施方式解决适用于具有与例如台式计算机相比更有限的资源(例如,存储器、带宽、操作系统)的便携式设备(智能电话,平板等)的问题。还有些实施方式涉及动态缓存器分配的系统和方法,用于更有效地利用有限的网络带宽并且改进整个网络的延迟。
根据本发明的实施方式,提供了一种用于对由用户通过网络访问的站点的内容进行动态缓存的系统。该系统包括:处理器;第一存储设备,用于维护缓存器账户,以基于由用户通过网络与站点的活动来存储由用户通过网络访问的站点的内容;第二存储设备,用于存储统计数据;以及非暂态物理介质。在该介质上存储有指令,在由处理器执行指令时使处理器:基于网络活动来采集关于缓存的站点的适用性的统计数据;将缓存适用性统计数据存储在第二存储设备上;以及基于缓存适用性统计数据来动态地创建、删除或调整缓存器账户。
缓存适用性统计数据可以包括由用户与站点的可缓存活动的统计数据。指令在由处理器执行时还可以使处理器基于可缓存活动统计数据来动态地创建缓存器账户。
可缓存活动统计数据可以包括由用户与站点的可缓存请求或者与可缓存请求对应的网络活动的可缓存字节。
缓存适用性统计数据还可以包括由用户与站点的重复活动的统计数据。重复活动统计数据可以包括由用户与站点的重复请求。
指令在由处理器执行时还可以使处理器:基于缓存适用性统计数据来识别站点中的前几名站点,并且跟踪针对站点中的前几名站点的重复请求。
指令在由处理器执行时还可以使处理器:基于可缓存请求或者可缓存字节来识别站点中的前几名站点。
缓存适用性统计数据可以包括由用户与站点的重复活动的统计数据。指令在由处理器执行时还可以使处理器:基于重复活动统计数据来动态地创建缓存器账户。
重复活动统计数据可以包括由用户与站点的重复请求。
指令在由处理器执行时还可以使处理器:基于缓存适用性统计数据来识别站点中的前几名站点,并且跟踪针对站点中的前几名站点的重复请求。
缓存适用性统计数据还可以包括由用户与站点的可缓存活动的统计数据。指令在由处理器执行时还可以使处理器:基于可缓存活动统计数据来识别站点中的前几名站点。
可缓存活动统计数据可以包括由用户与站点的可缓存请求或者与可缓存请求对应的网络活动的可缓存字节。指令在由处理器执行时还可以使处理器:基于可缓存请求或者可缓存字节来识别站点中的前几名站点。
根据本发明的另一实施方式,提供了一种用于对由用户通过网络访问的站点的内容进行动态缓存的方法。该方法包括:由处理器执行存储在非暂态物理介质上的指令;由第一存储设备上的处理器维护缓存器账户,以基于由用户通过网络与站点的活动来存储由用户通过网络访问的站点的内容;由处理器将统计数据存储在第二存储设备上;由处理器基于网络活动来采集关于缓存的站点的适用性的统计数据;由处理器将缓存适用性统计数据存储在第二存储设备上;以及由处理器基于缓存适用性统计数据来动态地创建、删除或调整缓存器账户。
缓存适用性统计数据可以包括由用户与站点的可缓存活动的统计数据。该方法还可以包括:由处理器基于可缓存活动统计数据来动态地创建缓存器账户。
可缓存活动统计数据可以包括由用户与站点的可缓存请求或者与可缓存请求对应的网络活动的可缓存字节。
缓存适用性统计数据还可以包括由用户与站点的重复活动的统计数据。重复活动统计数据可以包括由用户与站点的重复请求。
该方法还可以包括:由处理器基于缓存适用性统计数据来识别站点中的前几名站点;以及由处理器跟踪针对站点中的前几名站点的重复请求。
该方法还可以包括:由处理器基于可缓存请求或者可缓存字节来识别站点中的前几名站点。
缓存适用性统计数据可以包括由用户与站点的重复活动的统计数据。该方法还可以包括:由处理器基于重复活动统计数据来动态地创建缓存器账户。
重复活动统计数据可以包括由用户与站点的重复请求。
该方法还可以包括:由处理器基于缓存适用性统计数据来识别站点中的前几名站点;以及由处理器跟踪针对站点中的前几名站点的重复请求。
缓存适用性统计数据可以包括由用户与站点的可缓存活动的统计数据。该方法还可以包括:由处理器基于可缓存活动统计数据来识别站点中的前几名站点。
可缓存活动统计数据可以包括由用户与站点的可缓存请求或者与可缓存请求对应的网络活动的可缓存字节。该方法还可以包括:由处理器基于可缓存请求或者可缓存字节来识别站点中的前几名站点。
附图说明
附图连同说明书一起示出了本发明的示例实施方式。这些附图连同说明书一起用于更好地说明本发明的各方面和原则。
图1是适于与根据本发明的实施方式的动态缓存器分配和网络管理实现一起使用的示例移动设备(如智能电话)的架构。
图2是适于与根据本发明的实施方式的动态缓存器分配和网络管理实现一起使用的示例数据集。
图3是根据本发明的实施方式的跟踪重复活动的示例方法。
图4至图5以及图6至图7是根据本发明实施方式的检测重复活动的示例方法。
图8包含示出根据本发明的实施方式的示例缓存器访问权重和激活/去激活的两个图形。
图9至图13示出根据本发明的实施方式的动态分配缓存空间(动态缓存器分配)的示例方法。
图14是根据本发明的实施方式的示例动态缓存组织。
具体实施方式
现在将参照附图来描述本发明的各示例实施方式。贯穿整个附图,相同或相似的附图标记指代相同或相似的元件。在本文中,在描述本发明的实施方式时使用的术语“可能”指代“本发明的一个或更多个实施方式”。此外,在描述本发明的实施方式时使用的替代性语言如“或者”指代针对所列出的每个相应的项目的“本发明的一个或更多个实施方式”。
在一个或更多个实施方式中,提供了动态缓存器分配和网络管理的系统和方法。参照图1至图14来描述各示例实施方式。
图1是适于与根据本发明的实施方式的动态缓存器分配和网络管理实现一起使用的示例移动设备(如智能电话)的架构100。例如,移动设备可以是Android电话。为了说明的目的,将假设移动设备为Android智能电话。此外,虽然这样的移动设备可能能够支持许多用户,但是为便于描述,将假设移动设备专用于特定用户,因此,贯穿说明书,术语“用户”和“移动设备”(或者以个人或便携的方式使用的任何计算设备)可以作为同义词使用。
根据本发明的一个或更多个实施方式,移动设备上的一般架构(如架构100)提供集中式的缓存器引擎110,该集中式的缓存器引擎110可以支持源自应用(例如,移动应用或仅仅是“应用”)的请求,例如,该请求来自移动设备经由例如Wi-Fi或蜂窝网络访问的应用服务器(或app服务器)250。这种方法使缓存的内容能够跨多个网络(例如WiFi和蜂窝)而被更新,跨多个应用被共享并且允许该缓存被集中管理,尽管本发明不限于此。在其他实施方式中,缓存可以以分布式的方式执行,如缓存器引擎在每个应用内运行,在这种情况下,这些缓存器引擎以协作的方式工作,使得整体缓存被有效地集中管理。
智能电话100的应用和其他可编程组件可以被实现为例如计算机指令集,该计算机指令集被存储在智能电话100的非暂态存储设备上,并且被配置成在智能电话100的一个或更多个处理器上执行。缓存器引擎110还可以支持用于特定网站的请求,如来自网络浏览器的请求。因此,为了便于描述,贯穿本申请,当指代针对缓存器引擎110的可缓存内容的类别时,术语如“应用”、“网站”或“站点”在一定程度上可以互换使用。
缓存器引擎110可以由若干不同的机构如代理服务器(例如,经由操作系统(OS)网络设置)、虚拟专用网(VPN)客户端(例如,经由OS网络设置)或拦截层接合而成。参见例如图1中的代理服务器130、VPN客户端140或拦截层150和155。缓存器引擎110可以在Java虚拟机(JVM)160上运行。所缓存的内容可以被存储在物理存储设备如闪存170或其他非易失性存储设备上。不失一般性,这样的设备有时可以被称为“盘”,尽管这样的设备可以是任何类型的非暂态存储设备,如固态驱动器。此外,所缓存的内容可以全部或部分地存储在易失性存储器如随机存取存储器上,并且这种易失性存储器可以结合非易失性存储器例如以分层方式来使用,在这种情况下,最近被访问的内容在被转移到较慢的非易失性存储器之前被存储在较快的易失性存储器中。
代理服务器130可以以各种形式因素(如应用、内核驱动程序)运行或者在移动设备的OS内运行,并且被配置成例如经由OS网络设置来接收网络连接。在一个或更多个实施方式中,代理服务器可以在JVM——如与缓存器引擎110在其上运行的相同的JVM 160——中运行。代理服务器130可以充当代表客户端应用的中介。例如,代理服务器130可以服务于在另一JVM 165中运行的应用180的请求。
应用180可能想要使用例如Android服务如HttpURLConnection 190来访问因特网。此处,HTTP表示超文本传输协议,URL表示统一资源定位符(例如,网络地址)。HttpURLConnection 190然后可以调用网络服务200来访问因特网。网络服务200可以例如使用接入点名称(APN)210(例如,移动网络如3G)或Wi-Fi连接220来访问因特网。网络服务200可以被配置成使用被全局地应用到系统的或者到APN或WiFi连接的代理配置来将请求从应用180路由到代理服务器130。网络服务200也可以使用各种其他方式例如经由网络隧道(TUN)230或IP路由表(也称为“iptable”)将请求从应用180路由到代理服务器130。
网络服务200可以被配置成直接或间接地(例如,由在设备上运行的应用直接检测和使用的全局系统代理,或者通过APN 210或Wi-Fi连接220上的设置间接地)指定代理服务器来访问因特网,使得可以通过标准通信层如套接字120(例如,用于连接到因特网的网络套接字)来发送请求,该请求由代理服务器130接收。代理服务器130进而可以通过网络服务200向应用服务器250进行请求(同时绕过APN或Wi-Fi代理配置,以避免循环回到自身),应用服务器250服务于该请求并且向代理服务器130返回任何响应通信。然后,代理服务器可以在通过相同的描述阶段反向地通过网络套接字120将响应返回到应用180之前经由缓存器引擎110来缓存响应中的一些、不缓存响应或者缓存全部响应。
代替向应用服务器250发出请求,代理服务器130可以替代地服务于来自缓存器引擎110的请求。例如,如果已向应用服务器250发出了相同或相似的请求,并且经由缓存器引擎110缓存了足够的响应以及与请求相关的其他相关数据,则代理服务器130可以使用所缓存的数据来响应应用180的请求。这将避免使用网络基础设施(例如,无线通信)和其他资源(如应用服务器250的资源),以及减少提供针对请求的响应的总成本(例如,与通过蜂窝无线电来服务于响应的较高功耗相比,通过利用服务于来自存储器的响应的较低功耗)。
代替使用通过APN或Wi-Fi连接的代理配置,网络服务200还可以被配置成:通过各种其他装置将请求路由到代理服务器130。例如,另一种方法是使用网络隧道(TUN)230来建立VPN连接,网络隧道(TUN)230可以将网络活动路由到VPN服务140以处理网络传输。VPN服务140可以然后将请求路由到代理服务器130,或者可以直接与缓存器引擎110进行交互,以服务于来自缓存器的响应或者使用套接字120(在适当时)来访问应用服务器250,以服务于请求并且经由网络隧道230返回响应。
用于接合缓存器引擎110的另一种机制是使用应用内的拦截层(如拦截层150和155)以将流量重新定向到缓存进程。例如,在上述示例中,在使HttpURLConnection 190调用网络服务200以访问因特网之前,或者代替使HttpURLConnection 190调用网络服务200,HttpURLConnection可以使拦截层150拦截来自应用180的请求,并且直接调用缓存器引擎110,以服务来自其缓存的响应。如对于本领域普通技术人员而言明显的是,从拦截层150调用缓存器引擎110可以通过任何标准进程间通信机制(如消息队列、命名管道或共享存储器)来执行。
除了在单独的进程(如在JVM 160内)工作的缓存器引擎110以外,在其他实施方式中,缓存器引擎110可以被嵌入在请求进程如JVM 165或浏览器185(例如网络浏览器)内。缓存器引擎110可以然后在不需要任何进程间通信的情况下服务请求。例如,缓存器引擎110可以服务于来自缓存器的请求(如果可能并且适当的话),或者服务于返回拦截层150的响应,然后可以允许请求经过网络服务200。网络服务200可以然后将请求发送到代理服务器130,以用于处理(如果代理服务器130例如通过APN 210、Wi-Fi 220或网络隧道230被启用),或者网络服务200可以将请求直接发送到应用服务器250(例如,当不在JVM 160中运行单独的基于代理的缓存器引擎110时)。嵌入在不同的应用中的多个缓存器引擎110的实例可以共享相同的缓存,以使得可以跨多个应用来访问相同的缓存内容。
在另一实施方式中,如果缓存器引擎110不能服务请求,则处理如上述(例如,通过网络服务200)那样继续。在又一实施方式中,如果在不成功的缓存器引擎110拦截之后,处理通过网络服务200继续,则请求被标记,以便在后续的代理服务器130处理该请求的情况下,代理服务器130会知道不针对相同的响应向缓存器引擎110进行第二次请求。
在另一示例中,网络浏览器185寻求访问因特网。与上述应用180类似,网络浏览器185可以通过若干不同的方法来利用缓存器引擎110。例如,网络浏览器185可以被配置成通过使用网络套接字125来访问因特网,网络套接字125可以然后通过使用如上所述的例如套接字120或VPN服务140,使用网络服务200以经由代理服务器130来访问应用服务器250和/或缓存器引擎110。以类似的方式,拦截层155可以被添加到网络浏览器185,网络浏览器185可以然后拦截来自网络浏览器185的请求,并且直接调用缓存器引擎110以如上所述服务请求。作为另一实施方式,缓存器引擎110可以被直接嵌入浏览器185,使得缓存器引擎110可以直接服务请求,而不需要任何进程间通信。例如,缓存器引擎110可以服务于来自缓存器的请求(如果可能并且适当的话),或者服务于返回拦截层155的响应,拦截层155然后可以允许该请求经过网络服务200。
在进一步的细节中,上述技术可以被集成到现有的接口中,并且可以在安全套接
字层(SSL,例如,加密的)通信与非SSL(例如,未加密的)通信之间进行区分。对于非SSL通
信,可以在例如网络堆栈的中央位置处启用与应用的集成。例如,代理服务器130可以被配
置成例如仅用于HTTP、HTTPS或二者的网络协议的全部或子集的代理。类似地,代理服务器
130可以被配置成例如用于蜂窝、WiFi或二者的网络接口的全部或子集的代理。例如,对于
APN 210接入,蜂窝接入点可以被设置成代理服务器130。对于防火墙(iptables)访问,可以
设置相应的互联网协议(IP)路由表的条目。对于VPN服务,VPN客户端(如VPN服务140)可以
将流量路由到代理服务器130。对于Wi-Fi,代理服务器130可以对每个Wi-Fi接入点(AP)进
行设置。
此外,与使用SSL通信的应用的集成可能需要访问未加密的网络数据。存在此处可以使用的若干方法。对于中间人方法,可以经由受信任的证书认证(CA)通过模仿服务器来终止SSL。对于软件开发工具包(SDK)方法(例如使用图1中的拦截层155),可以在SSL加密上使用到缓存器引擎110的具有钩子的构建时链接。对于重新链接方法,现有的应用可以被反编译和重新链接,以使用定制替换应用编程接口(API),如使用HttpURLConnection 190。对于替代方法,如使用像网络浏览器185的浏览器,在拦截已被接入的情况下,可以提供应用的替代版本。这可能特别适合于广泛使用的开放源的应用。
如图1所示,缓存器引擎110可以在软件堆栈中的一个或更多个地方被调用,并且调用缓存器引擎110的一个以上的实例可能是无效、低效或者甚至适得其反,例如具有自己的嵌入式缓存器引擎110的实例的应用,每个应用在移动设备100上与代理服务器130同时运行。因此,在一个实施方式中,当在一个实例中例如由直接嵌入在应用中的缓存器引擎110(例如,本地代理服务器130上的)已执行了缓存时,可以禁用对下游实例的缓存,如在代理服务器130中,其中,从应用查找缓存器未命的代理被禁用,以避免重复的查找开销。例如,标头可以被添加到例如由应用用自己的嵌入式缓存器引擎110的已处理了缓存器引擎110的一个实例的请求,从而提醒如代理服务器130中的缓存器引擎110的其他实例,以避免对这些请求的冗余缓存处理开销。
虽然图1主要涉及移动设备的体系结构100,但是动态缓存器分配和网络管理可能还需要其他组件,如被配置成在移动设备100的一个或更多个处理器上运行的软件组件。图2是适于与根据本发明的实施方式的动态缓存器分配和网络管理实现一起使用的示例数据集。
在图2中,应用或网站的一个或更多个表260可以被构建或者以其他方式提供给智能电话100。这些表260可以包括例如全球顶尖的网站或应用。这样的表260可以为缓存器引擎110提供关于以下的指导:缓存哪些应用,以及对于每个应用分配多少用于缓存的空间。例如,可以根据许多移动设备的网络使用分析来构建表260,从而识别那些最受益于缓存的被广泛使用的应用或者被经常访问的网站。这有助于在用于动态缓存器分配和网络管理的地方设置默认规则,然后可以为特定用户或移动设备100定制这些规则。
例如,许多用户针对不在全球顶尖排名表260中的若干应用或网站具有显著的活动。因此,在本发明的一个或更多个实施方式中,提供了一个或更多个动态缓存器分配表,如带宽跟踪表270、往返跟踪表280和重复活动跟踪表290,以利于自动增加/删除缓存。这些跟踪表允许动态缓存器分配使用不同的缓存策略。例如,这可以允许为每个个体用户自动配置专用缓存器的理想的或接近理想的设置。例如,当单个用户活动(例如该用户最活跃的网站)彼此不同或者随时间变化时,这可以启用优化。
跟踪表可以允许动态确定缓存器分配的多个方面,包括例如缓存哪些应用或网站以及对于所缓存的每个应用或网站分配多少空间。取决于如哪个策略对于特定应用或时间显得为最有效的因素,对于使用哪个缓存策略(例如,哪个跟踪表)的选择可能因应用而不同,或者因时间而不同。
在一个实施方式中,带宽跟踪表270提供对所传输的总字节以及表示可缓存的字节(例如,能够被缓存的字节,如经由GET方法从特定网站访问的HTTP响应数据)的这种字节的数目二者的综合计数器。计数器可以被网站、应用等(或者为了描述方便只提及“站点”)细分成用于每个站点的单独的计数器。这样的带宽跟踪表270可以提供好的统计分析:如何跨不同站点来分配网络负荷,以及该负荷有多大比例可以受益于缓存。
在一个实施方式中,往返跟踪表280提供用于总请求以及表示可缓存的请求(例如,能够被缓存的请求,如从特定网站下载数据的请求)的这种请求的数目二者的综合计数器。计数器可以如使用带宽跟踪表270被网站细分。这样的往返跟踪表280可以提供好的统计分析:如何跨不同的站点或者不同响应的尺寸的分布来分配总网络延迟,特别是对于传输相对少的字节的站点,以及该延迟有多大比例或者有多少数目的响应可以受益于缓存。
在一个实施方式中,重复跟踪表290提供用于跟踪重复活动的综合计数器,如通过传输的字节或者做出的请求。重复活动可以表示例如针对较早传输的相同数据或者做出的相同请求而传输的字节或者做出的请求。因此,正如可缓存字节或请求提供了以下指示:总带宽有多大比例或者请求有多少数目有资格被缓存,重复字节或请求提供了以下指示:总带宽有多大比例或者请求有多少数目将实际受益于缓存。重复活动跟踪还识别具有高带宽但是几乎没有或者很少有重复活动的站点(如流视频网站)。
虽然重复活动因此表示用于由站点决定缓存器分配的有用的统计数据,但是重复活动比带宽或往返更难以跟踪。这是因为重复活动取决于先前做出的请求和返回的数据,而带宽和往返计数器可以独立于先前请求而被综合。因此,这种用于跟踪重复活动的“了解时间段”增加了跟踪的复杂性(例如,用于跟踪正在进行哪些请求的时间和存储器,使得可以识别对于相同数据的未来重复请求)。
例如,跟踪重复活动可能需要维护所做出的先前请求的请求表295以及关于这些请求的响应的细节(和/或表示请求及其响应的信息,如子集或散列值)。此外,这种复杂性随着先前请求的数目以及对于每个请求所存储的信息量(例如,请求表295的尺寸)而增长,这在实际的实施方式中对可以维护的用于检测重复活动的先前的请求的数目施加了限制。然而,对于重复活动而言益处可能同样值得,可以提供可达到的缓存器命中率(例如,能够从缓存中被服务的请求或字节的百分比)的良好指示。
图3是根据本发明的实施方式的跟踪重复活动的示例方法。本文所公开的上述和其他方法可以被实现为例如待由处理器(或其他计算设备)如微处理器执行的一系列计算机指令。为了解决重复活动跟踪的复杂性的问题,在图3的方法的步骤310中,在第一时间段T1期间,按照例如传输的字节和做出的请求(按照总的和可缓存的字节/请求细分的)来跟踪所有的站点。
根据这些计数,在步骤320中,识别前几名站点(T1前几名站点)(例如,在第一时间段T1期间具有传输的最大数目的可缓存请求和/或最大数目的可缓存字节的站点)。因此,T1前几名站点是一组呈现为最有可能受益于缓存的站点。T1应被选择为长得足以获得用户可能主动使用的大部分或所有的站点。在一个实施方式中,T1可以为无限长,使得对于可缓存请求和字节永久跟踪所有的站点。在另一实施方式中,T1可以表示其中旧的活动被丢弃/排除的滑动时间窗口,使得T1前几名站点的排名更好地反映用户的当前活动。
在步骤330中,在第二时间段T2期间,针对这些T1前几名站点跟踪个体请求或其他参数(例如,访问的URL、发送的参数或标头、返回的数据)。如前所述,重复跟踪可能是时间密集和存储密集的。因此,针对重复活动跟踪的站点越多,则用于执行这种跟踪所花费的时间就更多,针对每个被跟踪的站点可以跟踪的请求的数目就越少,进而又妥协了重复跟踪的准确度。因此,针对重复活动同时跟踪太多的站点可能会适得其反,所以在图3的方法中,在T2期间针对重复活动只跟踪T1前几名站点。理由是,即使具有高重复活动但是不是T1前几名站点的那些站点不会对在T2期间值得进行重复跟踪的总缓存作出足够大的贡献。根据这些请求,在步骤340中,识别在第二时间段T2期间呈现为访问相同数据(例如,具有相同的参数或响应)的那些请求。
在步骤350中,第二时间段T2期间的重复请求被逐站点地(T1前几名站点)按照所传输的字节和做出的请求二者进行汇总。在步骤360中,根据这些计数,识别在第二时间段T2期间按照重复活动的前几名站点(T2前几名站点)(例如,针对相同的数据产生最多数目的重复请求以及/或者针对重复请求传输最多数目的字节的T1前几名站点)。因此,图3的方法采用两阶段的方法来识别那些最有可能受益于缓存的站点,即识别在第一时间段T1期间最活跃的站点(例如,传输了最多数据或做出了最多请求)(T1前几名站点),并且然后,从最活跃的站点选择在第二时间段T2期间具有最多重复活动的站点(例如,最多重复请求或者从重复请求传输了最多数据)(T2前几名站点)。
T2应选被选择为足够长,足以跟踪T1前几名站点中的足够多的重复活动。然而,如前面所讨论的,跟踪重复活动不如跟踪总字节或可缓存字节或者请求那么容易。在跟踪重复活动时,不仅要考虑关于针对每个请求跟踪显著量的信息,而且还要考虑关于每个请求跟踪什么信息。因此,由于各种原因,T2也应被选择为不能太长,例如,为了确保仅反映用户的当前活动(该活动可以随时间改变)以及为了避免跟踪未(或不再)被重复的旧请求的存储/计算开销。
在进一步的细节中,可以使用请求本身的各种内容来唯一地识别重复活动。可以基于例如其URL及其标头或主体的一个或更多个组件来容易地识别最多的HTTP请求。因此,在一个实施方式中,快速的方法是计算对所缓存的响应的“查找关键字”,该“查找关键字”可以基于请求或响应组件的散列。为了有效,查找关键字应该是唯一的(例如,如对于本领域普通技术人员而言明显的是,存在可以用来实现这一目标的多种加密安全散列函数)。
然而,在选择使用哪些组件时应注意的是,一些(例如,如URL中携带作为查询字符串参数的时间戳或浏览计数)可能对响应没有影响,但可能会进行呈现为是唯一的并且不重复的请求。当这些外来组件在针对相同响应的多个请求之间变化时,这可能会导致缓存器查找未命中以及相同响应的冗余副本。例如,可以经由例如由软件包、用户指定的或者由管理员集中管理的配置设置中指定的规则来从缓存器查找中过滤掉这些外来组件。
确定哪些参数影响响应可能需要跟踪响应,并且比较哪些响应实际上是相同的。对于请求,也可以以各种方式跟踪响应,例如被散列以节省空间,因为安全散列函数不可能针对不同的响应返回相同的散列值。
考虑到这些因素,图4至图5以及图6至图7是根据本发明实施方式的检测重复活动的示例方法。如之前所讨论的,检测重复请求可以涉及下述两个单独的比较进程的交互:比较请求与比较相应的响应。于是,根据进行哪个比较或者首先执行哪个比较,方法可能不同。
在图4至图5的检测重复活动的方法中,请求是比较的主要基础。即,请求表按照请求(例如请求参数的散列值)来进行索引。在步骤410中,通过考虑一些或所有的请求组件如(用于HTTP请求的)URI/URL、标头、主体等来唯一地识别请求。在步骤420中,由于这可能产生无限长度的串,所以由合适的散列函数将所选择的组件进行散列,以产生足够唯一的查找关键字。在其他实施方式中,服务器提供的唯一标识符(例如,cookie或ETag,如唯一地标识URL的内容的HTTP实体标签或其他标签)可以用来代替散列值。在步骤430中,按照其查找关键字将条目添加到请求表。如果该条目已经存在(例如,相同的查找关键字已存在),则在步骤440中,适当的重复请求计数器被递增(如重复字节数目和重复请求的数目)。
任选地,如在一些实施方式中,相似的请求可以被合并以与相同的响应相匹配,从而提高缓存器利用率以及其他益处(例如,节省空间)。然而,这样的合并执行起来可能是计算上昂贵的操作。因此,在步骤450中,对是否合并相似请求作出决定,或者以其他方式来确定,例如基于配置设置或一些启发式(例如,看到高数目的虽然不同但是相似的请求)。如果不合并相似的请求,则处理结束。否则,处理在图5中继续并且进行到步骤510,在步骤510中获得对请求的响应,以用于识别具有不同的请求组件的请求,二者实际上是等同的,因为二者都对应于相同的响应。虽然响应可以被存储在请求表中,但是响应可以很大,可能会妥协请求表的尺寸。此外,如果使用完整的响应用于比较,则与其他响应的比较可能需要更长的时间。因此,可以由合适的散列函数将响应散列成足够唯一的值,并且将该值存储在请求表中。
在步骤520中,可以在看到响应时立即执行步骤520或者在之后周期性地执行步骤520,可以将散列的响应值相互比较。如果任何响应散列值都与任何其他响应散列值相同,则在步骤530中,可以将相应的请求组件进行比较,以识别不影响响应的请求组件,以确定可以将哪些请求组件过滤掉(例如,删除、忽略),使得可以用相同的查找关键字来识别等效的请求。另外,相应的请求表条目可以与共同组件和响应散列值(可能获得针对共同条目的进程中的新的查找关键字,并且删除先前条目)进行合并。以这种方式,系统可以知道哪些请求组件影响响应,以及哪些请求组件可以被忽略。
与图4至图5的检测重复活动的方法相比,在图6至图7的检测重复活动的方法中,响应是比较的主要基础。即,请求表按照响应(如响应的散列值)来进行索引。在步骤610中,获得对下一个请求的响应。在步骤620中,由合适的散列函数将响应进行散列,以产生足够唯一的查找关键字。在步骤630中,使用来自其相应的响应的查找关键字将请求存储在请求表中。如果这是具有该查找关键字的第一个条目(例如,之前尚未跟踪过该响应),则处理继续到下一个请求(步骤610)。
否则,查找关键字已经存在,所以在步骤650中,重复请求计数器被递增(如重复字节数目和重复请求的数目)。可选地,如在一些实施方式中,可以将相似的请求合并以与相同的响应相匹配,从而提高缓存器利用率以及其他益处(例如,节省空间)。然而,这样的合并执行起来可能是计算上昂贵的操作。因此,继续进行到图7,在步骤710中,对是否合并相似请求作出决定,或者以其他方式来确定,如基于配置设置或一些启发式(例如,看到高数目的虽然不同但是相似的请求)。如果合并相似的请求,则处理进行到步骤720,在步骤720中,使用响应来查找具有相同查找关键字的先前请求,并且将请求进行比较(使用请求表中的具有相同查找关键字的现有的存储的请求)。在步骤730中,相同请求之间的共同请求组件被合并,并且呈现为不影响响应的请求组件可以被过滤掉(例如,删除、忽略)。
使用图4至图7的任何一种方法,系统能够跟踪重复活动,并且还可以随着时间了解哪些请求组件对于影响缓存器响应是重要的,这使得系统能够更好地管理动态缓存器分配。
跟踪重复活动的目标是维护具有重复活动的前几名站点的最新的浏览,其中,“最新的”指反映了用户在不远的将来会重新访问这些站点上的内容的高可能性。这意味着排名需要适于用户可能会访问的“前几名”应用或站点的变化。考虑到这一点,存在可能会发生重复活动的若干类型的站点。这些类型的站点包括例如工作应用/站点(如SharePoint、公司内部网、HR(人力资源)等)、休闲/偏好的站点(如WSJ(华尔街日报))、突发性的站点(如NCAA.com或Olympics.org)等。
工作应用/站点可以被表征为例如在短时间段内也许没有最喜欢的站点那样被频繁访问(例如,每隔一天),但是在长时间段内持续被访问。这类站点通常包含不经常变化的大的静态内容(如PPT(PowerPoint演讲稿)、视频等)。对于这些站点的缓存目标可以是即使在很多天没有被访问的情况下仍保持缓存的内容,因为这些内容可能在不久的将来被再次访问。对于这些站点的可能的缓存方法是按照总重复缓存字节将这些站点排序。
休闲或偏好的站点可以被表征为例如被有规律地访问,并且各次访问之间间隔几天或最多一周。这些站点通常包含经常变化的大的静态内容(例如,图像、视频等)。对于这些站点的缓存目标可以是尽量保持其内容被缓存,但是这些站点与具有较不经常变化的静态内容的站点相比不那么有价值。此处,可能的缓存方法可以考虑总重复请求。
突发性站点可以被表征为例如由用户有规律地但是仅在相对较短的时间段期间访问的站点,像NCAA.com,NCAA.com是仅在三月/四月期间(例如,与全国大学生体育协会(NCAA)篮球锦标赛一致)排名前20的站点。与用户的休闲/偏好的站点类似,这类站点可能跨多天重复出现多次访问。对于这些站点的缓存目标可以是在该高活动时间段的开始时(在积极利用的一两天内)使其能够被快速缓存,然后在该高活动时间段的结束时同样快速地禁用对其的缓存。在这种情况下,可能的缓存方法可以是检测跨多天的窗口的高活动。
支持这种重复活动跟踪的方式是在时间框架内针对域或应用来测量活动,其中,时间框架可以是可配置的或动态的,以及/或者该测量可以取决于活动发生得有多新而不同地给活动加权。例如,所考虑的时间框架可以被限制在最近的子集中来产生移动平均,然后该值可以触发创建、删除随时间变化的专用缓存器或改变随时间变化的专用缓存的尺寸。更具体地,可以对该平均建立固定的/可配置的或动态的/自调节的阈值,其中,超过该阈值将允许缓存被自动启用。这可以通过将不同的平均如累计、简单移动(SMA)或加权移动(WMA)进行比较来描述。
累计平均表示跨所有的历史活动的未加权平均。这样的平均“记得”旧的偏好,这些站点可能会不被访问达若干天,但是这些站点仍然被显示在累计平均的前几名的上方,因为这些站点在长的时间段内持续活动。另一方面,可能需要很长时间(可能是几周)来忘记不再访问的旧站点。因此,工作应用/站点(如上所述的)可能最受益于使用累计平均(因为工作应用/站点随着时间的推移持续地被访问),但是突发性站点不能很好地用累计平均来表征,因为突发性站点在经常被访问变得明显之前需要很长时间,并且另一方面,这种站点在其不再被访问很长时间之后仍可以继续以高累计平均显示在上方。
简单移动平均(SMA)表示跨活动的最后N天(对于一些相当小的时间段,像两个星期)的未加权移动平均。SMA可以比累计平均更快地调整到新的偏好(因为存在使最近访问变得模糊的少得多的历史数据),但是SMA可能仍需要数天来检测新的偏好站点。因此,突发性的站点使用SMA比使用累计平均执行得更好,因为这种站点使用SMA比使用累计平均被更快速地检测到并且被更迅速地遗忘。
加权移动平均(WMA)与SMA类似,但是顾名思义,WMA表示跨活动的最后N天的加权移动平均。与更早几天(如接近于N天以前)的活动相比,权重将平均更多地偏斜到最近几天的活动。存在各种加权选项,如线性的或指数的。使用线性加权,访问的贡献随时间的推移线性地降低,使得最近的访问可以按照100%加权,如果在20天的时间段期间按照每天5%来线性降低加权百分比,此时访问不再被跟踪。
另一方面,对于指数加权,访问的贡献随时间的推移指数地降低,例如每两天降低50%。即,最近访问按照100%加权,两天以前的访问按照50%加权,四天以前的访问按照25%加权(即,50%的一半),六天以前的访问按照12.5%(即,25%的一半)加权,以此类推,20天以前的访问按照0.1%加权,此时访问可以安全地被忽略(例如,视为0%),因为该贡献不可能足以影响重复活动跟踪。
突发性站点用WMA明显执行得更好,特别是指数加权。这是因为指数加权拥有上述平均技术中的最短“预热”时间段(用于了解新的前几名站点)。然而,指数加权可能太快地丢弃旧的偏好(如在一两天之内,这取决于权重)。
图8包含示出根据本发明的实施方式的示例缓存器访问权重和激活/去激活的两个图形。在图8A中,线810表示随着时间的推移(x轴)对特定(可缓存)站点的访问(字节或请求,y轴)。这些是即时访问。相比而言,线820表示随着时间的推移的平均存取速率,如上述的平均存取速率之一。最后,线路830表示用于启动/禁用特定站点的缓存的阈值。当平均存取速率820高于阈值830时,该站点有资格被缓存,而当平均存取速率820低于阈值830时,该站点有资格被禁用缓存。
在图8A中,最初的活动不触发缓存的动态启用,但是持续的重复活动拉高平均以启用缓存。在进一步的细节中,如在图8A的左侧可以看到,在存取速率810中的高于阈值830的瞬间峰值不激活缓存(因为平均存取速率820保持低于阈值830)。然而,如在图8A的右侧可以看到,高于阈值830的持续的存取速率810激活了缓存(因为平均存取速率820开始“追上”并且超过阈值830)。
相比而言,图8B使用与图8A相同的三条线,只有该情况是相反的。在图8B中,最初的不活动不会触发缓存被立即禁用,但是持续的重复不活动可以拉低平均以最终禁用缓存:在进一步的细节中,在图8B中,对该站点的缓存最初以高平均访问率(明显高于阈值)被启用。然而,对该站点的访问率随着时间的推移开始降低。事实上,在时间上刚刚经过中间点时,访问率下降到低于阈值,但是该下降并没有长到足以使平均访问率下降到低于阈值并且禁用缓存。尽管如此,如果在图8B中访问率继续下降,则最终平均访问率将下降到低于阈值并且禁用对该站点的缓存。
跟踪重复活动可能需要监测具体请求,并且对于所执行的每个网络请求而言这样做可能是昂贵的或被禁止的。跟踪可以被优化,以针对前几名站点/服务器或前几名应用来选择性地跟踪重复活动,其中,总体目标是识别值得跟踪的具有足够的活动的站点/应用,使得这些站点/应用可以稍后被动态地触发缓存以被启用。存在用于确定“前几名”站点或应用的多种方法,如识别是否存在足够的可缓存活动(例如,请求或字节)。
对于重要用户,可能理想的也是限制总数为多少的站点或应用被跟踪,以限制用于跟踪重复活动的计算和存储器的总开销。例如,可能理想的是,对于总的可缓存活动而言,仅对前X个站点启用重复活动跟踪。出于与限制用于重复活动跟踪的时间框架类似的原因,可能理想的也是限制针对识别前几名站点/应用所考虑的活动的时间框架。例如,可能理想的是,与更早的活动相比,只考虑最近的活动或者给最近的活动加权。可能理想的是,考虑在启用对前几名站点/应用的重复活动跟踪之前的附加条件。例如,如果站点/应用超过(或不超过)可以是可配置的或动态的某个阈值,则可以(分别)启用(或不启用)重复活动跟踪。
以下方法可以结合可配置的或动态的阈值来进行利用或合并,以确定站点或应用是否有足够的活动来证明对重复活动的跟踪:按照请求的数目,或者按响应的字节。“按照请求的数目”指代按照对站点的可缓存请求的总数对每个站点进行排名。这个活动可以发生在特定时间框架内(例如,在最近的X天内的可缓存请求的数目)。虽然这可能有助于识别具有明显延迟的站点,但是例如对于具有频谱限制能力的蜂窝和其他无线网络而言,与节省带宽相比延迟可能是次要考虑因素。
相比而言,“按照响应字节”指代按照来自站点的总可缓存响应字节来对每个站点进行排名。此外,这个活动可以发生在特定时间框架内(例如,在最近的X天内的总可缓存响应字节)。虽然这可能有助于识别消耗带宽最多的站点,但是可以通过不经常(或一次性地)大的下载来倾斜。作为进一步的实施考虑,可能更谨慎的是基于周期来计算前几名站点/应用,以帮助使开销最小化并且避免不断地再排序。
有利的是基于活动来改变缓存器的尺寸,使得在移动设备上可能非常有限的存储器空间可以被智能地分配给站点或应用,以最大化其有效使用。这可以通过收集和利用关于站点/应用的可缓存能力的信息,如最近执行的重复活动的量或者通过增加缓存器尺寸是否提高了缓存器命中率。存在如按照总可缓存字节或按照重复可缓存字节来决定缓存器尺寸的许多可能的方法。
使用总可缓存字节,基于最近已经看到了多少可缓存内容(例如,在最近的X天内已看到的可缓存字节)来限制缓存器尺寸。这比简单的缓存器尺寸限制(例如固定尺寸的缓存器)更为有效,简单的缓存器尺寸限制在选择过大的尺寸的情况下可能使旧数据留存达很长时间。所需的字节数计算起来相对简单,因为这种技术避免了需要排除未被访问过一次以上的项目的缓存。然而,使用该技术,缓存器空间可以被用于只被访问过一次的项目。
对比而言,使用重复可缓存字节,基于有多少可缓存内容已被请求了一次以上(例如,在最近的X天内多次访问的字节)来限制缓存器尺寸。这可能是更有效的缓存器尺寸,因为它对应于被访问过一次以上的可缓存项目的较小的缓存器尺寸限制。然而,该技术可能需要排除掉缓存未被重复访问的项目,使得空间被保留给被重复访问的项目。
在进一步的细节中,为了仅基于重复活动来设置缓存器尺寸,可能需要仅缓存重复活动,使得未被重复的活动将不会竞争缓存器空间。这可能需要识别应该或不应该进入缓存的项目的能力。用于进行这种识别的两种可能的方法是:白名单和黑名单。白名单的工作原理是:通过识别应该被缓存的项目来动态地启用对该项目的缓存。可以基于请求如明确的URL或正则表达式模式来启用缓存。这种技术是高效的,因为它仅针对已被证明为需要缓存空间的项目来分配缓存器空间。然而,这增加了在项目被缓存之前的滞后时间,所以最初的请求被错过机会。
相比之下,黑名单的工作原理是:通过识别不应被缓存的项目来动态地禁用对该项目的缓存。开始时可以启用对一切项目的缓存,然后可以对未再次见过(例如,再也没有见过或者在最近的X天内未见过)的项目禁用缓存。这种技术立即启用缓存以最大的可能缓存器节约。另一方面,该技术还对可能不会被再次请求的项目(并且,例如,用于管理缓存的存储器/CPU开销)启用缓存。
与高效的缓存存储器使用相关的问题是双缓存(例如,代理服务器中的中央缓存器和应用本身内部的嵌入式缓存器二者中的缓存)的可能性。如果对一个缓存器中(如在代理服务器130的外部/下游缓存器中)的项目启用缓存,则可能理想的是禁用其他缓存器(例如在该应用的缓存器的“上游”)中的缓存,使得项目只有一个被缓存的副本。存在支持这种方法的不同的方式,如通过设置HTTP响应标头来指示项目无法被缓存到上游(例如,经由“缓存控制”标头)。
图9至图13示出根据本发明的实施方式的动态分配缓存空间(动态缓存器分配)的示例方法。在图9至图13中,示出了按照特定的顺序发生特定的步骤。然而,如对于本领域普通技术人员而言明显的那样,本发明不一定局限于此,而在其他实施方式中,步骤可以以不同的顺序(或者可能被省略)来完成相同或相似的任务。此外,图9至图13中的许多步骤在一定程度上以简单化的方式呈现,并且如下面还将讨论的并且如对于本领域普通技术人员而言明显的,可以以更多的检查或考虑来实现图9至图13中的许多步骤。
图9至图13的方法可以用于动态分配缓存空间(例如,分配到单独的缓存器账户(或缓存器),每个缓存器账户潜在地具有自己的缓存策略),作为一种方式来改进或优化具有有限的存储器空间的设备上的盘(或其他非易失性存储器)的使用。在这种情况下,特定的缓存器账户和/或缓存策略的有效性或值可以被归纳为可以根据一个或更多个其他值而得到的单个数目(或一小组数目)。一个这样的数目是从缓存器提供的字节数(即,节省的网络流量)与提供给该应用的总字节数的比率。另一个这样的数目是从缓存器提供的请求的数目(即,所避免的往返)与提供给该应用的响应的数目的比率。例如,网络字节的比率或者节省的往返可以表示对于给定的时间窗口而言缓存该应用的有效性。
在图9至图13中,使用尺寸指代由缓存器账户使用的盘上的字节数,而分配尺寸指代允许该账户写入的字节数。当使用尺寸超过分配尺寸时,根据用于将数值项目在缓存器中排序的一个或更多个策略将文件(或项目)从缓存器删除。例如,基于从缓存器提供该项目的频率将所缓存的项目评价得更高的策略可以与(如保持在最近最少使用的列表中的)最近最少使用的项目的排名合并,以在使用尺寸超过分配尺寸时删除所缓存的项目。在特定时间窗口期间,使用尺寸和分配尺寸二者可以取决于以下因素而变化,例如可用的缓存存储器空间、当前的缓存器使用以及缓存策略。
继续讨论图9至图13,唯一字节指代在时间窗口期间看到的所有唯一请求的字节数,提供的字节指代从缓存器提供的字节数(例如,在特定的时间框架内),最大尺寸指代分配的尺寸可以达到的最大量,而最小尺寸指代分配的尺寸可以达到的最小量。此外,“总”的使用(如总使用尺寸、总分配的尺寸等)指代对于所有的缓存器账户的相应尺寸的总和。
例如,最大尺寸可以是默认值(如50兆字节(MB))、当前使用尺寸加上某一百分比(比如10%)、唯一字节、对缓存器账户的分配尺寸的最大值,例如为了避免分配超出已知具有最小的或者可以忽略不计的增量值的尺寸的空间,或者上述或其他可能的最大尺寸的组合(如最大值)。同样地,最小尺寸可以是默认值(如5兆字节(MB))、当前使用尺寸、对缓存器账户的分配尺寸的最小值,例如为了避免空间被减少至低于已知导致明显的缓存效率低下的尺寸,或者上述以及其他可能的最小尺寸(包括零)的组合(如最小值)。
此外,在图9至图13中,总动态缓存百分比指代另一个值如空闲存储器空间(目前没有被用于应用存储器的存储器)或总存储器空间的百分比,以纳入为缓存器分配的存储器空间的总量的计算因素中。这个百分比可以表示例如用户可配置数,或者设备或操作系统可配置数,管理员可配置数,或者基于算法、启发式或策略的动态计算的数目(例如,如果用户在延长时间内不使用空闲存储器空间则增加的数目)。以类似的方式,总动态缓存器尺寸指代为所有缓存器分配的总空间的上限,例如,如根据上面的组件如总动态缓存百分比所计算的那样。因此,总动态缓存器尺寸可以取决于因素如用户输入、在设备上运行的其他应用等随着时间的推移而改变。然而,图9至图13的动态缓存器分配的根本目标是使总分配尺寸与总动态缓存器尺寸一致。
因此,总使用尺寸、总分配尺寸以及总最大尺寸限定了图9至图13的总缓存控制方法的三种限制,其中,总使用尺寸≤总分配尺寸≤总最大尺寸。在理想情况下,总动态缓存器尺寸可以等于总分配尺寸。然而,数目随着缓存活动而动态地变化。因此,用于描述总可用缓存存储器水平的变量(如总动态缓存器尺寸)可以被描述为在四个不同的范围中或在中间(例如,理想或目标)点中之一:(1)大于总最大尺寸,(2)在总分配尺寸(不含)与总最大尺寸(含)之间,(3)等于总分配尺寸,(4)在总使用尺寸(含)与总分配尺寸(不含)之间,以及(5)小于总使用尺寸。对于情况(1)的处理在图9中描述。对于情况(2)的处理在图10中描述,对于情况(4)的处理在图11中描述,以及对于情况(5)的处理在图12至图13中描述,而对于理想情况(3)不需要进一步的处理。
以类似的方式,使用尺寸、分配尺寸和最大尺寸限定了对特定的缓存器账户的缓存进行控制的三个相应的限制,并且针对每个特定的缓存器账户观察相同的关系,使用尺寸≤分配尺寸≤最大尺寸(尽管在不同的缓存器账户之间不一定具有相同的值)。因此,在不同的缓存器账户之间,使用尺寸、分配尺寸和最大尺寸可以变化。
作为图9至图13的概述,当总动态缓存器尺寸大于总最大尺寸时,更可以添加更多的缓存器账户,如图9所示。这种缓存器账户添加可能受到资格要求,如只为满足某个准则的域来添加缓存器账户(例如,超过对于看到的可缓存字节数目和请求的数目的最小量)。同样,当总动态缓存器尺寸大于总分配尺寸(并且总分配尺寸小于总最大尺寸)时,针对现有的缓存器账户分配的空间可能增加,如图10所示。例如,伴随着具有最高命中率并且工作向下的缓存器账户的开始,为缓存器账户分配的尺寸可能增加。
另一方面,如图11所示,如果总动态缓存器尺寸小于总分配尺寸,但是大于(或等于)总使用尺寸,则为现有的缓存器账户分配的空间可以被减小。例如,伴随着具有最低命中率并且工作向上的缓存器账户的开始,为缓存器账户分配的尺寸可能被降低。另外,如图12至图13所示,当总动态缓存器尺寸小于总使用尺寸时,缓存器账户可以被删除,或者其使用空间被减小。
考虑到这些原则,考虑图9至图13的方法。在图9中,处理开始,并且在步骤910中,计算总动态缓存器尺寸、总最大尺寸、总分配尺寸以及总使用尺寸。可以以一种或更多种不同的方式来触发图9中的处理的开始,例如当总量中的一个或更多个变化时自动地触发,根据时间表周期性地触发,或者也许例如由管理员手动地启动来触发。在一些实施方式中,对这些数目中的一些或全部的计算可以连续发生(例如,在对这些数目中的一个或更多个的任意构成部分变化时),并且步骤910可能需要仅指那些被连续计算的数目。在步骤920中,将总动态缓存器尺寸与总最大尺寸进行比较,并且如果总动态缓存器尺寸大于总最大尺寸,则处理进行到步骤930,以添加更多的缓存器账户。否则,处理继续进行到下面将描述的图10。
在步骤930中,如果有新缓存器账户要添加(例如,正在被跟踪的域已经满足任何必要的预缓存准则),则将总动态缓存器尺寸与总最大尺寸加上下一个新缓存器账户的最大尺寸进行比较。如果总动态缓存器尺寸大于总最大尺寸加上新缓存器账户的最大尺寸,则有足够的空间来完全添加新缓存器账户,因此处理进行到步骤940。否则,不存在新缓存器账户,或者没有足够的缓存空间来添加新账户,因此处理继续进行到图10(以确保分配任何未分配的空间)。在另一实施方式中,即使当没有足够的缓存器空间来容纳最大尺寸(并且有足够的缓存器空间来容纳最小尺寸)时,仍可以添加新缓存器账户,但是新缓存器账户的分配空间被设置成足够小的数目,如总动态缓存器尺寸减去总最大尺寸(在添加新缓存器账户之前),以保持总最大尺寸不超过总动态缓存器尺寸。
在一些实施方式中,当添加新缓存器账户时,新缓存器账户被特别指示。这是因为新缓存器账户可能不具有足够的历史,以建立用于该缓存器的代表性的有效性值如缓存器命中率,使得系统可能以其他方式过早地删除新缓存器账户(例如,在下方的图12中)。当经过了足够的时间来生成用于该缓存器的代表性的有效性值(例如,缓存器命中率)时,例如经过了某段时间或者已发生了一定量的域活动(如对于本领域普通技术人员而言明显的那样),特殊指示可以被移除。然而,在缓存器空间极度短缺的情况下,即使特别指示的缓存器账户仍可能有资格被删除以释放缓存器空间。特别指示可能导致发生相对于其他缓存器账户的临时的人为的排序值,或采取相对于其他缓存器账户的临时的人为的排序值的形式,例如分配中值或可配置的缓存器命中率或者其他排名值,使得该新缓存器账户可能排名高于执行差的现有账户,同时排名也低于执行佳的现有账户。
在步骤940中,新缓存器账户被添加,并且分配空间等于最大尺寸(或者,在另一实施方式中,分配空间等于最大尺寸与总动态缓存器尺寸减去总最大尺寸中的较小者)。在步骤950中,重新计算总最大尺寸(例如,以考虑新添加的缓存器账户)。然后,处理返回到步骤930,以在进行到图10之前继续添加更多的缓存器账户(如果可能的话)。
在图10中,处理从图9(或者,如将要看到的那样,以及从图12和图13)继续,并且在步骤1010中,将总动态缓存器尺寸与总分配尺寸进行比较。如果总动态缓存器尺寸大于总分配尺寸,则缓存空间对于缓存器账户可用,因此处理前进到步骤1020,以增加分配空间的量。否则,处理继续进行到下面将描述的图11。
在步骤1020中,将总分配尺寸与总最大尺寸进行比较,并且将总动态缓存器尺寸与总分配尺寸进行比较。如果同时满足总分配尺寸小于总最大尺寸(即,至少有一个尚未被分配的缓存器账户的空间达到其最大尺寸)以及总动态缓存器尺寸大于总分配尺寸(即,仍然存在可用的缓存器空间以将另外的分配备份到缓存器账户)二者,则处理进行到步骤1030,以选择增加哪个分配空间。否则,不存在其分配空间可以被增加的缓存器账户,或者不存在将更多的空间分配给缓存器账户的动态缓存器空间,因此处理结束。
在步骤1030中,通过以下来增加分配空间:选择执行最佳的(并且其分配空间还没有达到最大尺寸的)缓存器账户,例如具有最高命中率(在从缓存器提供的项目方面)、最高缓存器节约(在从缓存器提供的字节方面)、最大变化增加率(在命中率或缓存器节约方面)或者上述或其他因素的组合的缓存器账户。然后,为这个缓存器账户分配的空间被增加到例如最大可能,即最大尺寸(或者,在另一实施方式中,这种增加被限制为不超过总动态缓存器尺寸减去总分配尺寸)。
增加用于所选择的缓存器账户的最大分配缓存器空间可以发生在一个动作中,或者随着时间作为一系列的增加,例如按照固定的可配置增量值、基于账户的动态值(例如,当前缓存器尺寸的百分比),或者按照基于上述或其他因素的组合的值。在多个步骤中进行这样的增加可以允许其他缓存器账户(如其他执行良好的缓存器账户)与所选择的缓存器账户同时增加分配空间,允许跟踪所选择的缓存器账户,以确保所选择的缓存器账户在被分配任何更多的空间之前有效地使用增加的空间等。
增加目前执行最佳的缓存器账户的分配空间是对将更多的缓存器资源投入给最受益于缓存器的缓存器账户的一种尝试,并且期望这个所选择的缓存器账户将从增加的尺寸受益更多。然而,情况并非总是如此,并且在一些实施方式中,可以存在用于缓存器账户的分配尺寸的最大值(并且该最大值被计入最大尺寸),例如以避免分配超过已知对于缓存效率而言具有最小的或者可忽略的增量值的尺寸的空间。此外,通过使未从增量中明显受益的缓存器账户的缓存效率下降并且因此不太可能获得更多的缓存器空间(或者更有可能放弃现有的缓存器空间),以较小的增量执行增加允许过程中更多的动态反馈。
在步骤1040中,计算总分配尺寸(此时考虑最近增加的缓存器账户)。然后,处理返回到步骤1020,在步骤1020中重复该处理,直到分配了足够的缓存器空间为止(例如,假设具有下一个最高命中率(或者另外下一个最佳缓存性能)的缓存器账户并且其分配空间还没有达到最大尺寸)。例如,当所有的总动态缓存器尺寸已被分配给了缓存器账户,或者所有的缓存器账户使其分配空间增加至其相应的最大尺寸,以及/或者当所有的缓存器账户已被处理时,该处理终止。
在图11中,处理从图10继续进行,在图10中已确定总动态缓存器尺寸小于总分配尺寸,所以需要减少分配空间。在步骤1110中,将总动态缓存尺寸与总使用尺寸进行比较。如果总动态缓存器尺寸至少与总使用尺寸一样大,则足够的缓存器空间对于用于缓存器账户的现有的使用可用,因此处理进行到步骤1120,以减少所分配的(但是尚未使用的)空间的量。否则,处理继续进行到下面将描述的图12。在步骤1120中,将总动态缓存尺寸与总分配尺寸进行比较。如果总动态缓存器尺寸小于总分配尺寸,则处理进行到步骤1130,以选择减少哪个分配空间。否则,总动态缓存器尺寸至少为总分配尺寸,因此不需要发生进一步减少分配空间,并且处理结束。
在步骤1130中,通过以下来减少分配空间:选择执行最差的(并且其分配空间尚未减少到使用尺寸)缓存器账户,例如具有最低命中率(在从缓存器提供的项目方面)、最低缓存器节约(在从缓存器提供的字节方面)、最小变化增加率(或最大变化减少率,在命中率或缓存器节约方面)或者上述或其他因素的组合的缓存器账户。然后,为这个缓存器账户分配的空间被减小到例如最小可能(并且不丢弃缓存内容),即使用尺寸(或者,在另一实施方式中,这种减少被限制为不超过总分配尺寸减去总动态缓存器尺寸)。
减少用于所选择的缓存器账户的最大分配缓存器空间可以发生在一个动作中,或者随着时间作为一系列的减少,例如按照固定的可配置减量值、基于账户的动态值(例如,当前缓存器尺寸的百分比),或者按照基于上述或其他因素的组合的值。在多个步骤中进行这样的减少可以允许其他缓存器账户(如其他执行差的缓存器账户)与所选择的缓存器账户同时减少分配空间,允许跟踪所选择的缓存器账户,以确保从所选择的缓存器账户减少任何更多的空间之前有效地使用减少的空间等。
减少目前执行最差的缓存器账户的分配空间是对将更少的缓存器资源投入给最少受益于缓存器的缓存器账户的一种尝试,并且期望这个所选择的缓存器账户将基本上不会从减少的尺寸中受益。然而,情况并非总是如此,并且在一些实施方式中,可以存在用于缓存器账户的分配尺寸的最小值(并且该最小值被计入最小尺寸),例如以确保有足够的空间来容纳最小的内容量,低于该最小的内容量则甚至不值得具有缓存器。此外,通过使缓存器账户在递减至不太可能有更多的被减少的缓存器空间(或者更有可能增加缓存器空间)之后其效率开始提高,以较小的减量来执行减少允许过程中更多的动态反馈。
在步骤1140中,计算总分配尺寸(此时考虑最近减少的缓存器账户)。然后,处理返回到步骤1120,在步骤1120中重复该过程,直到释放了足够的分配的(但未被使用的)缓存器空间被为止(例如,假设缓存器账户具有下一个最低命中率,并且其分配空间还没有被减少到最小尺寸)。当所有的缓存器账户的总分配空间已经减少到不超过总动态缓存器尺寸,或者所有的缓存器账户已将其分配空间降低到其相应的最小尺寸,以及/或者当所有缓存器账户已经被处理时,该过程终止。
在图12中,处理从图11继续进行,在图11中已确定总动态缓存器尺寸小于总使用尺寸,所以需要删除缓存的项目,以减少在缓存器中使用的空间的量。首先,在特殊情况下,只有一个缓存器账户被寻址。在步骤1210中,如果缓存器账户的数目为一,则处理进行到步骤1220,以处理特殊情况。否则,处理进行到步骤1240,以处理多个缓存器账户。在步骤1220中,从该一个缓存器账户中删除项目,直到使用尺寸不再大于总动态缓存器尺寸为止。在步骤1230中,分配尺寸被设置为最大尺寸或总动态缓存器尺寸中的较小者,并且处理结束。
如果存在多个缓存器账户,则首先在步骤1240中进行检查,以查看效率较低的缓存器账户是否应被完全移除。在步骤1240中,选择一些准则,例如将缓存器账户的数目与缓存器账户的最小数目进行比较,或者将总最小尺寸与总动态缓存器尺寸进行比较,或者使用上述或其他准则的组合。此处,缓存器账户的最小数目可以表示缓存器的域的最小数目,在高于该最小数目的情况下可以无条件地删除更低的高效的缓存器,但是在低于该最小数目的情况下,可能更有效的是减少剩余的缓存器的尺寸而不是缓存器的总数。如果存在多于该最小数目的缓存器账户,或者总最小尺寸超过总动态缓存器尺寸,则存在对可用缓存器空间的缓存器账户的过量数,所以处理进行到步骤1250,以减少缓存器账户的数目。否则,处理继续进行到下面将描述的图13。
在其他实施方式中,可能存在用于选择可以被无条件删除的账户的其他因素,如被迫减少低于特定尺寸(例如,低于该尺寸则缓存器可能是无效的,如最小尺寸)的缓存器账户,或者当缓存器账户的缓存性能下降到低于有效性的一种或多种测量值(如缓存器命中率、保存的字节等)。例如,在最近的时间框架内不从缓存提供最小水平的请求或字节的缓存器账户可以被选择为待删除。
在步骤1250中,通过删除具有例如最低命中率的缓存器账户(或者例如通过上面讨论的准则测定的执行最差的缓存器账户)来降低所使用的空间。在步骤1260中,重新计算总使用尺寸和总分配尺寸(这时候考虑最近删除的缓存器账户)。然后,处理返回到图10,根据最近删除的缓存器账户,重新尝试使总动态缓存器尺寸与总动态分配尺寸一致。
在图13中,处理从图11继续进行,在图11处已确定总动态缓存器尺寸小于总使用尺寸,并且缓存器账户的数目不大于要缓存的域的最小数目(或者满足其他准则,如总动态缓存器尺寸至少为总最小尺寸),所以所缓存的项目需要从缓存存储器中删除,但是不会无条件地删除整个缓存器账户。因此,在图13的实施方式中,考虑两个替选方案(以举例的方式):(1)按比例减少剩余缓存器账户中的分配(以及通过扩展使用的)空间,使得现在总动态缓存器尺寸等于总使用尺寸,或者(2)删除目前执行最差的缓存器账户,例如具有最低命中率的缓存器账户(如在以上的图12的步骤1250至1260中)。选择在不妥协缓存性能的情况下释放最多的缓存器空间的替选方案。
在替选方案(1)中应用到缓存器账户的比例可以是恒定的或可变的,例如使用比例系数,该比例系数根据每个缓存器的方面(例如,命中率、提供的字节等)而变化,使得按比例减少可能对于执行差的缓存器而言较高,而对于执行佳的缓存器而言较低。因此,在步骤1310中,假设按比例减少每个分配尺寸足以使总分配尺寸下降到总动态缓存器尺寸,则重新计算所提供的总字节数。虽然针对该重新计算的所提供的总字节数的准确数目可能需要缓存模拟器,但是重新计算的所提供的总字节数可以通过以下来替代地近似:以相同量的分配字节的减少来按比例地减少为每个缓存器提供的字节数。在步骤1320中,将该重新计算的提供的总字节数与为所有的缓存器账户(除了具有最低命中率的缓存器账户以外)提供的所有的(未减少的)字节数的和进行比较。该测试的目的是决定选择上述两个替选方案中的哪个。
如果重新计算的所提供的总字节数大于除了具有最低命中率的缓存器账户以外的所有缓存器账户所提供的字节数的和,则处理进行到步骤1330,以实施将所有缓存器账户按比例减少。即,与删除整个缓存器账户相比,按比例地减少现有的缓存器账户看起来将提供更好的整体缓存性能。否则,处理进行到步骤1340,以删除执行最差的缓存器账户(例如,具有最低命中率的账户),这与图12中的步骤1250至1260类似,因此将不再重复进一步的描述。在步骤1330中,按比例地减少用于每个缓存器账户的分配尺寸,使得总分配尺寸等于总动态缓存器尺寸。然后,从每个缓存器账户中删除足够的项目,使得使用尺寸不再大于新减少的分配尺寸,并且此时处理结束。
因此,在图9至图13的方法中,总动态缓存器尺寸被允许动态地变化,并且缓存器账户被相应地调整,以保持总分配尺寸与总动态缓存器尺寸一致。这可以包括:当总动态缓存器尺寸增加时,添加更多的缓存器账户(图9)或者向现有的缓存器账户增加分配空间(图10),或者当总动态缓存器尺寸缩小时,减少对现有的缓存器账户的分配空间(图11和图13),删除缓存器账户(图12和图13),以及/或者从缓存器账户中删除缓存项目(图12和图13)。具体地,基于执行最差(例如,最低命中率或其他准则)的缓存器账户相对于其他缓存器账户执行得有多好来进行是删除缓存器账户还是减少现有的缓存器账户的分配空间的选择。
应当注意的是,对于本领域普通技术人员而言明显的是,可以对图9至图13的上述方法进行修改。例如,在图13中,执行最差的缓存器账户(例如,具有最低命中率的账户)可能太小而无法彻底缓解缓存存储器的短缺,在这种情况下,可能更好的是将步骤1320和1340中的执行最差的缓存器账户替换成若干个执行较差的缓存器账户(例如,用两个执行最差的缓存器账户如具有两个最低命中率的缓存器账户来代替执行最差的缓存器账户)。这个理念可以扩展为如下观点:除了执行最佳的缓存器账户以外排除所有的缓存器账户(例如,具有最高命中率的账户),例如在缓存存储器极端短缺的情况下,在步骤1320中进行测试或者进行步骤1340中的处理时。
作为另一示例,即使当总动态缓存器尺寸大于总使用尺寸时,仍可以执行图12中的无条件删除,例如以确保移除执行低于最小阈值(例如,命中率、提供的字节)的任何缓存器账户,这避免了用于从未足够受益于具有缓存器的域的缓存的开销。
图14是根据本发明的实施方式的示例动态缓存组织1400。图14示出组织1400的一些更重要的组件,如网络活动统计数据采集模块1410、重复活动统计数据采集模块1420、动态缓存器账户管理模块1430和缓存统计数据存储器1440。本发明的实施方式中的上述以及其他模块可以以例如硬件或软件来实现,如设计成运行在(例如,被执行)通用或专用处理器上的计算机指令来实现,如对于本领域普通技术人员而言明显的那样。此外,可以在例如非易失性存储设备(如磁盘或闪存驱动器)和/或易失性存储器(如RAM)上维护缓存统计数据存储器1440。
网络活动统计数据采集模块1410对用于应用的网络活动进行高水平的采集。当新的应用被启动(或者新的网站被访问,或者其他任何潜在的可缓存活动,这将被一般地称为“应用”)时,网络活动统计数据采集模块1410启动一组计数器,如可缓存请求或传输的字节。例如,新的应用可以被添加到图2中描述的跟踪表中,并且在最初的时间段(例如,如在图3的方法中描述的T1时间段)期间跟踪应用的活动,以查看该应用是否为动态缓存管理或重复活动统计数据采集的潜在候选。这些计数器和跟踪表可以被存储在例如缓存统计数据存储器1440中。如果新的应用呈现为是动态缓存管理或重复活动统计数据收集的有希望的候选(如在T1时间段期间其可缓存请求计数或传输的字节超出阈值,如设置的或预定的阈值),则可以将应用传递给重复活动统计数据采集模块1420,以用于更深入的统计数据采集。
取决于获得的统计数据,即使在应用已被识别为动态缓存管理或重复活动统计数据收集的候选时,网络活动统计数据采集模块1410仍可以继续累计应用的网络活动统计数据。例如,网络活动统计数据采集模块1410可以启动对应用的另一个T1跟踪时间段。因为网络活动的动态特性,以及基本网络活动计数(例如,可缓存请求或传输的字节)的相对较低的开销,继续监测被网络活动统计数据采集模块1410认为是用于动态缓存管理的大多数或所有的应用可能是有益的。
重复活动统计数据采集模块1420模拟被认为是用于动态缓存管理的应用的缓存行为。例如,重复活动统计数据采集模块1420可以使用图2的跟踪表和图3至图7中的跟踪重复活动的方法来确定由网络活动统计数据采集模块1410识别的候选应用是否适用于动态缓存管理。即,通过使用针对应用的跟踪表和请求和/或响应表(其可以被存储在例如缓存统计数据存储器1440中)在跟踪时间段(例如,如图3的方法中描述的T2时间段)内跟踪应用的重复请求活动(例如,重复请求和传输的响应字节),重复活动统计数据采集模块1420可以识别该应用是否会呈现为受益于动态缓存管理。
例如,如果在T2时间段期间应用的重复请求或传输的字节超过设置的或预定的阈值时,重复活动统计数据采集模块1420可以将应用传递给动态缓存器账户管理模块1430,或者将应用放置到适合于动态缓存管理的应用的列表中(例如,维护在缓存统计数据存储器1440中)。
与网络活动统计数据采集模块1410不同,由重复活动统计数据采集模块1420进行的重复活动的统计数据的采集与基础网络活动的统计数据采集相比明显具有更多的计算性和存储器密集性。正因为如此,重复活动统计数据采集模块1420同时只能监测几个应用,以更好地维护将通过动态缓存器账户管理模块1430受益于动态缓存管理的应用的代表性列表和当前列表。例如,重复活动统计数据采集模块1420可以基于由网络活动统计数据采集模块1410确定的请求的可缓存性来发起对应用/站点的重复活动跟踪(例如在最近的T1时间段期间),然后对正在被跟踪重复活动的应用/站点,可以基于例如在最近的时间段期间(如最近的T2时间段期间)重复请求和传输的字节的统计数据来维护用于动态缓存管理的最佳的(并且当前未被缓存的)应用的动态的和经排序的列表。
动态缓存器账户管理模块1430管理由网络活动统计数据采集模块1410、重复活动统计数据采集模块1420或其组合识别的可能受益于缓存的应用的实际缓存。动态缓存器账户管理模块1430基于缓存统计数据1440以及其他可能的因素(如由管理员提供的允许以及不允许缓存哪些应用/站点的规则)来分配并且维护用于应用或网站的缓存器1450。例如,动态缓存器账户管理模块1430可以采用以上参照图9至图13描述的技术。
动态缓存器账户管理模块1430还可以维护缓存行为的实际统计数据,例如存储在缓存统计数据存储器1440中的(例如,缓存尺寸、重复请求的实际数目和传输的节数、缓存器命中率等),例如,以更好地管理当前被缓存的应用,识别可能不会(或者可能不再)受益于缓存的应用以及从缓存中明显受益的应用。这些统计数据可以在缓存统计数据存储器1440中被维护,以协助动态缓存器账户管理模块1430(和其他模块1410和1420)决定缓存(或跟踪)哪些应用以及对这样的应用应该进行什么样的调整(例如,缓存器尺寸)。
本发明的另外的实施方式涉及网络管理。管理网络活动可以利用工具来监测/识别带宽使用以及利用工具来控制/调节该使用。通过“带内管理”电话上的网络活动,本发明的实施方式可以监测用于该活动的资源使用(例如,带宽、电池、CPU、蜂窝连接等),并且将该活动与网络中的更下游的往往无法获得的非常详细的信息相关联。这种数据分析的示例包括带宽使用、蜂窝连接状态、性能和电池使用。
带宽使用指代针对每个应用的每个目标/目的地域的跟踪带宽使用,因为相同的域可以被多个应用访问。例如,可以跟踪例如输入数据(从远程服务器接收的)与输出数据(发送到远程服务器的)二者。可以在总带宽(网络和缓存器)与网络/缓存器方面进行跟踪。代理服务器可以看到连接级别的细节,如TCP端口号,该TCP端口号可以与由OS提供的每个进程的连接信息相关联(例如,Android在进程/网络文件中公开该信息),因此可以跟踪在设备上运行的特定应用/进程的活动。
蜂窝连接状态指代跟踪有多经常或有多少蜂窝网络处于“连接”,因为这在小区站点的其他用户之中是有限的/共享的资源。例如,可以在连接状态有多经常变化的方面(例如,断开、连接、休眠、暂停)进行跟踪。也可以在连接状态有多久保持“连接”的方面进行跟踪。可以将该值与带宽数据相关联,例如以确定增加的缓存是否减少了总连接时间,以及将该值与在设备上运行的特定应用/进程相关联。
性能指代测量与性能相关的状态,例如用于各种与网络相关的活动(如HTTP请求或浏览器页面加载时间)可能需要的每个请求的时间或者每秒的字节数。实施方式可以测量分别用于处理请求的不同方式(如完全来自网络、完全来自缓存器、在服务器重新验证后来自缓存器)的吞吐量等。
电池使用指代跟踪多少电池被用于网络活动,如用于域或应用。在一个实施方式中,在每个请求之前和之后测量电池水平。在进一步的细节中,电池使用可以按照域、应用、内容类型、Wi-Fi与蜂窝等来测量。
1.网络访问策略
通过“带内管理”电话上的网络活动,本发明的实施方式可以控制和/或限制网络活动,尤其是以当在网络中实现时会是不可能的方式。例如,在设备处实施的策略可以提供对以下的控制:覆盖可以由用户访问的不同网络类型,包括不由无线运营商或企业控制的网络类型,如WiFi网络。
一些示例网络访问策略包括监测或阻止不良内容,并且监测或阻止信息泄露。通过监测或阻止不良内容,可以跨由设备访问的不同的网络来检测或阻止对例如基于请求、目的地服务器和/或内容类型的不良内容如色情或甚至广告的访问。实现上述目的的一种方法是维护针对所有请求检查的请求参数如URL模式或主机名的列表。其他检测方法包括:在内容中例如在网页的HTML中匹配关键词,或者在图片或视频中匹配图像图案。
通过监测或阻止信息泄漏,可以阻止如基于请求内容或目的地服务器的非预期的或不期望的信息的传输。实现上述目的的一种方法是维护针对所有请求检查的请求参数,如URL模式或主机名(例如,已知的恶意软件/钓鱼服务器)的列表。另一种检测方法是在请求内容中匹配图案,例如查找社会保险号码或电子邮件地址。
管理这些网络访问策略可能会涉及大量的开销。例如,在设备处维护网络访问策略信息可以构成需要被持续更新的大量内容/元数据,例如托管色情的域/服务器的全局列表或者已知的恶意软件/钓鱼网站。为了有效地维护该信息,可以采取一个或更多个下列方法:在集中式服务器或管理控制台处进行检查并且处理变化,在集中式服务器或管理控制台处可以有效地将更新计算/压缩/分发到设备,或者将请求信息散列成缩短的“查找关键字”,如与用于查找存储在缓存器中的响应相同的“查找关键字”。
虽然已经结合特定示例实施方式对本发明进行了描述,但是应当理解,本发明不限于所公开的实施方式,而是相反的,如对于本领域普通技术人员而言明显的那样,在不脱离本发明的由所附权利要求及其等同方案所限定的精神和范围的情况下,本发明意在覆盖各种修改和等同布置。
Claims (22)
1.一种用于对由用户通过网络访问的站点的内容进行动态缓存的系统,所述系统包括:
处理器;
第一存储设备,用于维护缓存器账户,以基于由所述用户通过网络与站点的活动来存储由所述用户通过网络访问的站点的内容;
第二存储设备,用于存储统计数据;以及
非暂态物理介质,其中,在所述介质上存储有指令,所述指令在由所述处理器执行时使所述处理器:
基于网络活动来采集关于缓存的所述站点的适用性的统计数据;
将缓存适用性统计数据存储在所述第二存储设备上;以及
基于所述缓存适用性统计数据来动态地创建、删除所述缓存器账户或者调整所述缓存器账户的尺寸。
2.根据权利要求1所述的系统,其中
所述缓存适用性统计数据包括由所述用户与所述站点的可缓存活动的统计数据,以及
所述指令在由所述处理器执行时还使所述处理器:基于可缓存活动统计数据来动态地创建所述缓存器账户。
3.根据权利要求2所述的系统,其中,所述可缓存活动统计数据包括:由所述用户与所述站点的可缓存请求,或者与所述可缓存请求对应的所述网络活动的可缓存字节。
4.根据权利要求3所述的系统,其中
所述缓存适用性统计数据还包括由所述用户与所述站点的重复活动的统计数据,以及
重复活动统计数据包括由所述用户与所述站点的重复请求。
5.根据权利要求4所述的系统,其中,所述指令在由所述处理器执行时还使所述处理器:
基于所述缓存适用性统计数据来识别所述站点中的前几名站点,以及
跟踪针对所述站点中的前几名站点的重复请求。
6.根据权利要求5所述的系统,其中,所述指令在由所述处理器执行时还使所述处理器:基于所述可缓存请求或者所述可缓存字节来识别所述站点中的前几名站点。
7.根据权利要求1所述的系统,其中
所述缓存适用性统计数据包括由所述用户与所述站点的重复活动的统计数据,以及
所述指令在由所述处理器执行时还使所述处理器:基于重复活动统计数据来动态地创建所述缓存器账户。
8.根据权利要求7所述的系统,其中,所述重复活动统计数据包括由所述用户与所述站点的重复请求。
9.根据权利要求8所述的系统,其中,所述指令在由所述处理器执行时还使所述处理器:
基于所述缓存适用性统计数据来识别所述站点中的前几名站点,以及
跟踪针对所述站点中的前几名站点的重复请求。
10.根据权利要求9所述的系统,其中
所述缓存适用性统计数据还包括由所述用户与所述站点的可缓存活动的统计数据,以及
所述指令在由所述处理器执行时还使所述处理器:基于可缓存活动统计数据来识别所述站点中的前几名站点。
11.根据权利要求10所述的系统,其中
所述可缓存活动统计数据包括:由所述用户与所述站点的可缓存请求,或者与所述可缓存请求对应的所述网络活动的可缓存字节,以及
所述指令在由所述处理器执行时还使所述处理器:基于所述可缓存请求或者所述可缓存字节来识别所述站点中的前几名站点。
12.一种对由用户通过网络访问的站点的内容进行动态缓存的方法,所述方法包括:
由处理器执行存储在非暂态物理介质上的指令;
由所述处理器在第一存储设备上维护缓存器账户,以基于由所述用户通过网络与站点的活动来存储由所述用户通过网络访问的站点的内容;
由所述处理器将统计数据存储在第二存储设备上;
由所述处理器基于网络活动来采集关于缓存的所述站点的适用性的统计数据;
由所述处理器将缓存适用性统计数据存储在所述第二存储设备上;以及
由所述处理器基于所述缓存适用性统计数据来动态地创建、删除所述缓存器账户或者调整所述缓存器账户的尺寸。
13.根据权利要求12所述的方法,其中
所述缓存适用性统计数据包括由所述用户与所述站点的可缓存活动的统计数据,以及
所述方法还包括:由所述处理器基于可缓存活动统计数据来动态地创建所述缓存器账户。
14.根据权利要求13所述的方法,其中,所述可缓存活动统计数据包括:由所述用户与所述站点的可缓存请求,或者与所述可缓存请求对应的所述网络活动的可缓存字节。
15.根据权利要求14所述的方法,其中
所述缓存适用性统计数据还包括由所述用户与所述站点的重复活动统计数据,以及
重复活动统计数据包括由所述用户与所述站点的重复请求。
16.根据权利要求15所述的方法,还包括:
由所述处理器基于所述缓存适用性统计数据来识别所述站点中的前几名站点;以及
由所述处理器跟踪针对所述站点中的前几名站点的重复请求。
17.根据权利要求16所述的方法,还包括:由所述处理器基于所述可缓存请求或者所述可缓存字节来识别所述站点中的前几名站点。
18.根据权利要求12所述的方法,其中
所述缓存适用性统计数据包括由所述用户与所述站点的重复活动的统计数据,以及
所述方法还包括:由所述处理器基于所述重复活动统计数据来动态地创建所述缓存器账户。
19.根据权利要求18所述的方法,其中,所述重复活动统计数据包括由所述用户与所述站点的重复请求。
20.根据权利要求19所述的方法,还包括:
由所述处理器基于所述缓存适用性统计数据来识别所述站点中的前几名站点;以及
由所述处理器跟踪针对所述站点中的前几名站点的重复请求。
21.根据权利要求20所述的方法,其中
所述缓存适用性统计数据包括由所述用户与所述站点的可缓存活动的统计数据,以及
所述方法还包括:由所述处理器基于可缓存活动统计数据来识别所述站点中的前几名站点。
22.根据权利要求21所述的方法,其中
所述可缓存活动统计数据包括:由所述用户与所述站点的可缓存请求,或者与所述可缓存请求对应的所述网络活动的可缓存字节,以及
所述方法还包括:由所述处理器基于所述可缓存请求或者所述可缓存字节来识别所述站点中的前几名站点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461947982P | 2014-03-04 | 2014-03-04 | |
US61/947,982 | 2014-03-04 | ||
PCT/US2015/018826 WO2015134669A1 (en) | 2014-03-04 | 2015-03-04 | Dynamic cache allocation and network management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462589A true CN106462589A (zh) | 2017-02-22 |
CN106462589B CN106462589B (zh) | 2019-11-29 |
Family
ID=54018634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580015415.9A Active CN106462589B (zh) | 2014-03-04 | 2015-03-04 | 动态缓存器分配和网络管理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US10021208B2 (zh) |
EP (1) | EP3114588B1 (zh) |
JP (1) | JP2017509074A (zh) |
KR (1) | KR102292471B1 (zh) |
CN (1) | CN106462589B (zh) |
AU (1) | AU2015227201B2 (zh) |
CA (1) | CA2976192C (zh) |
WO (1) | WO2015134669A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989657A (zh) * | 2018-04-10 | 2020-11-24 | Arm有限公司 | 用于控制将指令分配到指令缓存存储区的设备和方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104717152B (zh) * | 2013-12-17 | 2019-07-19 | 深圳市中兴微电子技术有限公司 | 一种实现接口缓存动态分配的方法和装置 |
US9787799B2 (en) | 2014-02-27 | 2017-10-10 | Dropbox, Inc. | Systems and methods for managing content items having multiple resolutions |
US10498663B2 (en) * | 2014-03-12 | 2019-12-03 | Amazon Technologies, Inc. | Profile-based cache management |
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US10133614B2 (en) * | 2015-03-24 | 2018-11-20 | Ca, Inc. | Anomaly classification, analytics and resolution based on annotated event logs |
US10198355B2 (en) | 2015-10-29 | 2019-02-05 | Dropbox, Inc. | Proving a dynamic digital content cache |
US20170192688A1 (en) * | 2015-12-30 | 2017-07-06 | International Business Machines Corporation | Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss) |
CN107071034B (zh) * | 2017-04-20 | 2019-10-11 | 网宿科技股份有限公司 | 一种数据包传输方法和系统 |
KR102222133B1 (ko) * | 2018-01-12 | 2021-03-03 | 엔에이치엔 주식회사 | 모바일 단말기 및 그의 어플리케이션 관리 방법과 이를 활용한 타겟 광고 제공 시스템 |
CN111339351B (zh) * | 2018-12-19 | 2023-08-11 | 成都鼎桥通信技术有限公司 | 一种Android系统中的音频播放方法 |
KR102166036B1 (ko) * | 2019-12-13 | 2020-10-15 | (주)교림소프트 | 인공 지능 기반 캐시 관리 시스템 |
US11489849B2 (en) * | 2020-01-14 | 2022-11-01 | Saudi Arabian Oil Company | Method and system for detecting and remediating malicious code in a computer network |
CN111737168B (zh) * | 2020-06-24 | 2024-09-20 | 华中科技大学 | 一种缓存系统、缓存处理方法、装置、设备及介质 |
CN112905646A (zh) * | 2021-04-07 | 2021-06-04 | 成都新希望金融信息有限公司 | 一种基于访问统计的地理数据加载方法及装置 |
CN113253930B (zh) * | 2021-05-20 | 2022-09-20 | 重庆会凌电子新技术有限公司 | 一种频谱监测装置的存储方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983318B2 (en) * | 2001-01-22 | 2006-01-03 | International Business Machines Corporation | Cache management method and system for storing dynamic contents |
JP2008210094A (ja) * | 2007-02-26 | 2008-09-11 | Yamaha Corp | キャッシュ制御装置 |
JP2010238112A (ja) * | 2009-03-31 | 2010-10-21 | Ntt Docomo Inc | 通信端末および通信制御方法 |
CN102694831A (zh) * | 2011-03-25 | 2012-09-26 | 中国电信股份有限公司 | 移动终端流媒体数据补偿方法与系统、内容分发网络 |
US20130031197A1 (en) * | 2011-07-27 | 2013-01-31 | Verizon Patent And Licensing Inc. | Internet cache subscription for wireless mobile users |
US8584234B1 (en) * | 2010-07-07 | 2013-11-12 | Symantec Corporation | Secure network cache content |
CN103458315A (zh) * | 2013-08-29 | 2013-12-18 | 北京大学深圳研究生院 | 一种基于流行度的p2p流媒体复制方法 |
CN103533056A (zh) * | 2013-10-16 | 2014-01-22 | 南京大学镇江高新技术研究院 | 一种面向智能手机的p2p移动流媒体系统及其工作方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185598B1 (en) | 1998-02-10 | 2001-02-06 | Digital Island, Inc. | Optimized network resource location |
US6408360B1 (en) | 1999-01-25 | 2002-06-18 | International Business Machines Corporation | Cache override control in an apparatus for caching dynamic content |
US6968539B1 (en) | 1999-09-30 | 2005-11-22 | International Business Machines Corporation | Methods and apparatus for a web application processing system |
US6772225B1 (en) | 1999-09-30 | 2004-08-03 | International Business Machines Corporation | Policy enabled web caching |
JP3664923B2 (ja) * | 1999-10-27 | 2005-06-29 | シャープ株式会社 | 情報源観測装置および情報源観測方法、ならびに情報源観測プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7096418B1 (en) | 2000-02-02 | 2006-08-22 | Persistence Software, Inc. | Dynamic web page cache |
US6757708B1 (en) | 2000-03-03 | 2004-06-29 | International Business Machines Corporation | Caching dynamic content |
CA2415641A1 (en) | 2000-07-11 | 2002-01-17 | Spidersoftware Inc. | Dynamic web page caching system and method |
EP1187481B1 (en) * | 2000-09-11 | 2008-04-02 | Handmark Europe AB | A method for dynamic caching |
US7188145B2 (en) * | 2001-01-12 | 2007-03-06 | Epicrealm Licensing Llc | Method and system for dynamic distributed data caching |
US20020116517A1 (en) | 2001-01-17 | 2002-08-22 | Hudson Michael D. | Virtual program streaming multi-media system |
FI114265B (fi) * | 2001-03-26 | 2004-09-15 | First Hop Oy | Menetelmiä ja järjestelyjä tehokkaan tiedonsiirron toteuttamiseksi nopeudeltaan rajoitetun tiedonsiirtolinkin yli |
WO2002099591A2 (en) * | 2001-06-04 | 2002-12-12 | Nct Group, Inc. | System and method for increasing the effective bandwidth of a communications network |
US20040044731A1 (en) | 2002-03-22 | 2004-03-04 | Kailai Chen | System and method for optimizing internet applications |
US20050086292A1 (en) | 2003-10-01 | 2005-04-21 | Yee Sunny K. | Method and apparatus for supporting preprocessing in a Web presentation architecture |
US7644432B2 (en) | 2003-10-10 | 2010-01-05 | Bea Systems, Inc. | Policy inheritance through nested groups |
US7720936B2 (en) | 2007-03-12 | 2010-05-18 | Citrix Systems, Inc. | Systems and methods of freshening and prefreshening a DNS cache |
US8359597B1 (en) * | 2008-09-11 | 2013-01-22 | John Lizy K | Workload-guided application scheduling in multi-core system based at least on applicaton branch transition rates |
US8516080B2 (en) | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
CN103620576B (zh) | 2010-11-01 | 2016-11-09 | 七网络公司 | 适用于移动应用程序行为和网络条件的缓存 |
CN102413436B (zh) * | 2011-09-14 | 2016-03-09 | 华为技术有限公司 | 信息传送方法和系统 |
US9384208B2 (en) * | 2013-01-22 | 2016-07-05 | Go Daddy Operating Company, LLC | Configuring a cached website file removal using a pulled data list |
-
2015
- 2015-03-04 JP JP2016555592A patent/JP2017509074A/ja active Pending
- 2015-03-04 WO PCT/US2015/018826 patent/WO2015134669A1/en active Application Filing
- 2015-03-04 CA CA2976192A patent/CA2976192C/en active Active
- 2015-03-04 US US14/639,096 patent/US10021208B2/en active Active
- 2015-03-04 CN CN201580015415.9A patent/CN106462589B/zh active Active
- 2015-03-04 EP EP15759095.1A patent/EP3114588B1/en active Active
- 2015-03-04 KR KR1020167027524A patent/KR102292471B1/ko active IP Right Grant
- 2015-03-04 AU AU2015227201A patent/AU2015227201B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983318B2 (en) * | 2001-01-22 | 2006-01-03 | International Business Machines Corporation | Cache management method and system for storing dynamic contents |
JP2008210094A (ja) * | 2007-02-26 | 2008-09-11 | Yamaha Corp | キャッシュ制御装置 |
JP2010238112A (ja) * | 2009-03-31 | 2010-10-21 | Ntt Docomo Inc | 通信端末および通信制御方法 |
US8584234B1 (en) * | 2010-07-07 | 2013-11-12 | Symantec Corporation | Secure network cache content |
CN102694831A (zh) * | 2011-03-25 | 2012-09-26 | 中国电信股份有限公司 | 移动终端流媒体数据补偿方法与系统、内容分发网络 |
US20130031197A1 (en) * | 2011-07-27 | 2013-01-31 | Verizon Patent And Licensing Inc. | Internet cache subscription for wireless mobile users |
CN103458315A (zh) * | 2013-08-29 | 2013-12-18 | 北京大学深圳研究生院 | 一种基于流行度的p2p流媒体复制方法 |
CN103533056A (zh) * | 2013-10-16 | 2014-01-22 | 南京大学镇江高新技术研究院 | 一种面向智能手机的p2p移动流媒体系统及其工作方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989657A (zh) * | 2018-04-10 | 2020-11-24 | Arm有限公司 | 用于控制将指令分配到指令缓存存储区的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
AU2015227201B2 (en) | 2020-07-09 |
EP3114588B1 (en) | 2018-09-12 |
US20150256639A1 (en) | 2015-09-10 |
CA2976192C (en) | 2023-08-22 |
CN106462589B (zh) | 2019-11-29 |
CA2976192A1 (en) | 2015-09-11 |
KR20160143666A (ko) | 2016-12-14 |
KR102292471B1 (ko) | 2021-08-23 |
US10021208B2 (en) | 2018-07-10 |
WO2015134669A1 (en) | 2015-09-11 |
EP3114588A4 (en) | 2017-08-23 |
EP3114588A1 (en) | 2017-01-11 |
AU2015227201A1 (en) | 2016-10-20 |
JP2017509074A (ja) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462589B (zh) | 动态缓存器分配和网络管理 | |
US9203864B2 (en) | Dynamic categorization of applications for network access in a mobile network | |
Xu et al. | Characterizing facebook's memcached workload | |
CN106664254A (zh) | 优化移动网络中的网络流量管理 | |
CN105814931A (zh) | 基于移动网络信号的网络建模 | |
CN105656997B (zh) | 基于移动用户关系的热度缓存内容主动推送方法 | |
EP3422775A1 (en) | Optimization of resource polling intervals to satisfy mobile device requests | |
CN108429800A (zh) | 一种移动设备 | |
CN104333567A (zh) | 采用安全即服务的web缓存 | |
CN110247856A (zh) | 服务器资源释放方法和装置 | |
CN110489696A (zh) | 缓存更新方法、装置及电子设备、存储介质 | |
Dutta et al. | Caching to reduce mobile app energy consumption | |
CN109586937A (zh) | 一种缓存系统的运维方法、设备和存储介质 | |
Li et al. | Efficient cooperative cache management for latency-aware data intelligent processing in edge environment | |
CN103763133B (zh) | 一种实现访问控制的方法、设备与系统 | |
Li et al. | Characterizing service providers traffic of mobile internet services in cellular data network | |
Shivakumar et al. | A survey and analysis of techniques and tools for web performance optimization | |
Kumar et al. | Improve Client performance in Client Server Mobile Computing System using Cache Replacement Technique | |
Li et al. | Improving web performance in home broadband access networks | |
Chaudhari et al. | Proxy side web Prefetching scheme for efficient bandwidth usage: data mining approach | |
Kaur et al. | Mobility‐Aware Cache Management in Wireless Environment | |
WO2014204995A1 (en) | Methods and systems for providing application programming interfaces and application programming interface extensions to third party applications for optimizing and minimizing application traffic | |
Sofi et al. | A proxy load reduction technique to improve web performance | |
Fukuda et al. | Enhancing Memcached by Caching Its Data and Functionalities at Network Interface | |
CN104104710B (zh) | 一种移动云计算环境中基于低能耗的数据缓存方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |