CN101682621A - 用于高速缓存操作的系统和方法 - Google Patents

用于高速缓存操作的系统和方法 Download PDF

Info

Publication number
CN101682621A
CN101682621A CN200880015868A CN200880015868A CN101682621A CN 101682621 A CN101682621 A CN 101682621A CN 200880015868 A CN200880015868 A CN 200880015868A CN 200880015868 A CN200880015868 A CN 200880015868A CN 101682621 A CN101682621 A CN 101682621A
Authority
CN
China
Prior art keywords
request
server
equipment
speed cache
response
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
Application number
CN200880015868A
Other languages
English (en)
Other versions
CN101682621B (zh
Inventor
R·普拉蒙东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/685,131 external-priority patent/US8103783B2/en
Priority claimed from US11/685,139 external-priority patent/US8037126B2/en
Priority claimed from US11/685,130 external-priority patent/US8074028B2/en
Priority claimed from US11/685,141 external-priority patent/US8701010B2/en
Priority claimed from US11/685,133 external-priority patent/US7584294B2/en
Priority claimed from US11/685,136 external-priority patent/US7809818B2/en
Priority claimed from US11/685,142 external-priority patent/US7720936B2/en
Priority claimed from US11/685,137 external-priority patent/US20080228864A1/en
Priority claimed from US11/685,134 external-priority patent/US8504775B2/en
Priority claimed from US11/685,132 external-priority patent/US7783757B2/en
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN101682621A publication Critical patent/CN101682621A/zh
Application granted granted Critical
Publication of CN101682621B publication Critical patent/CN101682621B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本方案提供用于加速并优化网络业务量例如基于HTTP的网络业务量的多种技术。在此描述的方案提供了代理高速缓存、协议加速、域名解析加速以及压缩改进领域中的技术。在一些情况下,本方案提供多种预取和/或预刷新技术以改进中介或代理高速缓存,例如HTTP代理高速缓存。在其他情况下,本方案提供用于通过提高获取和提供从初始服务器到服务器到客户机的数据的效率来加速协议的技术。在其他情况下,本方案更快地加速了域名解析。由于每个HTTP访问开始于包括必须通过域名解析解析成IP地址的主机名的URL,因此本方案有助于加速HTTP访问。在一些情况下,本方案通过预取不可高速缓存和高速缓存内容用于压缩诸如HTTP的网络业务量从而改进了压缩技术。在此描述的加速和优化技术可以部署在客户机上作为客户机代理或作为浏览器的一部分,以及部署在任何类型和形式的中介装置上,例如设备、代理装置或任何类型的拦截高速缓存和/或代理装置。

Description

用于高速缓存操作的系统和方法
技术领域
本发明通常涉及数据通信网络。特别是,本发明涉及用于通过使用高速缓存(cache)改进网络业务量的系统和方法。
相关申请
本申请涉及以下未决US申请并要求其优先权,在此引入其中的每一个以作参考:2007年3月12日提交的名称为“SYSTEMS AND METHODS OFPROVIDING A MULTI-TIER CACHE”的U.S.申请No.11/685,130;2007年3月12日提交的名称为“SYSTEMS AND METHODS OF PROVIDINGSECURITY AND RELIABILITY TO PROXY CACHES”的U.S.申请No.11/685,131;2007年3月12日提交的名称为“SYSTEMS AND METHODSOF REVALIDATING CACHED OBJECTS IN PARALLEL WITH REQUESTFOR OBJECT”的U.S.申请No.11/685,132;2007年3月12日提交的名称为“SYSTEMS AND METHODS OF PREFRESHENING CACHED OBJECTSBASED ON USER’S CURRENT WEB PAGE”的U.S.申请No.11/685,134;2007年3月12日提交的名称为“SYSTEMS AND METHODS OF USINGHTTP HEAD COMMAND FOR PREFETCHING”的U.S.申请No.11/685,136;以及2007年3月12日提交的名称为“SYSTEMS AND METHODS FORPREFETCHING NON-CACHEABLE CONTENT FOR COMPRESSIONHISTORY”的U.S.申请No.11/685,137;2007年3月12日提交的名称为“SYSTEMS AND METHODS OF DYNAMICALLY CHECKINGPRESHNESS OF CACHED OBJECTS BASED ON LINK STATUS”的U.S.申请No.11/685,139;2007年3月12日提交的名称为“SYSTEMS ANDMETHODS OF USING THE REFRESH BUTTON TO DETERMINEFRESHNESS POLICY”的U.S.申请No.11/685,141;2007年3月12日提交的名称为“SYSTEMS AND METHODS OF PRESHENING ANDREFRESHENING A DNS CACHE”的U.S.申请No.11/685,142;2007年3月12日提交的名称为“SYSTEMS AND METHODS FOR PREFETCHINGOBJECTS FOR CACHING UNSING QOS”的U.S.申请No.11/685,133。
背景技术
企业实体不断在地理上分布他们的业务。但是,与此同时,为了简化维护和经营,很多企业实体期望将他们的计算处理基础设施固定到单一的地理位置。这些竞争尝试通常需要远程商业操作通过广域网(WAN)与集中(centralized)数据中心通信。与WAN上的通信有关的延迟通常导致不能令用户满意的用户体验。因此通常采用用于加速WAN上网络业务量的技术。
一种这种加速技术是基于磁盘的业务量高速缓存(traffic caching),即,在磁盘上保持先前传输的网络业务量的历史以便在WAN上替代网络业务量标识并传送标记(tag)或其他标识符(identifier)。但是,由于存储在存储器中的高速缓存索引条目有与高速缓存条目数量成比例的趋势,这意味着传统的基于磁盘的高速缓存消耗大量存储器,因此传统的基于磁盘的高速缓存技术通常不能提供可接受的性能。在一些情况下,由于没有足够的存储器来正确索引高速缓存,因此磁盘高速缓存的尺寸受到人工限制。
另一种加速技术是业务量高速缓存,即,保持先前传输的网络业务量历史以便在WAN上替代网络业务量标识并传送标记或其他标识符。这种高速缓存通常将一个“新”值与一个高速缓存条目相关。如果被请求的对象存储在高速缓存中,且其新值表示被高速缓存的对象仍有效,则将该对象传送到客户。但是,这种途径通常遭遇的缺点是新值不能精确地反映出对象是否已经改变。因此,对新值的依赖会导致在新值期满前高速缓存可能会多次传输过时的信息给用户。
另一种这样的加速技术是业务量高速缓存,即,在磁盘上保持先前传输的网络业务量的历史以便在WAN上替代网络业务量标识并传送标记或其他标识符。但是,这种途径需要压缩历史的结构以便良好地运行并且这种结构需要在对用户提供任何加速感之前请求许多不同文件和对象。
这些高速缓存通常将一个“新”值与一个高速缓存条目相关。如果被请求的对象存储在高速缓存中,且其新值表示被高速缓存的对象仍有效,则将该对象传送到客户。但是,这种途径通常遭遇的缺点是许多网络对象在没有所相关的新值的情况下被传递(transfer)。在这种情况下,浏览器应用程序或高速缓存通常将新值分配给对象,并且,在大多数情况下,根据不随所遇对象的类型而改变的规则来选择新值。由于这种途径会导致产生失效对象以及未失效被高速缓存对象的确认或更新,因此这种途径不是最佳的。
如果被请求的对象存储在高速缓存中,且其新值表示被高速缓存对象仍有效,则将该对象传送给客户。但是,这种途径通常遭遇的缺点是新值不能精确地反映出对象是否已经改变。因此,对新值的依赖会导致在新值期满前高速缓存可能会多次传输过时的信息给用户。
在一些情况下,可以尝试配置提供高速缓存存储器的代理服务器以改善由WAN业务量所遇到的延迟,即,代理服务器能够通过存储在高速缓存中的数据响应用户请求,而不是要求用户从数据中心取回所请求的文件或对象。但是,由于代理服务器通常不需要用户认证,因此代理服务器会引起商业上的安全风险。因此,代理服务器会错误地响应来自不具权威性的用户的请求而取回特定的文件或对象,危及数据安全。
一种可以使用的技术是预取,即,识别用户很可能请求的文件或对象并在其实际被请求前请求该文件或对象。但是,由于预取业务量堪比对文件和对象的实际请求,因此这种技术通常不能像期望的那样提高性能。这种争用减慢了实际请求且实际上加剧了用户可感知到的延迟。
在一些情况下,在将对象传输到客户前对对象的“新值”确认有效。例如,可以发布有条件的HTTP GET命令以确定所请求的对象是否仍有效。但是,确认对象有效几乎要花费与提取它同样长的时间,因此,遇到一系列失效对象会由于在确认有效发生的同时用户在等待而导致低劣的性能。
每个由用户发出的请求开始于将统一资源定位符(URL)分解为IP地址。在一些情况下这种分解会占用一秒以上来完成,其对用户呈现为延迟。DNS加速方案(acceleration of DNS)会带来更好的用户体验。
发明内容
本方案提供用于加速并优化网络业务量的多种技术,例如基于HTTP的网络业务量。在此描述的方案提供在代理高速缓存、协议加速、域名解析加速以及压缩改进的领域中的技术。在一些情况下,本方案提供多种预取和/或预刷新技术以改进中介或代理高速缓存,例如HTTP代理高速缓存。在其他情况下,本方案提供用于通过提高从初始服务器到服务器到客户机获取和提供数据的效率来加速协议的技术。在其他情况下,本方案更快地加速了域名解析。由于每个HTTP访问开始于包括必须通过域名解析解析成IP地址的主机名的URL,因此本方案有助于加速HTTP访问。在一些情况下,本方案通过预取不可高速缓存和可高速缓存内容用于压缩网络业务量例如HTTP从而改进了压缩技术。在此描述的加速和优化技术可以部署在客户机上作为客户机代理或作为浏览器的一部分,以及部署在任何类型和形式的中介装置上,例如设备、代理装置或任何类型的拦截高速缓存和/或代理装置。
通过在此描述的技术,本方案的高速缓存特征对加速和不加速的连接都是有效的。例如,本方案可以部署为双端方案,其中共同操作的中介或装置一起工作来加速网络业务量,例如在分支机构的WAN连接的客户机侧的一个装置和例如公共数据中心的WAN连接服务器侧的第二装置。本方案还可以部署为单端方案,例如在到WAN的客户机侧连接上用于加速网络业务量。对于大多数连接到因特网和WAN上的用户来说,本方案的高速缓存技术可以在单个装置模式中加速用户体验。
本方案的高速缓存技术加速诸如HTTP或公共互联网文件系统(CIFS)的协议,其趋于进行每对象的最小数量往返而与大小无关。通过从高速缓存中介本地提供数据,中介将WAN往返转换成LAN往返以减小等待时间。在此描述的高速缓存技术进一步有助于减小等待时间和用于这些对象的往返次数并改善用户的体验。
本方案的技术还减少了服务器上的负载。响应于客户机请求,中介高速缓存可以不与初始服务器通信并从高速缓存提供响应。在其他情况下,本方案的技术更有效地与服务器通信以便确定是否应该从服务器获取对象。这也减少了服务器上的负载。
通过提供对高速缓存的改进来提高高速缓存命中或减少高速缓存遗漏,本方案还可以延长压缩历史的寿命。例如,如果高速缓存装置在系统的LAN侧上,则高速缓存遗漏和确认请求仅在WAN上发送。通过减少通过压缩装置的数据总量,增加了压缩历史的寿命。
一方面,本发明涉及一种基于对象大小利用多存储层次将对象存储在高速缓存中并将存储到高速缓存的较小对象的数量保持在预定阈值内的方法。在一个实施例中,该方法包括对高速缓存建立存储装置大小以便存储被高速缓存对象,其中该高速缓存利用存储装置的第一部分存储小于或等于第一阈值对象大小的对象并利用存储装置的第二部分存储大于该第一阈值对象大小的对象。该方法还包括识别高速缓存允许存储到该存储装置第一部分的对象数量。该高速缓存可以接收对象用于高速缓存,并基于对象大小确定将对象存储在该存储装置的第一部分或该存储装置的第二部分中。该高速缓存还将高速缓存允许存储到该存储装置第一部分的对象数量保持在预定阈值以下。
在一个实施例中,本方法包括该高速缓存确定对象的大小小于或等于该第一阈值对象大小并将该对象存储在该存储装置的第一部分。在其他实施例中,高速缓存确定对象大小大于第一阈值对象大小并将该对象存储到存储装置的第二部分。在一些其他实施例中,该方法包括通过高速缓存确定存储到存储装置第一部分的对象数量已经达到预定阈值。在一些实施例中,根据确定存储到存储装置第一部分的对象数量已经达到预定阈值,高速缓存看在高速缓存中不存储所接收的对象。在一些其他实施例中,该方法包括根据确定存储到存储装置第一部分的对象数量已经达到预定阈值由高速缓存将先前高速缓存的对象从高速缓存去除,并将所接收的对象存储到高速缓存中。
在另一实施例中,建立存储装置的第二部分的预定大小用于通过高速缓存存储大于第一阈值对象大小的对象。在一些实施例中,高速缓存可以识别用于在存储装置的第一部分中存储对象的第二阈值对象大小。在又一实施例中,高速缓存接收第二对象用于高速缓存,并响应于确定该第二对象的大小大于第二阈值对象大小且小于第一阈值对象大小而将第二对象存储到存储装置的第一部分中。在一些实施例中,高速缓存接收第二对象用于高速缓存,并响应于确定该第二对象的大小小于第二阈值对象大小而不将第二对象存储到高速缓存中。在一些其他实施例中,建立由高速缓存使用的存储器的大小,用于索引存储到高速缓存的存储装置的对象。在又一些实施例中,高速缓存响应于由高速缓存使用的存储装置的大小的改变而保持用于索引对象的存储器的大小。
另一方面,本发明涉及一种基于对象大小利用多存储层次将对象存储在高速缓存中并将大于对象阈值大小的对象存储到由高速缓存使用的存储装置的一部分的方法。在一个实施例中,本方法包括为由高速缓存使用的存储装置的第一部分建立预定大小用于存储大于第一阈值对象大小的对象,该高速缓存将小于第一阈值对象大小的对象存储到由高速缓存使用的存储装置的剩余部分。本方法还包括通过高速缓存接收对象用于高速缓存。高速缓存确定该对象的大小大于第一阈值对象大小,并响应于该确定而将该对象存储在存储装置的第一部分中。
在另一实施例中,高速缓存装置可以将高速缓存允许存储到存储装置剩余部分的对象数量保持在预定阈值以下。在其他实施例中,本方法包括确定存储到存储装置剩余部分的对象数量已经达到该预定阈值且不将小于第一阈值对象大小的第二接收对象存储到该存储装置的剩余部分。在一些实施例中,高速缓存装置接收第二对象,并确定第二对象的大小小于该第一阈值对象大小。在一些实施例中,如果空间可用于存储该第二对象,则高速缓存将该第二对象存储到由高速缓存使用的该存储装置剩余部分。在其他实施例中,高速缓存装置确定由高速缓存使用的存储装置的剩余部分不具有可用于存储该第二对象的空间。在又一些实施例中,高速缓存不将该第二对象存储到高速缓存中。在再一些其他实施例中,高速缓存从由高速缓存使用的存储装置的剩余部分去除先前被高速缓存的对象并将该第二对象存储到存储装置的剩余部分中。
在又一实施例中,为由高速缓存使用的存储装置的剩余部分建立第二预定大小以存储小于该第一阈值对象大小的对象。在一些其他实施例中,高速缓存确定由高速缓存使用的存储装置第一部分的可用空间处于或接近该预定大小,并通过将空间从存储装置的剩余部分分配到存储装置的第一部分来增大该存储装置第一部分的预定大小。在一些实施例中,本方法包括建立由高速缓存使用的存储器大小用于保持对存储到存储装置的对象的索引。在其他实施例中,本方法包括响应于由高速缓存使用的存储装置第一部分的大小改变而保持由高速缓存使用的用于索引对象的存储器的大小。
一方面,本发明涉及一种基于对象大小利用多存储层次管理存储在高速缓存中的对象大小的方法,该方法分配由高速缓存使用的存储装置的一部分用于存储较大对象。在一个实施例中,本方法包括建立由高速缓存使用的存储器大小,用于保持对存储到存储装置的对象的索引,该存储装置具有存储装置大小。本方法还包括建立高速缓存的存储装置第一部分的第一预定大小用于存储大于第一阈值对象大小的对象,该高速缓存使用高速缓存的存储装置的第二部分存储小于第一阈值对象大小的对象。本方法还包括改变由高速缓存使用的存储器大小或存储装置大小。高速缓存可以响应于由高速缓存使用的存储器大小或存储装置大小的改变而保持高速缓存的存储装置的第一部分的第一预定大小。
在另一实施例中,本方法包括增大或减小用于存储对象的由高速缓存使用的存储装置的大小。在其他实施例中,增大或减小用于索引对象的由高速缓存使用的存储器大小。在一些实施例中,本方法包括识别该高速缓存允许存储到该存储装置第一部分的对象数量。在一些其他实施例中,本方法包括响应于由高速缓存使用的存储器大小或存储装置大小的改变而保持高速缓存允许存储到存储装置第一部分的对象数量。
在又一实施例中,本方法包括响应于由高速缓存使用的存储器大小或存储装置大小的改变而调整第一阈值对象大小。在一些实施例中,本方法包括在保持存储装置的第一部分的第一预定大小的同时调整高速缓存允许存储到存储装置的第二部分的对象数量。在其他实施例中,本方法包括响应于由高速缓存使用的存储器大小或存储装置大小的改变而调整高速缓存允许存储到存储装置的第一部分的对象数量。在又一些实施例中,本方法包括相对于由高速缓存使用的存储器大小或存储装置大小的改变量调整高速缓存允许存储到磁盘第二部分的对象数量。
在另一实施例中,本方法包括建立用于高速缓存允许存储到存储装置第二部分的对象的第二阈值对象大小,该第二阈值对象大小小于于该第一阈值对象大小。在一些实施例中,高速缓存包括建立用于存储小于第二阈值对象大小的对象的存储装置的第三部分。在一些其他实施例中,本方法包括响应于由高速缓存使用的存储器大小或存储装置大小的改变而调整第二阈值对象大小。
一方面,本发明涉及一种为通过客户机和服务器之间的传输层连接进行通信的会话提供被高速缓存的对象而提供安全性或可靠性的方法。在一个实施例中,本方法包括以下步骤:通过装置,通过在客户机到服务器之间的传输层连接上进行通信的会话来接收对对象的请求;通过该装置,确定该对象存储在高速缓存中;通过该装置,转发该请求到该服务器;通过该装置,延迟从该高速缓存提供该对象直到从该服务器接收响应;以及通过该装置,基于从该服务器接收的该响应确定从该高速缓存提供该对象。
在一个实施例中,本方法包括通过该装置从所接收的响应确定服务器将提供该对象到该客户机。在一些实施例中,本方法还包括通过该装置从所接收的响应确定该服务器授权该客户机或该客户机的用户之一接收该对象。在其他实施例中,本方法包括通过该装置从所接收的响应确定该服务器可用于或者能够提供该对象到该客户机之一。在又一些实施例中,本方法包括通过该装置确定该服务器正在传输该对象到该客户机。
在另一实施例中,本方法包括通过该装置延迟从该高速缓存提供该对象直到确定该服务器已经将该对象传输到该客户机至少一次。在一些实施例中,该装置从所接收的响应确定该服务器不会提供该对象到该客户机,并且响应于该确定,不从该高速缓存提供对象。在一些实施例中,装置从所接收的响应确定该服务器不授权客户机或客户机的用户之一接收该对象,并且响应于该确定,不从该高速缓存提供该对象。在其他实施例中,装置从所接收的响应确定该服务器要求客户机的用户之一的验证,并且响应于该确定,不从该高速缓存提供该对象。在一些实施例中,该装置从所接收的对象确定该服务器不可用于或者不能提供该对象到该客户机,并且响应于该确定,不从高速缓存提供对象。在其他实施例中,装置包括客户机或设备。
一方面,本发明涉及一种用于为通过客户机和服务器之间的传输层连接进行通信的会话以提供被高速缓存对象而提供安全性或可靠性的设备。在一个实施例中,该设备包括用于通过在客户机和服务器之间的传输层连接上进行通信的会话接收对对象的请求的装置。该设备还包括用于确定该对象存储在高速缓存中的装置。该设备还包括用于转发该请求到该服务器的装置。该设备进一步包括用于延迟从该高速缓存提供该对象直到从该服务器接收到响应的装置。该设备还包括用于基于从该服务器接收的该响应确定从该高速缓存提供该对象的装置。在一些实施例中,该设备从所接收的响应确定该服务器将提供该对象到该客户机。在其他实施例中,该设备从所接收的响应确定该服务器授权该客户机或该客户机的用户之一接收该对象。
在一个实施例中,该设备从所接收的响应确定该服务器可用于或者能够提供该对象到该客户机。在一些实施例中,该设备确定服务器正在传输对象到客户机。在其他实施例中,该设备延迟从高速缓存提供对象直到确定服务器已经将对象传输到客户机至少一次。在一些其他实施例中,该设备从所接收的响应确定该服务器不会提供该对象到该客户机,并且响应于该确定,不从该高速缓存提供该对象。在一些实施例中,该设备从所接收的响应确定该服务器不授权该客户机或该客户机的用户接收该对象,并且响应于该确定,不从该高速缓存提供该对象。在一些实施例中,该设备从所接收的响应确定该服务器要求客户机或客户机用户的验证,并且响应于该确定,不从该高速缓存提供该对象。
在另一实施例中,该设备从所接收的响应确定该服务器不可用于或者不能提供该对象到该客户机,并且响应于该确定,不从该高速缓存提供该对象。在一些实施例中,该设备是对该客户机和该服务器透明的代理。
一方面,本发明涉及一种为代理客户机和服务器之间的连接提供安全性或可靠性的第二种方法。在一个实施例中,该第二方法包括以下步骤:通过装置,将从客户机接收的传输层连接请求转发到服务器;通过该装置,延迟将传输层连接接受为到代理的连接,直到从该服务器接收对客户机的该传输层连接请求的响应;通过该装置,从该服务器的该响应识别该服务器接受了该传输层连接;以及通过该装置,响应于识别服务器接受该传输层连接而代理该传输层连接。
在一个实施例中,该方法包括通过该装置接收客户机的传输控制协议连接请求的SYN分组,并且将所拦截的SYN分组转发到该服务器。在其他实施例中,该方法包括接收SYN-ACK分组作为从该服务器到该客户机传输控制协议连接请求的响应。在一些其他实施例中,该装置被构造得在该传输层连接上进行一个或多个加速技术。在一些实施例中,该装置响应于该确定在该传输层连接上进行加速技术。
在另一实施例中,该装置识别服务器未接受该传输层连接请求,并且确定不讲该传输层连接接受为到代理的连接。在一些实施例中,该装置识别该服务器是不可用于或者不能建立传输层连接,并且该设备确定不代理该传输层连接。在一些实施例中该装置延迟接受该传输层连接直到接收到该服务器是可用于或者能够建立传输层连接的指示。在其他实施例中,该装置识别该服务器未授权该客户机建立与该服务器的传输层连接,并且作为响应,该设备确定不接受该传输层连接作为到代理的连接。在一些实施例中,该装置识别该服务器要求验证以建立与该服务器的传输层连接,并且作为响应,该设备延迟接受该传输层连接作为到代理的连接,直到从服务器接收到该客户机的用户被验证的指示。
在另一实施例中,该装置延迟代理该客户机和该服务器之间的传输层连接,直到该服务器成功传输该对象到该客户机。在一些实施例中,该装置包括对该客户机和该服务器透明的代理。在其他实施例中,该装置是客户机或设备。
一方面,本发明涉及一种为代理客户机和服务器之间的连接提供安全性或可靠性的设备。在一个实施例中,该设备包括用于将从客户机接收的传输层连接请求转发到服务器的装置。该设备还包括用于延迟接受该传输层连接作为到代理的连接直到从该服务器接收到对客户机的该传输层连接请求的响应的装置。该设备还包括用于从服务器的响应识别服务器接受该传输层连接的装置。该设备还包括用于响应于识别服务器接受传输层连接而确定代理该传输层连接的装置。
在一个实施例中,该设备接收客户机传输控制协议连接请求的SYN分组,并转发所拦截的SYN分组到该服务器。在其他实施例中,该设备接收SYN-ACK分组作为对客户机传输控制协议连接请求的来自服务器的响应。
在另一实施例中,该设备被构造得在传输层连接上进行一个或多个加速技术。在一些实施例中,该设备响应于该确定在该传输层连接上进行加速技术。
在又一实施例中,该设备识别该服务器未接受该传输层连接请求,并通过该设备确定不接受该传输层连接作为到代理的连接。在其他实施例中,该设备识别该服务器为不可用于或者不能建立传输层连接之一,并且通过该设备确定不代理该传输层连接。在一些其他实施例中,该设备延迟接受与该客户机的传输层连接作为到代理的连接直到接收到该服务器为可用于或者能够建立传输层连接的指示。在一些实施例中,该设备识别该服务器未授权该客户机建立与该服务器的传输层连接,并且通过该设备确定不接受该传输层连接作为到代理的连接。在其他实施例中,该设备识别该服务器要求验证以便建立与该服务器的传输层连接,并且通过该设备延迟接受该传输层连接作为到代理的连接直到从该服务器接收到客户机的用户被验证的指示。在一些其他实施例中,该设备延迟代理该客户机和该服务器之间的传输层连接直到该服务器成功发送一对象到该客户机。
一方面,本发明涉及一种用于在将对象提供到请求方的同时使存储在高速缓存中的对象再生效的方法。在一个实施例中,从请求方接收对对象的请求。该方法还包括确定该对象存在于高速缓存中。该方法包括响应于该请求传输到请求方。该方法包括响应于该确定,传输到远程对象服务器以确定该对象的状态。在一个实施例中,将被高速缓存对象传输到该请求且基本同时将一请求传输到对象服务器。在其他实施例中,将被高速缓存对象传输到该请求且并行地将一请求传输到对象服务器。在又一些实施例中,在将被高速缓存对象传输到该请求方之前将请求传输到对象服务器。
在另一实施例中,该方法包括在从该远程对象服务器接收响应之前将该被高速缓存对象传输到该请求方。在一些实施例中,该方法包括响应于该确定,传输取回该对象的条件性请求到远程对象服务器。在其他实施例中,该方法包括接收对该条件性请求的表示该对象未改变的响应。在一些其他实施例中,该方法包括响应于该条件性请求从该远程对象服务器接收该对象的更新版本。在一些实施例中,该方法包括将该对象的更新版本存储在本地高速缓存中。
在又一实施例中,该方法包括从请求方接收对对象的请求。在一些实施例中,该方法包括确定(i)该对象存在于本地高速缓存中以及(“)与该对象相关的状态标识符表示该对象是有效的。在其他实施例中,该方法包括通过网络,响应于该确定将被请求的对象从高速缓存传输到请求方。在一些其他实施例中,该方法包括响应于该确定将请求传输到该远程对象服务器以便取回该对象的更新版本。
另一方面,本发明涉及一种在将对象提供到请求方的同时使存储在高速缓存中的对象再生效的系统。在一个实施例中,该系统包括与请求方、远程对象服务器和存储对象的本地高速缓存通信的高速缓存管理器,该高速缓存管理器从该请求方接收对对象的第一请求。响应于对象在该本地高速缓存中的定位,高速缓存管理器响应于该第一请求将该对象传输到该请求方,并且响应于该对象在本地高速缓存中的定位,传输第二请求以便从远程对象服务器获取该对象的状态。
在一个实施例中,高速缓存管理器为软件或硬件。在一些实施例中,本地高速缓存为随机存取存储器或磁盘存储装置。在一些其他实施例中,远程对象服务器是web服务器。
在另一实施例中,高速缓存管理通过网络与该请求方通信。在一些实施例中,高速缓存管理器传输该对象到请求方并将第二请求基本同时传输到该远程对象服务器。在其他实施例中,高速缓存管理器将该对象传输到请求方并将该第二请求并行地传输到该远程对象服务器。在又一些实施例中,高速缓存管理器在从该远程对象服务器接收响应之前将被高速缓存对象传输到该请求方。
在又一实施例中,高速缓存管理器响应于该确定将取回对象的条件性请求传输到该远程对象服务器。在一些实施例中,高速缓存管理器接收对该条件性请求的表示该对象还未改变的响应。在一些其他实施例中,高速缓存管理器响应于该条件性请求从该远程对象服务器接收该对象的更新版本。在一些实施例中,高速缓存管理器将该对象的更新版本存储在该本地高速缓存中。
另一方面,本发明涉及一种在将对象提供到网络环境中的客户机的同时使被该设备高速缓存的对象再生效的方法,该网络环境包括用作请求对象的客户机和响应客户机请求的对象服务器之间的代理的网络设备。在一个实施例中,该设备从远程对象服务器拦截来自客户机的对对象的请求。该设备确定该对象存在于该设备的高速缓存中。该设备响应于该确定将被高速缓存对象传输到响应于该请求的客户机。该设备响应于该确定传输该请求以便从远程对象服务器获取该对象的状态。在一个实施例中,该设备包括透明代理。
在一个实施例中,该设备与将请求传输到对象服务器基本同时地将被高速缓存对象传输到客户机。在其他实施例中,该设备与将请求传输到对象服务器并行地将被高速缓存对象传输到客户机。在又一些实施例中,该设备在将被高速缓存对象传输到客户机之前将请求传输到对象服务器。
在另一实施例中,设备在从该远程对象服务器接收响应之前将该被高速缓存对象传输到该客户机。在一些实施例中,该方法包括响应于该确定,通过该设备传输取回该对象的条件性请求到远程对象服务器。
在又一实施例中,该设备接收对该条件性请求的表示该对象未改变的响应。在一些其他实施例中,该设备接收该对象的更新版本。在一些实施例中,该设备将该对象的更新版本存储在本地高速缓存中。在一些实施例中,该方法包括通过该设备确定(i)该对象存在于本地高速缓存元件中以及(ii)与该对象相关的状态标识符表示该对象是有效的。
又一方面,本发明涉及在包括用作请求对象的客户机和响应客户机请求的对象服务器之间的代理的网络设备的网络环境中,在将对象提供到客户机的同时使由该设备高速缓存的对象再生效的设备。在一个实施例中,该设备包括分组处理引擎,其从服务器拦截来自客户机的对对象的第一请求。该设备还包括与该分组处理引擎通信的高速缓存管理器,该高速缓存管理器响应于该分组处理引擎而确定该对象是否存储在该设备的高速缓存中。响应于该第一请求,该设备响应于对象在高速缓存中的定位将该对象传输到客户机,并且响应于该对象在该高速缓存中的定位,将第二请求传输到服务器以便获取该对象的状态。
在另一实施例中,该高速缓存管理器包括软件或硬件。在一些实施例中,高速缓存是随机存取存储器或磁盘存储装置。
在又一实施例中,该设备传输该对象到该客户机并基本同时将第二请求传输到服务器。在其他实施例中,该设备将该对象传输到请求方并将该第二请求并行地传输到该服务器。在一些其他实施例中,该设备在从该服务器接收响应之前将被高速缓存对象传输到该客户机。
在再一实施例中,该设备响应于该确定将取回对象的条件性请求传输到该服务器。在一些实施例中,该设备接收对该条件性请求的表示该对象还未改变的响应。在其他实施例中,高速缓存管理器响应于该条件性请求从该服务器接收该对象的更新版本。在又一些实施例中,高速缓存管理器将该对象的更新版本存储在该本地高速缓存中。
一方面,本发明涉及一种用于利用空闲的网络带宽推测性预取对象的方法。在一个实施例中,装置通过网络接收识别对象的通信。该装置产生对对象的到对象服务器的请求,其中该请求被识别为推测性请求。该装置确定空闲网络带宽的可用性以便从对象服务器获取对象。该装置响应于确定空闲网络带宽的可用性,根据传输速率将所产生的请求传输到对象服务器以便将来自推测性请求的带宽利用保持在预定水平内。
在另一实施例中,该装置将该通信发送到请求方。在其他实施例中,该方法包括在用户请求由该通信识别的对象之前传输所产生的请求。在一些其他实施例中,该方法包括在用户请求由该通信识别的对象之前产生请求。在一些实施例中,该装置响应于所传输的请求接收对象。在其他实施例中,该装置将所接收的对象存储在高速缓存中。在又一些实施例中,该方法包括接收具有识别对象的超链接的页面。
在又一实施例中,该装置通过将传输层或互联网协议层首部选项之一的字段编码为预定值而将所产生的请求识别为推测性请求。在一些实施例中,该装置通过将应用层协议选项的值编码为预定值而将所产生的请求识别为推测性请求。在一些其他实施例中,该装置通过将互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)之一的值设置为预定值而将所产生的请求识别为推测性请求。在其他实施例中,该装置通过将识别该请求的连接状态表中的条目制为推测性而将所产生的请求识别为推测性请求。
在另一实施例中,该装置将所产生的请求包识别为比对对象的非推测性请求低的传输优先级。在其他实施例中,该装置是客户机、服务器或客户机和服务器之间的设备。
另一方面,本发明涉及一种用于利用空闲网络带宽推测性预取对象的系统。在一个实施例中,该系统包括用于拦截通过网络传输的通信的装置,其中该通信包括对象的标识符。该系统还包括用于对所识别的对象产生到对象服务器的请求分组的装置,该请求被识别为推测性请求。该系统进一步包括用于确定空闲网络带宽可用性以便从对象服务器获取对象的装置。响应于确定空闲网络带宽可用性,该系统包括用于根据传输速率以将来自推测性请求的带宽利用保持在预定水平内,将所产生的请求分组传输到对象服务器的装置。
在另一实施例中,该系统将该通信转发到请求方。在一些实施例中,该系统在用户请求由该页面识别的对象之前传输所产生的请求分组。在其他实施例中,该系统在用户请求由该页面识别的对象之前产生请求分组。在一些实施例中,该系统将所接收的对象存储在高速缓存中。在又一些实施例中,该页面包括识别对象的超链接。
在又一实施例中,该系统通过将传输层或互联网协议层首部选项中的字段编码为预定值而将所产生的请求识别为推测性请求。在其他实施例中,该系统通过将应用层协议选项的值编码为预定值而将所产生的请求识别为推测性请求。在一些其他实施例中,该系统通过将互联网协议(IP)帧中的服务类型(TOS)或DiffServ Codepoint(DSCP)的值设置为预定值而将所产生的请求识别为推测性请求。在一些实施例中,该系统通过将识别该请求的连接状态表中的条目制为推测性而将所产生的请求识别为推测性请求。在其他实施例中,该系统将所产生的请求识别为比对对象的非推测性请求低的传输优先级。
又一方面,本发明涉及一种利用空闲网络带宽通过多个装置推测性预取对象的方法。在一个实施例中,第一装置接收从服务器传输到客户机的通信,其中该通信包括对象标识符,且该第一设备转发该通信到请求方。该第一装置将对由该通信识别的对象的请求传输到服务器,且该第一装置产生该请求并将该请求识别为推测性的。第二装置将从第一装置接收的该请求识别为推测性请求。第二装置确定空闲网络带宽的可用性以便从服务器获取对象。响应于确定空闲网络带宽的可用性,第二装置根据传输速率传输该请求以便将来自推测性请求的网络利用(usage)保持在预定水平内。
在另一实施例中,该方法的步骤包括在用户请求由该通信识别的对象之前传输所产生的请求。在其他实施例中,该方法的步骤包括在用户请求由该通信识别的对象之前产生该请求。
在又一实施例中,该第二装置响应于所传输的请求来接收对象。在其他实施例中,第二装置将所接收的对象存储在高速缓存中。在一些实施例中,第二装置将该对象传输到第一装置。在一些其他实施例中,第一装置将所接收的对象存储在高速缓存中。
在另一实施例中,第一装置接收包括识别该对象的超链接的页面。在一些实施例中,第一装置通过将传输层或互联网协议层首部选项之一的字段编码为预定值而将所产生的请求识别为推测性请求。在其他实施例中,第一装置通过将应用层协议选项的值编码为预定值而将所产生的请求识别为推测性请求。在一些其他实施例中,第一装置通过将互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)的值设置为预定值而识别所产生的请求是推测性请求。在又一些实施例中,第二装置通过将应用层协议选项的值编码为预定值而识别所产生的请求是推测性请求。在再一些实施例中,第二装置通过将互联网协议(IP)帧的服务类型(TOS)或DiffServCodepoint(DSCP)字段的编码值规定了一预定值而识别所产生的请求是推测性请求。
在又一实施例中,第二装置通过将识别该请求的连接状态表中的条目识别为推测性而将所产生的请求识别为推测性请求。在一些实施例中,该方法包括通过第一装置或第二装置,以低于非推测性对象请求的传输优先级传输该请求。
在另一实施例中,第一装置是客户机或设备。在一些实施例中,第二装置是设备。在其他实施例中,该方法包括通过第一装置或第二装置,以低于非推测性对象请求的传输优先级传输该请求。
一方面,本发明涉及一种用于基于对识别被高速缓存对象的页面的用户请求而刷新被高速缓存对象的方法。在一个实施例中,装置通过网络接收页面,其中该页面识别对象。装置将该页面转发到请求该页面的用户。装置确定该对象存储在高速缓存中。装置在用户请求来自该页面的对象之前,将对对象状态的请求发送到远程对象服务器。
在另一实施例中,装置包括响应于该确定通过该装置将取回该对象的条件性请求传输到该远程对象服务器。在一些实施例中,装置响应于该请求,接收来自该远程对象服务器的表示该对象有效的指示。在其他实施例中,装置响应于该请求,从该远程对象服务器接收该对象的更新版本。在一些其他实施例中,该方法包括通过该装置确定该对象的期限已经期满。在又一些实施例中,该方法包括通过该装置确定该对象是旧的。
在又一实施例中,装置确定远程对象服务器不可用于提供对象,且响应于该确定不从该高速缓存提供该对象。在其他实施例中,装置确定该远程对象服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。在一些实施例中,该方法包括确定该对象存在于该高速缓存中且与该对象相关的状态标识符表示该对象是有效的。在其他实施例中,该方法包括响应于该确定不通过该装置将请求传输到该远程对象服务器。在又一些实施例中,该方法的步骤包括确定该对象的大小在预定阈值以下且响应于该确定将对对象状态的请求传输到该远程对象服务器。在其他实施例中,装置识别具有对象的页面的一个或多个级,确定处于该一个或多个级的每一个中的对象位于该高速缓存中,并响应于该确定将对对象状态的请求传输到该远程对象服务器。
在另一实施例中,装置在用户从该页面的一个或多个级请求一级之前传输该请求。在其他实施例中,装置将到该远程对象服务器的请求识别为推测性请求。在一些实施例中,装置包括客户机或服务器。在一些其他实施例中,装置包括拦截并转发客户机和服务器之间通信的设备。
在又一方面,本发明涉及一种基于用户对识别对象的页面的请求而刷新被高速缓存对象的装置。在一个实施例中,该装置包括用于通过网络接收页面的装置,该页面识别对象。该装置还包括用于将该页面转发到请求该页面的用户的装置。该装置进一步包括用于确定该对象存储在高速缓存中的装置。该装置还包括用于在用户请求来自该页面的对象之前将对该对象状态的请求传输到远程对象服务器的装置。
在另一实施例中,该装置响应于该确定将取回该对象的条件性请求传输到该远程对象服务器。在一些实施例中,该装置响应于该请求从该远程对象服务器接收表示该对象有效的指示。在其他实施例中,该装置响应于该请求从该远程对象服务器接收该对象的更新版本。在一些实施例中,该装置确定该对象的期限已经期满。在一些其他实施例中,该装置确定该对象是旧的。
在又一实施例中,该装置确定该远程对象服务器不可用于提供该对象,且响应于该确定不从该高速缓存提供该对象。在一些实施例中,该装置确定该远程对象服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。在一些其他实施例中,该装置包括确定该对象存在于该高速缓存中并且与该对象相关的状态标识符表示该对象是有效的。在又一些实施例中,该装置响应于该确定不将该请求传输到该远程对象服务器。在再一些实施例中,该装置确定该对象的大小在预定阈值以下且响应于该确定将对对象状态的请求传输到该远程对象服务器。在一些实施例中,该装置识别具有对象的页面的一个或多个级,确定处于该一个或多个级的每一个中的对象位于该高速缓存中,并响应于该确定将对对象状态的请求传输到该远程对象服务器。
在另一实施例中,该装置在用户从该页面的一个或多个级请求一级之前传输该请求。在一些实施例中,该装置将对该远程对象服务器的请求识别为推测性请求。在其他实施例中,该装置是客户机或服务器。在一些其他实施例中,该装置拦截并转发客户机和服务器之间通信。
再一方面,本发明涉及在包括用作请求页面的客户机和响应客户机请求的服务器之间的代理的网络设备的网络环境中,一种用于刷新由该设备高速缓存的对象的方法。在一个实施例中,该设备响应于来自客户机用户的请求接收由服务器传输到客户机的页面,其中该页面识别对象。该设备转发所拦截的页面到该客户机。该方法包括通过该设备的高速缓存管理器,确定该对象存储在该设备的高速缓存中。该设备在客户机的用户从该页面请求该对象之前将对该对象状态的请求传输到该服务器。
在另一实施例中,该设备响应于该确定,将取回该对象的条件性请求传输到该服务器。在一些实施例中,该设备响应于该请求,从该远程对象服务器接收表示该对象有效的指示。在其他实施例中,该设备响应于该请求,从该远程对象服务器接收该对象的更新版本。
在又一实施例中,该方法包括通过高速缓存管理器确定该对象的期限已经期满。在其他实施例中,该方法包括通过该高速缓存管理器确定该对象是旧的。
在另一实施例中,该设备确定该服务器不可用于提供该对象,且响应于该确定不从该高速缓存提供该对象。在一些实施例中,该设备确定该服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。在其他实施例中,该方法包括通过该高速缓存管理器确定该对象存在于该高速缓存中并且与该对象相关的状态标识符表示该对象是有效的。在又一些实施例中,该设备响应于该确定不将该请求传输到该远程对象服务器。在一些实施例中,该方法包括通过该高速缓存管理器确定该对象的大小在预定阈值以下且响应于该确定通过该设备将对对象状态的请求传输到该远程对象服务器。在一些其他实施例中,该设备识别具有对象的页面的一个或多个级,通过该高速缓存管理器确定处于该一个或多个级的每一个的对象位于该高速缓存中,并响应于该确定通过该设备将对对象状态的请求传输到服务器。
在又一实施例中,该设备在用户从该页面的一个或多个级请求一级之前传输该请求。在一些实施例中,该设备将到该服务器的请求识别为推测性请求。
一方面,本发明涉及一种用于通过取来自远程对象服务器的对象的首部信息由装置确定是否预取由页面识别的对象的方法。在一个实施例中,装置接收包括对象标识符的页面。装置传输由该装置产生的请求以便从远程对象服务器获取该对象的首部信息。该方法进一步包括通过该装置,响应于所产生的请求,接收用于该对象的首部信息。该装置响应于所接收的首部信息,确定是否从该远程对象服务器预取该对象。
在另一实施例中,该方法包括响应于所接收的信息,确定将该对象存储在高速缓存中。在一些实施例中,该装置识别来自该页面的对象的标识符,并确定该对象未存储在高速缓存中。在其他实施例中,该装置将该页面转发到用户、客户机或浏览器。在又一实施例中,该装置在用户请求对象之前或在接收对对象请求之前预取对象。在一些实施例中,该方法包括拦截包括识别对象的超链接的页面。在一些实施例中,该方法包括通过该装置传输HTTPHEAD命令到由与页面的对象相关的统一资源定位符识别的远程对象服务器。
在另一实施例中,该方法包括响应于所产生的请求接收该对象的首部信息,该首部信息用于识别该对象有效的最大时间量。在其他实施例中,该方法包括响应于所产生的请求,接收该对象的首部信息,该首部信息识别该对象被最后修改的日期。
在另一实施例中,该方法包括响应于所接收的首部信息,确定识别已经存储在高速缓存中的对象是有效的。在一些实施例中,该方法包括响应于所接收的首部信息,确定修改已经存储在高速缓存中的对象为有效的时间周期。
在又一实施例中,该装置响应于所接收的首部信息传输从该远程对象服务器获取该对象的请求。在一些实施例中,该装置将从该远程对象服务器接收的对象存储到高速缓存中。在其他实施例中,该方法包括响应于所接收的首部信息,确定修改已经存储在高速缓存中的对象是有效的的时间周期。在一些实施例中,该装置是客户机或用于拦截并转发客户机和服务器之间的通信的设备。
另一方面,本发明涉及一种用于通过取来自远程对象服务器的对象的首部信息确定是否预取从所拦截的页面识别的对象的装置。在一个实施例中,该装置包括用于接收包括对象标识符的页面的部件。该装置还包括用于传输由该装置产生的请求以便从远程对象服务器获取对象首部信息的装置。该装置进一步包括用于响应于所产生的请求接收对象首部的装置。该装置还包括用于响应于所接收的首部信息确定是否从该远程对象服务器预取该对象的装置。
在另一实施例中,该装置响应于所接收的信息确定将该对象存储在高速缓存中。在一些实施例中,该装置识别来自该页面的对象的标识符,并确定该对象未存储在高速缓存中。在其他实施例中,该装置将该页面转发到用户、客户机或浏览器之一。在一些其他实施例中,该装置在用户请求对象之前传输所产生的请求到该远程对象服务器。
在又一实施例中,该装置包括用于接收包括识别对象的超链接的页面的装置。在其他实施例中,该装置传输HTTP HEAD命令到由与所拦截的页面的对象相关的统一资源定位符识别的远程对象服务器。在一些其他实施例中,该装置响应于所产生的请求,接收该对象的首部信息,该首部信息用于识别该对象有效的最大时间量。在其他实施例中,该装置响应于所产生的请求,接收该对象的首部信息,该首部信息识别与该对象被最后修改的日期。在一些实施例中,该装置响应于所接收的首部信息,确定修改已经存储在高速缓存中的对象是有效的时间周期。
在另一实施例中,该装置响应于所接收的首部信息传输从该远程对象服务器获取该对象的请求。在一些实施例中,该装置将从该远程对象服务器接收的对象存储到高速缓存中。在一些其他实施例中,该装置响应于所接收的首部信息,确定修改已经存储在高速缓存中的对象是有效的的时间周期。在一些实施例中,该装置是客户机或用于拦截并转发客户机和服务器之间的通信的设备。
另一方面,本发明涉及一种用于通过装置从远程对象服务器预取对象的首部信息的方法。在一个实施例中,该装置接收包括对象识别符的页面。该方法还包括通过该装置,确定由该页面识别的对象的首部存储在高速缓存中。该方法进一步包括通过该装置响应于该确定,在用户请求来自该页面的对象之前产生对来自远程对象服务器的对象首部的请求。
在另一实施例中,该装置响应于所产生的请求,接收对象的首部信息。在一些实施例中,该装置基于所接收的首部信息更新被高速缓存的首部信息。在其他实施例中,该装置从请求方接收对对象首部信息的请求。
在另一实施例中,该装置将存储在该高速缓存中的该首部信息传输到该请求方。在一些实施例中,该请求包括HTTP HEAD命令。在其他实施例中,该请求包括使用“if-modified-since”的HTTP GET命令。在一些实施例中,该装置确定该请求的对象还未改变,并用存储在高速缓存中的首部信息对请求作出响应。在其他实施例中,该装置确定该请求的对象已经改变并响应于该确定,转发该请求到服务器。在一些实施例中,该装置从该请求接收该对象。在一些其他实施例中,该装置用从服务器接收的对象对请求作出响应。在一些实施例中,该装置将该对象存储到该高速缓存。
在又一方面,本发明涉及一种用于通过装置预取来自远程对象服务器的对象的首部信息的装置。在一个实施例中,该装置包括用于接收包括对象标识符的页面的装置。该装置还包括用于确定由该页面识别的对象的首部存储在高速缓存中的装置。该装置可以包括用于响应于该确定,在用户从该页面请求对象之前对来自远程对象服务器的对象的首部产生请求的装置。
在另一实施例中,该装置包括用于响应于所产生的请求,通过该装置接收对象的首部信息的装置。在其他实施例中,该装置包括用于基于所接收的首部信息更新被高速缓存的首部信息的装置。
在又一实施例中,该装置包括用于接收来自从请求方的对对象首部信息的请求的装置。在其他实施例中,该装置包括将存储在该高速缓存中的该首部信息传输到该请求方。在一些实施例中,该请求包括HTTP HEAD命令。该其他实施例中,该请求包括使用“if-modified-since”的HTTP GET命令。在一些实施例中,该装置包括用于确定该请求的对象是否未改变,并用存储在高速缓存中的首部信息对请求作出响应的装置。在其他实施例中,该装置包括用于确定该请求的对象已被修改并响应于该确定转发该请求到服务器的装置。
在另一实施例中,该装置包括用于从该请求方接收该对象的装置。在一些实施例中,该装置包括用从服务器接收的对象对请求作出响应的装置。在一些其他实施例中,该装置包括用于将该对象存储到该高速缓存的装置。在一些实施例中,该装置是客户机或用于拦截并转发客户机和服务器之间的通信的设备。
一方面,本发明涉及一种预取不可高速缓存内容以存储在压缩历史中以改进随后传输的具有不可高速缓存内容的页面的压缩的方法。装置接收由服务器传输到客户机的第一页面,该第一页面识别不可高速缓存对象。该方法包括在用户从该第一页面请求不可高速缓存对象之前,通过该装置,产生对由该页面识别的不可高速缓存对象的请求。该装置将所产生的请求传输到该服务器。该装置将从该服务器接收的不可高速缓存对象存储到第一压缩历史。
在一个实施例中,该装置接收通过用户的第一会话传输的该第一页面。在另一实施例中,该方法包括第一页面,其包括用于用户的页面个性化版本。在一些实施例中,该不可高速缓存对象是由该服务器动态生成的。在其他实施例中,该装置接收由该服务器传输到该客户机的第二页面,该第二页面包括不可高速缓存内容。
在又一实施例中,该服务器通过用户的第一会话或第二会话传输该第二页面。第二页面包括用于用户的页面个性化版本。在另一实施例中,该装置确定第二页面的一部分与存储在压缩历史中的部分不可高速缓存对象相匹配。在一些实施例中,该装置响应于该确定利用与该不可高速缓存对象的匹配部分压缩该第二页面。该装置传输被压缩的第二页面到该客户机。
在一个实施例中,第二装置接收被压缩的第二页面,并利用与存储到第二压缩历史中的第一页面匹配的不可高速缓存对象解压该被压缩的第二页面。第二装置接收由该装置转发的第一页面。在另一实施例中,第二装置传输由该第二装置产生的请求以便从服务器获取由该第一页面识别的不可高速缓存对象。
在一个实施例中,第二装置响应于所产生的请求将从该服务器接收的不可高速缓存对象存储到第二压缩历史。在另一实施例中,该装置通过多个用户会话接收识别多个不可高速缓存对象的多个页面,传输由该装置产生的多个请求以便从一个或多个服务器获取不可高速缓存对象。该装置响应于该请求而接收的多个不可高速缓存对象存储到第一压缩历史。
在又一实施例中,该装置接收第三页面,并确定第三页面的一部分与存储在第一压缩历史中的多个不可高速缓存对象的一个或多个部分相匹配。压缩历史的一部分存储在存储器或磁盘存储装置之一中。在另一实施例中,装置将至少部分第一压缩历史传输到第二装置以存储在第二压缩历史中。该装置包括客户机或设备之一。
一方面,本发明涉及一种通过网络文件传输预取内容以用作用于压缩超文本协议(HTTP)通信的压缩历史的方法。该方法包括在用户通过HTTP请求请求一个或多个文件中的一文件之前,执行从第一装置到第二装置的一个或多个文件的非HTTP网络文件传输。设备拦截该非HTTP网络文件传输的分组。该设备将来自所拦截分组的一个或多个文件的内容存储到压缩历史。
在一个实施例中,该设备响应于HTTP请求接收通过HTTP协议由服务器传输到客户机的页面。在另一实施例中,该设备确定该页面的一部分与存储在第一压缩历史中的一个或多个文件的至少一部分内容相匹配。在一些实施例中,该设备根据该确定压缩该页面。在其他实施例中,该设备将被压缩页面传输到该客户机。该方法包括有该客户机或第二设备之一,拦截被压缩页面,并利用来自存储在第二压缩历史中的网络文件传输的一个或多个文件解压该被压缩页面。该页面包括来自网络文件传输的一个或多个文件中的文件。
在又一实施例中,设备管理员开始执行网络文件传输以便预加载设备的压缩历史。该网络文件传输包括远程文件备份。在另一实施例中,该分组包括远程备份协议或文件传输协议之一。该设备将所拦截的网络分组转发到第二装置。在另一实施例中,第二装置废除来自网络文件传输的一个或多个文件。
在一个实施例中,第二设备拦截被转发的网络分组,并将来自所拦截分组的一个或多个文件的内容存储到第二压缩历史。该设备开始执行网络文件分组。在另一实施例中,该设备响应于策略引擎的策略开始执行网络文件传输。
一方面,本发明涉及一种基于到远程对象服务器的连接的操作特性动态地确定是否检查被高速缓存对象状态的方法。该方法包括通过装置,拦截通过传输层连接从服务器传输到请求方的对象。该装置将该对象存储在高速缓存中。该方法包括通过该装置,检测到该服务器的该传输层连接的操作特性是否在预定阈值内。该装置响应于该检测,确定是否将请求传输到该服务器以获取该对象的状态。
在一个实施例中,该装置转发该对象到该请求方。在另一实施例中,该装置检测通过该传输层连接到该服务器的可用带宽不在该预定阈值内。在一些实施例中,该装置响应于该检测确定不将该请求传输到该服务器。在其他实施例中,该装置检测到服务器的传输层连接的速度不在预定阈值内。在另一实施例中,该装置响应于该检测,确定不将该请求传输到该服务器。
在一个实施例中,该装置检测到服务器的该传输层连接的往返时间不在预定阈值内。在另一实施例中,该装置响应于该检测,确定不将该请求传输到该服务器。在一些实施例中,该装置检测服务器通过该传输层连接是否是不可用的或者该传输层连接是不可操作的。在其他实施例中,该装置响应于该检测,确定不将该请求传输到该服务器。
在又一实施例中,该装置检测到服务器的该传输层连接的操作特性在用于刷新高速缓存中对象的预定阈值内。在一些实施例中,该装置响应于该检测,确定将该请求传输到该服务器以获取对象状态。该装置在用户请求来自该页面的对象之前传输该请求到该服务器。在另一实施例中,该装置将对对象的条件性请求传输到服务器。在其他实施例中,该装置从该服务器接收该对象的更新版本,并将该对象存储在该高速缓存中。
在又一实施例中,该装置接收表示高速缓存中对象有效的对象状态,并响应于该状态,将对对象的第二请求传输到该服务器。在一些实施例中,该装置检测到该服务器的传输层连接具有大于预定带宽阈值的可用带宽。该装置响应于该检测将该请求传输到该服务器。在一些实施例中,该装置包括客户机,而在其他实施例中,该装置包括拦截并转发客户机和服务器之间的通信的设备。
另一方面,本发明涉及一种在包括用作请求页面的客户机和响应客户机请求的服务器之间的代理的网络设备的网络环境的设备,用于基于服务器的连接操作状态动态地确定是否检查被高速缓存对象的状态的设备。该设备包括用于拦截通过传输层连接从服务器传输到客户机的对象并将该对象存储在高速缓存中的装置。用于检查到服务器的传输层连接的操作特性是否在预定阈值内的装置。该设备包括用于响应于该检测确定是否将请求传输到该服务器以获取该对象状态的装置。该设备转发该对象到该客户机。
在一个实施例中,该设备包括用于检测通过到该服务器的传输层连接的可用带宽不在该预定阈值内的装置。在另一实施例中,该设备包括用于响应于该检测确定不将该请求传输到该服务器的装置。该设备检测到该服务器的传输层连接的速度不在该预定阈值内。在一些实施例中,该设备包括用于响应于该检测确定不将该请求传输到该服务器的装置。
在又一实施例中,该设备包括用于检测到该服务器的传输层连接的往返时间不在该预定阈值内的装置。在一些实施例中,该设备响应于该检测确定不将该请求传输到该服务器。在其他实施例中,该设备包括用于检测该服务器通过该传输层连接是不可用的或者该传输层连接是不可操作的的装置。在一些实施例中,该设备包括响应于该检测确定不将该请求传输到该服务器。
在又一实施例中,该设备包括用于检测到该服务器的传输层连接的操作特性在用于刷新高速缓存中对象的预定阈值内的装置。在另一实施例中,该设备包括用于响应于该检测将该请求传输到该服务器以获取对象状态。在一些实施例中,该设备包括用于在用户请求来自该页面的对象之前将该请求传输到该服务器的装置。在其他实施例中,该设备将对对象的条件性请求传输到该服务器。
在另一实施例中,该设备包括用于从该服务器接收对象的更新版本并将该对象存储在该高速缓存中的高速缓存管理器。在一些实施例中,设备包括接收表示高速缓存中的对象是旧的对象状态,并响应于该状态将对对象的第二请求传输到该服务器。
在一个实施例中,设备包括用于检测到该服务器的该传输层连接具有大于预定带宽阈值的可用带宽,并响应于该检测将该请求传输到该服务器的装置。
一方面,本发明涉及一种用于响应于一个或多个请求而更新被高速缓存对象期满周期以便刷新页面上的对象的方法。在一个实施例中,该装置拦截刷新识别对象的页面的请求,该装置在高速缓存中存储具有期满周期的对象。该装置响应于该请求,确定用于被高速缓存对象的第二期满周期。该装置将该第二期满周期建立为高速缓存中被高速缓存对象的期满周期。
在另一实施例中,该装置响应于该请求设置短于该期满周期的第二期满周期。在其他实施例中,该方法包括该装置拦截由通过选择由浏览器应用提供的刷新按钮而产生的请求。在一些其他实施例中,该装置拦截刷新页面的请求,该请求通过用户选择浏览器应用的按钮来产生。
在又一实施例中,该装置拦截多个刷新页面的请求。在其他实施例中,响应于该多个请求,该装置确定减小被高速缓存对象的期满周期预定阈值。在一些其他实施例中,该装置在预定时间阈值之后拦截刷新页面的请求。在其他实施例中,该装置在将该页面转发到请求方之后超过预定时间拦截刷新页面的请求。在一些其他实施例中,该装置在接收刷新页面的先前请求之后超过预定时间拦截刷新页面的请求。
在另一实施例中,该装置设置长于该期满周期的第二期满周期。在一些实施例中,该装置是客户机、服务器或用于拦截并转发客户机和服务器之间的通信的设备。
另一方面,本发明涉及一种用于响应于刷新页面上对象的一个或多个请求而更新被高速缓存对象的期满周期的装置。在一个实施例中,该装置包括用于拦截刷新识别对象的页面的请求的装置,该对象存储在高速缓存中具有期满周期。该装置还包括用于响应于该请求为该被高速缓存对象确定第二期满周期的装置。该装置还包括用于将该第二期满周期建立为高速缓存中被高速缓存对象的期满周期的装置。
在另一实施例中,该装置响应于该请求设置短于该期满周期的该第二期满周期。在一些实施例中,该刷新页面的请求包括通过选择由浏览器应用提供的刷新按钮而产生的请求。在其他实施例中,该刷新页面的请求通过用户选择浏览器应用的按钮而产生。
在另一实施例中,该装置拦截多个刷新页面的请求。在一些实施例中,响应于该多个请求,该装置减小被高速缓存对象的期满周期预定阈值。在一些实施例中,该装置在预定时间阈值之后拦截刷新页面的请求。在其他实施例中,该刷新页面的请求在将该页面转发到请求方之后超过预定时间通过装置接收。在又一些实施例中,该刷新页面的请求在拦截刷新该页面的先前请求之后超过预定时间通过装置接收。
在又一实施例中,该装置包括用于设置长于该期满周期的第二期满周期的装置。在其他实施例中,该装置是客户机、服务器或用于拦截并发送客户机和服务器之间的通信的设备。
一方面,本发明涉及一种在具有用作请求页面的客户机和响应客户机请求的服务器之间代理的设备的网络环境中的方法,其中该方法利用识别为请求目的地的互联网协议地址解析由统一资源定位符识别的主机名地址。在一个实施例中,该方法包括通过设备,从客户机拦截请求分组,该请求分组通过应用协议层请求页面的统一资源定位符。该方法还包括通过该设备,从该请求分组识别该请求的目的地互联网协议地址。该设备将该目的地互联网协议地址与由该统一资源定位符识别的主机名相关联。该方法还包括通过该设备,在高速缓存中将识别互联协议地址的条目存储为主机名的地址。该方法包括通过该设备,拦截客户机的用于解析主机名的域名服务器(DNS)请求或对识别主机名的统一资源定位符的客户机第二请求之一。该方法还包括通过该设备,将高速缓存中的条目识别为主机名的解析地址。
在另一实施例中,该设备不查询用于解析主机名地址的DNS服务器。在其他实施例中,客户机在传输该请求分组之前解析由该客户机请求的统一资源定位符识别的主机名的互联网协议地址。
在又一实施例中,客户机通过该请求分组传输请求以便打开到由主机名的互联网协议地址识别的目的地的传输层连接。在一些实施例中,该方法通过该设备,从该请求分组的首部的字段提取该目的地的互联网协议地址。在其他实施例中,该方法通过该设备,从该请求分组的网络层或传输层识别该互联网协议地址。在又一些实施例中,该方法包括通过该设备用高速缓存中的条目对客户机的DNS请求作出响应。在一些其他实施例中,该方法包括通过该设备,利用高速缓存中提供主机名解析地址的条目识别第二请求的被高速缓存URL。
另一方面,本发明涉及一种在具有用作请求页面的客户机和响应客户机请求的服务器之间代理的设备的网络环境中,用于通过设备更新主机名的被高速缓存域名服务器(DNS)地址的方法。在一个实施例中,该方法包括通过设备拦截客户机的用于解析主机名的域名服务器(DNS)请求或客户机对识别主机名的统一资源定位符的请求。该方法还包括通过该设备,将主机名的被解析DNS地址存储在高速缓存中。该方法进一步包括通过该设备,拦截对页面的来自客户机的第二请求。该方法还包括通过该设备转发该页面到该客户机。该方法进一步包括通过该设备,确定所转发的页面的统一资源定位符识别主机名。该方法还包括通过该设备响应于该确定,传输由该设备产生的请求以便通过服务器解析主机名的地址。
在一个实施例中,该方法包括该设备将DNS解析请求传输到DNS服务器,并接收主机名的地址解析。在一些实施例中,该设备将主机名的地址解析存储在高速缓存中。在其他实施例中,该方法包括该设备在用户请求来自页面的统一资源定位符之前传输该请求。在一些其他实施例中,该方法包括该设备在客户机请求由该页面的统一资源定位符识别的主机名DNS解析之前传输该请求。在又一些实施例中,该设备确定用于主机名的地址位于高速缓存中。
在又一实施例中,该方法包括通过该设备,为主机名的被高速缓存DNS地址在高速缓存中建立期满周期。在一些实施例中,该方法包括该设备确定用于被高速缓存DNS地址的期满周期已经期满。在其他实施例中,该方法包括该设备确定用于被高速缓存DNS地址的期满周期的剩余时间在预定阈值内。
在另一实施例中,该设备产生作为推测性请求的请求。在其他实施例中,该设备以低于非推测性请求的传输优先级传输所产生的请求。
在又一实施例中,该方法包括通过该设备,响应于接收第二请求,将第二请求转发到由统一资源定位符识别的主机名的被高速缓存DNS地址并将第三请求传输到DNS服务器以便获取存储在高速缓存中的主机名的DNS地址的更新解析。在其他实施例中,该方法包括通过该设备将第二请求转发到主机名的被高速缓存DNS地址,将第三请求基本同时或彼此并行地转发到DNS服务器。
一方面,本发明涉及一种用作请求页面的客户机和响应客户机请求的服务器之间的代理的设备,该设备更新主机名的被高速缓存域名服务器(DNS)地址。在一个实施例中,该设备包括用于拦截客户机的用于解析主机名的域名服务(DNS)请求或对识别主机名的统一资源定位符的客户机请求之一的装置。在实施例中,该设备包括用于将主机名的解析DNS地址存储在高速缓存中的高速缓存管理器。该设备还包括用于拦截来自客户机的对页面的第二请求的装置。该设备进一步包括用于将该页面转发到该客户机的装置。该设备还包括用于确定所转发页面的统一资源定位符识别主机名的装置。该设备还包括用于响应于该确定而传输由该设备产生的请求以便通过服务器解析主机名地址的装置。
在另一实施例中,该设备将DNS解析请求传输到DNS服务器,并接受主机名的地址解析。在其他实施例中,高速缓存管理器将主机名的地址解析存储在高速缓存中。
在又一实施例中,该设备在用户请求来自页面的统一资源定位符之前传输该请求。在其他实施例中,该设备在客户机请求由页面的统一资源定位符识别的主机名DNS解析之前传输该请求。
在另一实施例中,高速缓存管理器确定用于主机名的地址位于高速缓存中。在一些其他实施例中,高速缓存管理器在高速缓存中为主机名的被高速缓存地址建立期满周期。在一些实施例中,高速缓存管理器确定用于被高速缓存地址的期满周期已经期满。在又一实施例中,高速缓存管理器确定用于被高速缓存地址的期满周期的剩余时间在预定阈值内。
在另一实施例中,该设备包括用于产生作为推测性请求的请求的装置。在一些实施例中,该设备以低于非推测性请求的传输优先级传输所产生的请求。在一些其他实施例中,该设备响应于接收第二请求将该第二请求发送到由统一资源定位符识别的主机名的被高速缓存地址,并将第三请求传输到DNS服务器以便获取存储在高速缓存中的主机名地址的更新解析。在又一些实施例中,该设备将第二请求转发到主机名的被高速缓存地址,并基本同时或彼此并行地将第三请求转发到DNS服务器。
本发明的各详细实施例将结合附图和以下说明进行描述。
附图说明
通过参考以下结合附图的描述,本发明的前述以及其他目的、方面、特征和优点将变得更明显且更易懂,其中:
图1A是用于客户机通过一个或更多网络优化设备访问服务器的网络环境实施例的框图;
图1B是用于客户机通过一个或更多与其他网络设备结合的网络优化设备访问服务器的网络环境另一实施例的框图;
图1C是用于客户通过单独配置的或与其他网络设备结合配置的单个网络优化设备访问服务器的网络环境另一实施例的框图;
图1D和1E是计算装置实施例的框图;
图2A是用于处理在客户机和服务器之间的通信的设备实施例的框图
图2B是配置了设备的网络优化部件(feature)的客户机和/或服务器实施例的框图;
图3是用于使用网络优化部件与服务器通信的客户机实施例的框图;
图4A是多层次(multiple-tier)高速缓存和索引系统实施例的框图,该系统用于在调整用于存储对象的磁盘存储器大小的同时保持用于对象索引的存储器的大小;
图4B是用于在调整高速缓存所使用的存储器大小的同时保持高速缓存允许存储到该高速缓存一部分的对象数量的方法实施例中的步骤流程图;
图4C是用于在调整高速缓存所使用的存储器大小的同时保持高速缓存允许存储到该高速缓存一部分的对象数量的方法实施例中的步骤流程图;
图4D是用于确定高速缓存层次以存储对象的方法实施例的步骤流程图;
图4E是用于将较大的对象存储到高速缓存的存储层并将较小的对象存储到该高速缓存所使用的存储器的剩余部分的方法实施例的步骤流程图;
图4F是用于响应存储器大小或高速缓存所用的存储器大小的改变而保持高速缓存使用的存储层大小的方法实施例的步骤流程图;
图5A是用于说明结合图5B所描述的安全性和可靠性技术的系统实例实施例的框图;
图5B具有用于为代理连接进行安全性和可靠性技术的方法的实施例的多个步骤流程图;
图6A是用于说明如结合图6B所述的被高速缓存对象并行再生效(parallel revalidation)技术的系统实例实施例的方框图;
图6B是进行被高速缓存对象并行再生效技术的方法实施例的步骤流程图;
图7A是用于说明如结合图7B所述的被高速缓存对象QoS预刷新(prefreshening)技术的系统实例实施例的方框图;
图7B是用于为预刷新被高速缓存对象而提供QoS推测性请求的方法实施例的步骤流程图;
图7C是用于说明如结合图7D所述的被高速缓存对象QoS预刷新技术的多设备系统实例实施例的框图;
图7D是用于为预刷新被高速缓存对象提供QoS推测性请求的方法实施例的步骤流程图;
图8A是如结合图8B所述的用于使用堆栈定向(stack-oriented)途径将对象预取到高速缓存的系统实例实施例的方框图;
图8B是用于向高速缓存提供对象的堆栈定向预取技术的方法实施例的步骤流程图;
图9A是如结合图9B所述的用于在用户请求对象之前预刷新高速缓存中对象的系统实例实施例的框图;
图9B是用于在用户请求对象之前预刷新高速缓存中对象的方法实施例的步骤流程图;
图10A是如结合图10B所述用于通过来自服务器的对象请求首部信息确定预取对象的系统实例实施例的框图;
图10B是用于响应来自服务器的对象获取标头信息而确定预取对象的方法实施例的步骤流程图;
图11A是如结合图11A所述用于使用作为压缩历史的不可高速缓存的内容的系统实例实施例的框图;
图11B是用于使用作为压缩历史的不可高速缓存内容的方法实施例的步骤流程图;
图11C是如结合图11B和11A所述用于预取作为压缩历史的不可高速缓存内容的系统实例实施例的框图;
图11D是用于预取作为压缩历史的不可高速缓存内容的方法实施例的步骤流程图;
图12A是如结合图12B所述用于使用作为压缩历史的非HTTP网络文件传输的系统实例实施例的框图;
图12B是用于使用作为压缩历史的非HTTP网络文件传输内容的方法实施例的步骤流程图;
图13A是如结合图13B所述用于根据装置的操作条件或连接状态确定是否预取/预刷新对象的系统实例实施例的方框图;
图13B是用于根据装置的操作条件或连接状态更新、预刷新或预取被高速缓存对象的方法实施例的步骤流程图;
图14A是用于响应对象刷新请求确定被高速缓存对象期满的系统实例实施例的框图;
图14B是用于响应对象刷新请求而确定被高速缓存对象期满的系统实例实施例的框图;
图14C是用于响应对象刷新请求而确定被高速缓存对象期满的系统实例实施例的框图;
图14D是用于响应对象刷新请求而确定被高速缓存对象期满的方法实施例的步骤流程图;
图15A是如结合图15C所述用于拦截高速缓存域名解析的系统实例实施例的框图;
图15B是如结合图15C所述用于拦截高速缓存域名解析的系统实例实施例的框图;以及
图15C是用于进行域名解析拦截、高速缓存并更新的技术的方法实施例的步骤流程图。
由以下所述的结合附图的详细描述,本发明的特征和优点将变得更加明显,其中全文中相同参考符号表示相应元件。在图中,相同的参考数字通常表示同样的、功能类似的和/或结构类似的元件。
具体实施方式
为了阅读以下本发明各实施例的描述,以下说明书的分段描述及其各项内容将是有帮助的:
-段A描述了用于实现本发明实施例的网络环境和计算环境;
-段B描述了用于加速计算环境到远程用户的传输的系统和设备架构的实施例;
-段C描述了用于加速客户机与服务器之间通信的客户机代理的实施例;
-段D描述了用于多层次高速缓存和索引系统的系统和方法的实施例;
-段E描述了用于在代理连接中提供安全性和可靠性技术的系统和方法的实施例;
-段F描述了使被高速缓存对象并行再生效的系统和方法的实施例;
-段G描述了提供推测性QoS以便预刷新/预取被高速缓存对象的系统和方法的实施例;
-段H描述了用于使用堆栈定向技术对高速缓存预取对象的系统和方法的实施例;
-段I描述用于预刷新被高速缓存对象的系统和方法的实施例;
-段J描述了用于根据由服务器请求的对象标头信息确定是否预取对象的系统和方法的实施例;
-段K描述了用于预取或使用作为压缩历史的动态生成页的不可高速缓存内容的系统或方法的实施例;
-段L描述了用于使用作为压缩历史的非HTTP网络文件传输用于基于HTTP业务量的系统和方法的实施例;
-段M描述了用于根据结合图13B所述的装置操作条件或连接状态确定是否预取/预刷新对象的系统和方法的实施例;
-段N描述了用于响应对象的刷新请求而确定被高速缓存对象期满的系统和方法的实施例;
-段O描述了用于被高速缓存的DNS信息的域名解析拦截高速缓存和预刷新/预取技术的系统和方法的实施例。
A.网络和计算环境
在讨论设备和/或客户机的系统和方法的实施例的细节之前,讨论可以部署这样的实施例的网络和计算环境是有帮助的。现在参考图1A,描述了网络环境的一个实施例。总的来说,网络环境包括经由一个或多个网络104、104′和104″与一个或多个服务器106a-106n(通常也被称为服务器106或远程机器106)通信的一个或多个客户机102a-102n(通常也被称为本地机器102或客户机102)。在一些实施例中,客户机102经由一个或者多个网络优化设备200、200′(总的称之为设备200)与服务器106通信。在一个实施例中,网络优化设备200被设计、配置或者调整来优化广域网(WAN)网络业务量。在一些实施例中,第一设备200和第二设备200′相结合或者协同运行来优化网络业务量。例如,第一设备200可以位于分支结构和WAN连接之间而第二设备200′可以位于WAN和公司局域网(LAN)之间。设备200和200′可以一起工作来优化分支机构中的客户机和公司LAN上的服务器之间的WAN相关的网络业务量。
虽然图1A示出客户机102和服务器106之间的网络104、网络104′和网络104″(总的称为网络104),但客户机102和服务器106可以在同一个网络104上。网络104、网络104′和网络104″可以是相同类型的网络或不同类型的网络。网络104可以是像公司内联网的局域网(LAN)、城域网(MAN)或者诸如因特网或万维网的广域网(WAN)。网络104、104′和104″可以是专用网或者公用网。在一个实施例中,网络104′或者网络104″可以是专用网而网络104可以是公用网。在一些实施例中,网络104可以是专用网而网络104′和/或网络104″可以是公用网。在另一个实施例中,网络104、网络104′和网络104′可以都是专用网。在一些实施例中,客户机102可以位于企业法人的分支机构,经由网络104上的WAN连接来与位于公司数据中心中的公司LAN上的服务器106进行通信。
网络104可以是任意类型和/或形式的网络,并且可以包括下列任意一种网络:点到点网络、广播网、广域网、局域网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络104的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104以及网络拓扑结构可以是能够支持此处描述的操作的本领域内普通技术人员所知的任一种这样的网络或网络拓扑结构。
如图1A所示,在网络104和104′之间示出第一网络优化设备200并且在网络104′和104″之间示出第二网络优化设备200′。在一些实施例中,设备200可以位于网络104上。例如,公司企业可以在所述分支机构处部署设备200。在其它实施例中,设备200可以位于网络104′上。在一些实施例中,设备200′可以位于网络104′或者网络104″上。例如设备200可以位于公司的数据中心。在一个实施例中,设备200和设备200′可以位于相同网络上。在另一个实施例中,设备200和设备200′可以位于不同网络上。
在一个实施例中,设备200是用于加速、优化或者以其他方式改善任意类型和形式的网络业务量的性能、操作或服务质量的装置。在一些实施例中,设备200是一个性能强化的代理。在其它实施例中,设备200是任意类型和形式的WAN优化或加速装置,有时也被称为WAN优化控制器。在一个实施例中,设备200是由位于Ft.Lauderdale Florida的Citrix Systems公司出品的被称为WANScaler的产品实施例中的任意一种。在其它实施例中,设备200包括由位于Seattle,Washington的F5 Networks公司出品的被称为BIG-IP链路控制器和WANjet的产品实施例中的任意一种。在另一个实施例中,设备200包括由位于Sunnyvale,California的Juniper NetWorks公司出品的WX和WXC WAN加速装置平台中的任意一种。在一些实施例中,设备200包括由San Francisco,California的Riverbed Technology公司出品的虹鳟(steelhead)系列WAN优化设备中的任意一种。在其它实施例中,设备205包括由位于Roseland,NewJersey的Expand Networks公司出品的WAN相关装置中的任意一种。在一个实施例中,设备200包括由位于Cupertino,California的Packeteer公司出品的任意一种WAN相关设备,例如由Packeteer提供的PacketShaper、iShared和SkyX产品实施例。在又一个实施例中,设备200包括由位于San Jose,California的Cisco Systems公司出品的任意WAN相关设备和/或软件,例如Cisco广域网应用服务软件和网络模块以及广域网引擎设备。
在一些实施例中,设备200提供用于分支机构或远程办公室的应用和数据加速业务。在一个实施例中,设备200包括广域文件服务(WAFS)的优化。在另一个实施例中,设备200加速文件的递送,例如经由公共因特网文件系统(CIFS)协议。在其它实施例中,设备200在存储器和/或存储设备中提供高速缓存来加速应用和数据的递送。在一个实施例中,设备205提供在任意级别的网络堆栈或在任意的协议或网络层的网络业务量的压缩。在另一个实施例中,设备200提供传输层协议优化、流量控制、性能增强或修改和/或管理,以加速WAN连接上的应用和数据的递送。例如,在一个实施例中,设备200提供传输控制协议(TCP)优化。在其它实施例中,设备200提供对于任意会话或应用层协议的优化、流量控制、性能增强或修改和/或管理。在下面B部分中讨论设备200的优化技术、操作和架构的进一步细节。
仍旧参考图1A,网络环境可以包括多个、逻辑分组的服务器106。在这些实施例中,服务器的逻辑组可以被称为服务器群组38。在这些实施例中的一些实施例中,服务器106可以是在地理上分散的。有时候,群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户机102来执行一个或多个应用。
在每个群组38中的服务器106可以是不同种类的。一个或多个服务器106可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,而一个或多个其它的服务器106可以根据另一种类型的操作系统平台(例如,Unix或Linux)来进行操作。每个群组38中的服务器106不需要与同一群组38中的另一个服务器106物理上接近。因此,逻辑上被分组为群组38的服务器106的组可以使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的服务器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接服务器106,则可以增加在群组38中的服务器106之间的数据传输速度。
服务器106可以是文件服务器、应用服务器、web服务器、代理服务器或网关服务器。在一些实施例中,服务器106可以有能力起到应用服务器或主应用服务器的作用。在一个实施例中,服务器106可以包括活动目录(Active Directory)。客户机102也可以被称为客户机节点或端点。在一些实施例中,客户机102有能力起到寻求访问服务器上的应用的客户机节点以及作为对于其它的客户机102a-102n提供对寄载的应用的访问的应用服务器的作用。
在一些实施例中,客户机102与服务器106进行通信。在一个实施例,客户机102直接与群组38中的服务器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻近应用以与群组38中的服务器106进行通信。在又一个实施例中,服务器106提供主节点的功能。在一些实施例中,客户机102通过网络104与群组38中的服务器106进行通信。例如,通过网络104,客户机102可以请求执行由群组38中的服务器106a-106n寄载的多个应用,并接收应用执行的结果输出用于显示。在一些实施例中,只有主节点提供所要求的识别并提供与寄载被请求的应用的服务器106′相关的地址信息的功能。
在一个实施例中,服务器106提供web服务器的功能。在另一个实施例中,服务器106a接收来自客户机102的请求,将请求转发到第二服务器106b,并使用来自于服务器106b的对请求的响应来对客户机102的请求进行响应。在又一个实施例中,服务器106获得客户机102可用的应用的列举以及与寄载由所述应用的列举所标识的应用的服务器106相关的地址信息。在又一个实施例中,服务器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户机102直接与服务器106进行通信以访问所标识的应用。在另一个实施例中,客户机102接收由执行服务器106上的标识的应用所生成的诸如显示数据的应用输出数据。
与其他设备一起布置
【0029】现在参考图1B,描述网络环境的另一个实施例,其中,网络优化设备200和诸如网关、防火墙或者加速设备的一个或者多个其他设备205、205′(总的称为设备205或者第二设备205)布置在一起。例如,在一个实施例中,设备205是防火墙或者安全设备,而设备205′是LAN加速装置。在一些实施例中,客户机102可以经由一个或者多个第一设备200和一个或者多个第二设备205与服务器106相通信。
一个或者多个设备200和205可以布置在客户机102和服务器106之间的网络或者网络通信路径中的任一点处。在一些实施例中,第二设备205可以布置在和第一设备200相同的网络104上。在其他实施例中,第二设备205可以布置在和第一设备200不同的网络104上。在又一个实施例中,第一设备200和第二设备205在例如网络104的相同网络上,而第一设备200′和第二设备205′可以位于诸如网络104″的相同网络上。
在一个实施例中,第二设备205包括任一类型和形式传输控制协议或者传输后终接装置,诸如网关或者防火墙装置。在一个实施例中,设备205通过建立与客户机的第一传输控制协议连接以及与第二设备或者服务器的第二传输控制连接,来终接传输控制协议。在另一个实施例中,设备205通过改变、管理或者控制客户机和服务器或者第二设备之间的传输控制协议连接的行为,来终接传输控制协议。例如,设备205可以以有效终接传输控制协议连接或者作用为或者模拟为终接连接的方式来改变、排列、转发或者传输网络分组。
在一些实施例中,第二设备205是性能强化代理。在一个实施例中,设备205提供虚拟专用网络(VPN)连接。在一些实施例中,设备205提供安全套接字层VPN(SSL VPN)连接。在其他实施例中,设备205提供基于IPsec(互联网协议安全)的VPN连接。在一些实施例中,设备205提供任意一个或者多个以下的功能性:压缩、加速、负载平衡、切换/路由、高速缓存和传输控制协议(TCP)加速。
在一个实施例中,设备205是位于Ft.Lauderdale Florida的CitrixSystems公司出品的被称为访问网关、应用防火墙、应用网关或者WANScaler的产品实施例。由此,在一些实施例中,设备205包括任一逻辑、功能、规则或者操作来执行诸如SSL VPN连接、SSL卸载、切换/负载平衡、域名服务解析、LAN加速和应用防火墙的服务或者功能性。
在一些实施例中,设备205提供在客户机102和服务器106之间的SSLVPN连接。例如,第一网络104上的客户机102请求建立到第二网络104′上的服务器106的连接。在一些实施例中,第二网络104″是不可从第一网络104路由的。在其它实施例中,客户机102在公用网104上,而服务器106在诸如公司网的专用网104′上。在一个实施例中,客户机代理拦截第一网络104上的客户机102的通信,加密所述通信,并经由第一传输层连接发送所述通信到设备205。设备205将第一网络104上的第一传输层连接关联到第二网络104上的到服务器106的第二传输层连接。设备205从客户机代理接收被拦截的通信,解密所述通信,并经由第二传输层连接发送所述通信到第二网络104上的服务器106。第二传输层连接可以是池化的传输层连接。在一个实施例中,设备205提供在两个网络104和104′之间用于客户机102的端到端安全传输层连接。
在一个实施例中,设备205在虚拟专用网104上寄载客户机102的内联网网际协议或内联网IP地址。客户机102具有诸如第一网络104上的网际协议(IP)地址和/或主机名的本地网络标识符。当经由设备205连接到第二网络104′时,设备205在第二网络104′上为客户机102建立、分配或者以其他方式提供内联网IP,其是诸如IP地址和/或主机名的网络标识符。使用客户机的建立的内联网IP,设备205在第二或专用网104′上监听并接收指向客户机102的任意通信。在一个实施例中,设备205在第二专用网104上充当或代表客户机102。
在一些实施例中,设备205具有提供用于操控诸如SSL或者TLS的任意安全相关的协议或者其中涉及的任意功能的处理的逻辑、商业规则、功能或者操作的加密引擎。例如,加密引擎加密和解密经由设备205通信的网络分组或者其中任意部分。加密引擎还可以代表客户机102a-102n、服务器106a-106n或者设备200、205设置或者建立SSL或者TLS连接。由此,加密引擎提供SSL处理的卸载和加速。在一个实施例中,加密引擎使用隧穿协议来在客户机102a-102n和服务器106a-106n之间提供虚拟专用网络。在一些实施例中,加密引擎使用加密处理器。在其他实施例中,加密引擎包括在加密处理器上运行的可执行指令。
在一些实施例中,设备205提供下列一个或多个加速技术来在客户机102和服务器106之间进行通信:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用;5)传输控制协议缓冲;以及6)高速缓存。在一个实施例中,设备200通过重复地打开与每个服务器106的一个或多个传输层连接并维持这些连接以允许客户机经由因特网的重复数据访问来减轻服务器106的通过反复打开和关闭到客户机102的传输层连接所造成的大量处理负载。这个技术在这里被称为“连接池(connection pooling)”。
在一些实施例中,为了经由池化的传输层连接来无缝拼接从客户机102到服务器106的通信,设备205通过在传输层协议级修改序号和确认号来转换或多路复用通信。这被称为“连接多路复用”。在一些实施例中,不需要应用层协议相互作用。例如,在入站分组(即,接收来自客户机102的分组)的情况中,所述分组的源网络地址被改变为设备205的输出端口的网络地址,而目的网络地址被改变为预期的服务器的网络地址。在出站分组(即,接收来自服务器106的一个分组)的情况中,源网络地址被从服务器106的网络地址改变为设备205的输出端口的网络地址,而目的地址被从设备205的网络地址改变为请求的客户机102的网络地址。所述分组的序号和确认号也被转换为到客户机102的设备205的传输层连接上由客户机102所期待的序号和确认。在一些实施例中,传输层协议的分组校验和被重新计算以计及这些转换。
在另一个实施例中,设备205为客户机102和服务器106之间的通信提供切换或负载平衡功能。在一些实施例中,设备205根据层4净荷或应用层请求数据来分配业务量并将客户机请求引向服务器106。在一个实施例中,虽然网络分组的网络层或层2标识了目的地服务器106,但设备205通过作为传输层分组的净荷而携带的应用信息和数据来确定服务器106以分配网络分组。在一个实施例中,设备205的健康监测程序监控服务器的健康以确定为其分配客户机请求的服务器106。在一些实施例中,如果设备205探测到服务器106不可用或具有超过预定阈值的负载,则设备205可以将客户机请求引向或分配到另一个服务器106。
在一些实施例中,设备205充当域名服务(DNS)解析器或者以其他方式提供来自于客户机102的DNS请求的解析。在一些实施例中,设备拦截由客户机102发送的DNS请求。在一个实施例中,设备205响应具有设备205的IP地址或由设备205寄载的IP地址的客户机DNS请求。在该实施例中,客户机102发送用于域名的网络通信到设备200。在另一个实施例中,设备200响应具有第二设备200′的IP地址或由第二设备200′寄载的IP地址的客户机的DNS请求。在一些实施例中,设备205响应具有由设备200确定的服务器106的IP地址的客户机的DNS请求。
在又一个实施例中,设备205为客户机102和服务器106之间的通信提供应用防火墙功能。在一个实施例中,策略引擎295′提供用于检测和阻塞非法请求的规则。在一些实施例中,应用防火墙防止拒绝服务(DoS)攻击。在其它实施例中,设备检查被拦截的请求内容以识别和阻塞基于应用程序的攻击。在一些实施例中,规则/策略引擎包括用于提供对多个种类和类型的基于web或因特网的脆弱点的保护的一个或多个应用防火墙或安全控制策略,例如下列的一个或多个:1)缓冲器溢出,2)CGI-BIN参数操纵,3)形式/隐藏字段操纵,4)强制浏览,5)cookie或会话中毒,6)破译的访问控制表(ACLs)或弱的口令,7)跨站点的脚本(XSS),8)命令注入,9)SQL注入,10)错误触发感测信息泄漏,11)加密技术的不安全使用,12)服务器误配置,13)后门和调试选择,14)web站点毁损,15)平台或操作系统的脆弱点,以及16)零天攻击。在一个实施例中,设备的应用防火墙以检查或分析网络通信是否有下列的一种或多种情况的形式来提供HTML格式字段的保护:1)返回所需的字段,2)不允许附加字段,3)只读和隐藏字段强制(enforcement),4)下拉列表和单选按钮字段的一致,以及5)格式字段最大长度强制。在一些实施例中,设备205的应用防火墙确保cookies不被修改。在其它实施例中,设备205通过强制实施合法URL来防止强制浏览。
还是在又一些实施例中,应用防火墙设备205保护在网络通信中包含的任意机密信息。设备205可以根据策略引擎的规则或策略来检查或分析任意网络通信以识别在网络分组的任意字段中的任意机密信息。在一些实施例中,应用防火墙在网络通信中识别信用卡号、口令、社会保险号、姓名、病人代码、联系信息和年龄的一次或多次出现。网络通信的编码部分可以包括这些出现或机密信息。在一个实施例中,根据这些出现,应用防火墙可以在网络通信上采取策略行动,例如阻止网络通信的传输。在另一个实施例中,应用防火墙可以重写、移除或者以其他方式掩盖这样识别出的出现或机密信息。
尽管总的称为网络优化或者第一设备200和第二设备205,但是第一设备200和第二设备205可以是同样类型和形式的设备。在一个实施例中,第二设备205可以执行和第一设备100相同的功能性或者部分,反之亦然。例如,第一设备200和第二设备205可以一起提供加速技术。在一个实施例中,第一设备可以执行LAN加速而第二设备执行WAN加速,或者反之亦然。在另一个例子中,第一设备200还可以是传输控制协议终接装置,如同第二设备205一样。进一步,尽管设备200和205视为网络上的单独设备,但是设备200和/或205可以是任一客户机102或者服务器106的一部分。
现在参考图1C,描述用于布置设备200的网络环境的其他实施例。在如图1C的上部所描述的另一个实施例中,设备200可以布置为网络104上的单个设备或者单个代理。例如,设备200可以被设计、构建或者调整来执行此处讨论的WAN优化技术,而不需要第二协作设备200′。在如图1C的下部所描述的其它实施例中,单个设备200可以和一个或者多个第二设备205一起布置。例如,诸如Citrix WANScaler设备的WAN加速第一设备200可以和诸如Citrix NatScaler设备的LAN加速或者应用防火墙第二设备205一起布置。
计算装置
【0045】客户机102、服务器106和设备200和205可以被部署和/或执行在任意类型和形式的计算装置上,例如可以在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或设备。图1C和1D描述了可用于实施客户机102、服务器106或设备200的实施例的计算装置100的框图。如图1C和1D所示,每个计算装置100包括中央处理单元101和主存储器单元122。如图1C所示,计算装置100可以包括可视显示装置124、键盘126和/或诸如鼠标的定点装置127。每个计算装置100也可以包括附加的可选元件,例如一个或多个输入/输出装置130a-130b(通常使用附图标记130来指示)以及与中央处理单元101通信的高速缓存140。
中央处理单元101是响应并处理取自主存储器单元122的指令的任意逻辑电路。在许多实施例中,中央处理单元由微处理器单元提供,例如:由位于Mountain View,California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的产品;由位于SantaClara,California的Transmeta公司出品的产品;由位于White Plains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale,California的Advanced Micro Devices公司出品的产品。计算装置100可以基于任意的这些处理器、或者可以如此处所描述地操作的任意其它处理器。
主存储器单元122可以是能够保存数据并允许微处理器101直接访问任意存储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC 100 SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或者可以如此处所描述地操作的任意其它可用的存储芯片。在图1C中所示的实施例中,处理器101通过系统总线150与主存储器122进行通信(在下面进行更详细的描述)。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1D中,主存储器122可以是DRDRAM。
图1D描述了在其中主处理器101通过有时被称为背端总线的次级总线来直接与高速缓存140通信的实施例。在其它实施例中,主处理器101使用系统总线150与高速缓存140进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地通过SRAM、BSRAM或EDRAM来提供。在图1C中所示的实施例中,处理器101通过本地系统总线150与多个I/O装置130进行通信。多种总线可以用来将中央处理单元101连接到任意一种I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器101可以使用高级图形端口(AGP)来与显示器124进行通信。图1D描述了在其中主处理器101通过HyperTransport、快速I/O或InfiniBand来直接与I/O装置130通信的计算机100的一个实施例。图1D还描述了混合本地总线和直接通信的一个实施例:处理器101使用本地互连总线与I/O装置130进行通信,同时直接与I/O装置130进行通信。
计算装置100可以支持任意适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装像任意客户机代理120或其部分的软件和程序的任意其它装置。计算装置100还可以包括存储装置128,例如一个或多个硬盘驱动器或独立盘的冗余阵列,用于保存操作系统及其它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的应用软件程序。可选地,任意一种安装装置116还可以被用作存储装置128。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如像
Figure G2008800158681D00431
的可引导CD,作为来自于knoppix.net可用作GNU/Linux分发的GNU/Linux的可引导CD。
进一步地,计算装置100可以包括通过多种连接接口到局域网(LAN)、广域网(WAN)或因特网的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25)、宽带连接(例如,ISDN、帧中继、ATM)、无线连接或上述任意或所有连接的一些组合。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、插件总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100接口到可以传达并执行此处所描述的操作的任意类型的网络的任意其它装置。各式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨迹垫、轨迹球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O装置130可以由如图1E所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例如鼠标或光笔的定点装置127的一个或多个I/O装置。进一步地,I/O装置还可以为计算装置100提供存储装置128和/或安装介质116。还是在其它实施例中,计算装置100可以提供USB连接以接收诸如由位于Los Alamitos,California的Twintech Industry公司出品的USB闪存驱动器系列装置这样的便携USB存储装置。
在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任意类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以接口、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以接口多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作系统的任意部分可以被配置用于使用多个显示器124a-124n。在其它实施例中,一个或多个显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任意类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配置为具有多个显示装置124a-124n的多个方法和实施例。
在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之间的桥170,所述外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
图1C和1D中描述类型的计算装置100典型地在控制任务的调度和对系统资源的访问的操作系统的控制下操作。计算装置100可以运行任意操作系统,例如任意一种版本的微软
Figure G2008800158681D00451
操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac
Figure G2008800158681D00452
任意的嵌入式操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置的任意操作系统、或者可以运行在计算装置上并执行此处所描述的操作的任意其它操作系统。典型的操作系统其中包括:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS 2003、WINDOWS XP和WINDOWS SISTA,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果计算机出品的MacOS和OS X;由位于Armonk,New York的国际商业机器公司出品的OS/2;以及由位于Salt Lake City,Utah的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统(诸如称为Solaris/Sparc,Solaris/x86,AIX IBM,HP UX,和SGI(Silicon Graphics)的Unix的这些版本),以及其它。
在其它实施例中,计算装置100可以具有符合所述装置的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算机100是由Palm公司出品的Treo180、270、1060、600或650智能电话。在该实施例中,Treo智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。在另一个实施例中,计算装置100可以是具有ARM(高级RISC机器)类型的处理器的WinCE或者PchetPC。在一个例子中,计算装置100包括Finland的Nokia出品的Series 80(Nokia 9500或者Nokia 9300)类型的智能电话,其可以运行United Kingdom,London的Symbian软件有限公司出品的Symbian OS或者EPOC移动操作系统。在另一个实施例中,计算装置100可以包括Illimois,Schaumburg的Motorola公司出品的FOMA M100品牌的智能电话,并且操作EPOC或者Symbian OS操作系统。在又一个实施例中,计算装置100包括North Carolina,Research Triangle Park的索尼爱立信通信(USA)公司出品的Sony Ericsson P800、P900或者P910 Alpha模型电话(model phone)。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话、智能电话、任意其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的其它形式的计算或电信装置。
B、系统和设备架构
【0055】现在参考图2A,描述了用于递送和/或操作客户机上的计算环境的设备200的系统环境和架构的实施例。在一些实施例中,服务器106包括用于将计算环境或应用和/或数据文件递送给一个或多个客户机102的应用递送系统290。简单概述,客户机102经由网络104和设备200与服务器106通信。例如,客户机102可以驻留在例如分支机构的公司的远程办公室,而服务器106可以驻留在公司的数据中心。客户机102包括客户机代理120和计算环境215。计算环境215可以执行或操作用来访问、处理或使用数据文件的应用。可以经由设备200和/或服务器106来递送计算环境215、应用和/或数据文件。
在一些实施例中,设备200加速将计算环境215或其任意部分递送给客户机102。在一个实施例中,设备200通过应用递送系统290来加速计算环境215的递送。例如,此处描述的实施例可以用来将可由应用处理的流应用和数据文件加速从中央的公司数据中心递送到远程用户的位置,例如公司的分支机构。在另一个实施例中,设备200加速在客户机102和服务器106之间的传输层业务量。在另一个实施例中,设备200控制、管理、或者调整传输层协议来加速递送计算环境。在一些实施例中,设备200使用高速缓存和/或压缩技术来加速递送计算环境。
在一些实施例中,应用递送管理系统290根据多个执行方法以及根据经由策略引擎295应用的任意验证和授权策略来提供将计算环境递送到远端或另外的用户的桌面的应用递送技术。使用这些技术,远程用户可以从任意网络连接装置100获取计算环境以及访问服务器存储的应用和数据文件。在一个实施例中,应用递送系统290可以驻留于服务器106或在服务器106上执行。在另一个实施例中,应用递送系统290可以驻留于多个服务器106a-106n上或在多个服务器106a-106n上执行。在一些实施例中,应用递送系统190可以在服务器群组38中执行。在一个实施例中,执行应用递送系统190的服务器106还可以存储或提供应用和数据文件。在另一个实施例中,第一组的一个或多个服务器106可以执行应用递送系统290,而不同的服务器106n可以存储或提供应用和数据文件。在一些实施例中,应用递送系统290、应用和数据文件中的每一个可以驻留或位于不同的服务器上。在又一个实施例中,应用递送系统290的任意部分可以驻留、执行或保存或被分配于设备200或多个设备。
客户机102可以包括用于执行使用或处理数据文件的应用的计算环境215。客户机102可以经由网络104、104′和设备200来从服务器106请求应用和数据文件。在一个实施例中,设备200可以将来自于客户机102的请求转发到服务器106。例如,客户机102可以不具有本地存储或可存取的应用和数据文件。响应于请求,应用递送系统290和/或服务器106可以递送应用和数据文件到客户机102。例如,在一个实施例中,服务器106可以以应用流的形式发送该应用,以在客户机102上的计算环境215中进行操作。
在一些实施例中,应用递送系统290包括Citrix Systems公司的例如MetaFrame或Citrix表示(Presentation)服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微软
Figure G2008800158681D00471
终端服务。在一个实施例中,应用递送系统290可以通过远程显示协议或以其它方式通过基于远程或基于服务器的计算来递送一个或多个应用到客户机102或用户。在另一个实施例中,应用递送系统290可以通过应用的流式传输来递送一个或多个应用到客户机或用户。
在一个实施例中,应用递送系统290包括用于控制和管理应用执行方法的访问、选择以及应用的递送的策略引擎295。在一些实施例中,策略引擎295确定用户或客户机102可以访问的一个或多个应用。在另一个实施例中,策略引擎295确定应用应该如何被递送给用户或客户机102,例如执行方法。在一些实施例中,应用递送系统290提供从中选择应用执行方法的多个递送技术,例如基于服务器的计算、本地流式传输或递送应用给客户机120以用于本地执行。
在一个实施例中,客户机102请求执行应用程序而包括服务器106的应用递送系统290选择执行应用程序的方法。在一些实施例中,服务器106从客户机102接收证书。在另一个实施例中,服务器106从客户机102接收可用应用的列举的请求。在一个实施例中,响应于所述请求或收到的证书,应用递送系统290列举客户机102可用的多个应用程序。应用递送系统290接收请求以执行所列举的应用。应用递送系统290选择预定数目的方法中的一个来执行列举的应用,例如响应于策略引擎的策略。应用递送系统290可以选择一个执行应用的方法,使得客户机102可以接收通过在服务器106上执行应用程序而生成的应用输出数据。应用递送系统290可以选择执行应用的方法,使得本地机器102可以在检索包括应用的多个应用文件之后本地执行所述应用程序。在又一个实施例中,应用递送系统290可以选择执行应用的方法以经由网络104将应用流式传输到客户机102。
客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在服务器106上执行的基于服务器或基于远程的应用。在一个实施例中,服务器106可以使用任意瘦-客户机或远程显示协议来显示输出到客户机102,所述远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任意类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与VoIP通信相关的任意类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输视频和/或音频的应用。
在一些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用的应用。在一个实施例中,服务器106或服务器群组38作为应用而执行Citrix Systems公司的例如MetaFrame或Citrix表示服务器TM的Citrix访问套件TM的任意部分和/或由微软公司出品的任意一种微软
Figure G2008800158681D00491
终端服务。在一个实施例中,应用是由位于Fort Lauderdale,Florida的Citrix Systems公司开发的ICA客户机。在其它实施例中,应用包括由位于Redmond,Washington的微软公司开发的远程桌面(RDP)客户机。此外,服务器106可以运行应用,例如,所述服务器106可以是提供例如由位于Redmond,Washington的微软公司出品的微软Exchange的电子邮件服务的应用服务器、web或网络服务器、或桌面共享服务器、或协作服务器。在一些实施例中,任意一种应用可以包括任意类型的寄载服务或产品,例如由Santa Barbara,California的Citrix Online部门提供的GoToMeetingTM、由位于Santa Clara,California的WebEx公司提供的WebExTM、或由位于Redmond,Washington的微软公司提供的微软Office Live Meeting。
示例设备架构
图2A还示出设备200的示例实施例。仅通过示例来提供图2A中的设备200的架构并且不意于以任一方式受限。设备200可以包括任一类型和形式的计算装置100,诸如结合上面图1D和1E所描述的任一元件或者部分。总的来说,设备200具有一个或者多个网络端口266A-266N和一个或者多个网络堆栈267A-267N用于经由网络104接收和/或传输通信。设备200还局域网络优化引擎250,用于优化、加速或者以其他方式改进通过设备200的任一网络业务量或者通信的性能、操作或者质量。
设备200包括操作系统或者受操作系统的控制。设备200的操作系统可以是任一类型和/或形式的Unix操作系统,但是本发明不受这样的限制。由此,设备200可以运行任意操作系统,诸如任意一种版本的微软
Figure G2008800158681D00492
操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的Mac
Figure G2008800158681D00493
任意的嵌入式操作系统、任意的网络操作系统、任意的实时操作系统、任意的开放源操作系统、任意的专用操作系统、用于移动计算装置或者网络装置的任意操作系统、或者可以运行在设备200上并执行此处所描述的操作的任意其它操作系统。
设备200的操作系统将可用的系统存储器分配、管理或者以其他方式分离成内核或者系统空间和用户或者应用空间。内核空间典型地被保留用于运行内核,所述内核包括任一设备驱动程序、内核扩展或其它内核相关软件。如本领域技术人员所知,内核是操作系统的核心,并提供对设备200的资源和硬件相关的元件的访问、控制和管理。根据设备200的实施例,内核空间还包括和网络优化引擎250或其部分一起工作的多个网络服务或进程。另外,内核的实施例将依赖于由装置200所安装、配置或者以其他方式使用的操作系统的实施例。与内核空间不同,用户空间是由用户模式应用或者以其他方式运行于用户模式的程序所使用的存储器区域或部分操作系统。用户模式应用不可以直接访问内核空间而使用服务调用以访问内核服务。操作系统使用用户或者应用空间用于执行或者运行应用和提供用户级程序、服务、过程和/或任务。
设备200具有一个或者多个网络端口266用于通过网络104传输和接收数据。网络端口266提供计算装置和网络104或者另一个装置100之间的物理和/或逻辑接口用于传输和接收网络通信。网络端口266的类型和形式依赖于网络的类型和形式以及用于连接到网络的介质的类型。进一步,提供用于网络端口266和网络堆栈267或者由其使用的任一软件可以运行在内核空间或者用户空间中。
在一个实施例中,设备200包括诸如基于TCP/IP的堆栈的一个网络堆栈267,用于在网络105上与客户机102和/或服务器106进行通信。在一个实施例中,网络堆栈267用于与诸如网络104的第一网络以及第二网络104′进行通信。在另一个实施例中,装置200可以包括两个或多个网络堆栈,例如第一网络堆栈267A和第二网络堆栈267N。第一网络堆栈267A可以用于和第一端口266A相结合在第一网络104上通信。第二网络堆栈267N可以用于和第二端口266N相结合在第二网络104′上通信。在一个实施例中,网络堆栈267包括一个或多个缓冲器用于对一个或多个网络分组排队以便被设备200发送。
网络堆栈267包括任意类型和形式的软件或硬件或其任意组合,用于提供到网络的连通性以及与网络的通信。在一个实施例中,网络堆栈267包括用于网络协议套件的软件实现。网络堆栈267可以包括一个或多个网络层,例如如本领域技术人员所认识和理解的开放系统互连(OSI)通信模型的任意网络层。因而,网络堆栈267可以包括用于下列OSI模型的任意一层的任意类型和形式的协议:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层以及7)应用层。在一个实施例中,网络堆栈267包括在网际协议(IP)的网络层协议上的传输控制协议(TCP),通常被称为TCP/IP。在一些实施例中,可以在以太网协议上携带TCP/IP协议,所述以太网协议可以包括诸如由IEEE 802.3所覆盖的那些协议的IEEE广域网(WAN)或局域网(LAN)协议的任意族。在一些实施例中,网络堆栈267包括诸如IEEE 802.11和/或移动网际协议的任意类型和形式的无线协议。
考虑到基于TCP/IP的网络,可以使用任意基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、公共因特网文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在另一个实施例中,网络堆栈267包括诸如修改的传输控制协议的任意类型和形式的传输控制协议,例如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。在其它实施例中,网络堆栈267可以使用诸如IP上UDP的任意类型和形式的用户数据报协议(UDP),例如用于音频通信或实时数据通信。
进一步,网络堆栈267可以包括诸如TCP驱动程序或网络层驱动程序的支持一个或多个层的一个或多个网络驱动程序。网络驱动程序可以被包括作为计算装置100的操作系统的一部分或作为计算装置100的任意网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈267的任意一种网络驱动程序可以被定制、修改或改变以提供支持此处描述的任意技术的网络堆栈267的定制或修改部分。
在一个实施例中,设备200使用单个网络堆栈267提供或者维持客户机102和服务器106之间的传输层连接。在一些实施例中,设备200通过改变、管理或者控制客户机和服务器之间的传输控制协议连接的行为来有效终接传输层连接。在这些实施例中,设备200可以使用单个网络堆栈267。在其他实施例中,设备200终接诸如客户机102的TCP连接的第一传输层连接,并且建立代表客户机102或者由客户机102使用的到服务器106的第二传输层连接,例如第二传输层连接在设备200和服务器106处终接。第一和第二传输层连接可以经由单个网络堆栈267建立。在其他实施例中,设备200使用多个网络堆栈,例如267A和267B。在这些实施例中,第一传输层连接可以在一个网络堆栈267A处建立或者终接,而第二传输层连接可以在第二网络堆栈267N处建立或者终接。例如,一个网络堆栈可以用于在第一网络上接收和发送网络分组,并且另一个网络堆栈用于在第二网络上接收和发送网络分组。
如图2A中所示,网络优化引擎250包括一个或者多个以下的元件、部件或者模块:网络分组处理引擎240、LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295′。网络优化引擎250或其一部分可以包括软件、硬件或者软件和硬件的任意组合。此外,网络优化引擎250所提供的或者使用的任一软件可以运行在内核空间或者用户空间。例如,在一个实施例中,网络优化引擎250可以运行在内核空间中。在另一个实施例中,网络优化引擎250可以运行在用户空间中。在又一个实施例中,网络优化引擎250的第一部分运行在内核空间中,而网络优化引擎250的第二部分运行在用户空间中。
网络分组处理引擎
通常也被称为分组处理引擎或分组引擎的网络分组引擎240,负责管理由设备200经由网络端口266和网络堆栈267接收和发送的分组的处理。网络分组引擎240可以操作在网络堆栈267的任一层。在一个实施例中,网络分组引擎240操作在网络堆栈267的层2或者层3。在一些实施例中,分组引擎240在在诸如TCP/IP实施例中的IP层的网络层处拦截或者以其他方式接收分组。在另一个实施例中,分组引擎240在网络堆栈267的层4处操作。例如,在一些实施例中,分组引擎240在传输层处拦截或者以其他方式接收分组,诸如在TCP/IP实施例中的TCP层处拦截分组。在其他实施例中,分组引擎240在层4之上的任一会话或者应用层处操作。例如,在一个实施例中,分组引擎240在传输层之上的协议层拦截或者以其他方式接收网络分组,诸如TCP实施例中的TCP分组的净荷。
分组引擎240可以包括用于在例如接收网络分组或发送网络分组的处理期间排队一个或多个网络分组的缓冲器。另外,分组引擎240与一个或多个网络堆栈267通信以经由网络端口266发送和接收网络分组。分组引擎240可以包括分组处理定时器。在一个实施例中,分组处理定时器提供一个或多个时间间隔以触发输入(即,接收)或输出(即,发送)的网络分组的处理。在一些实施例中,分组引擎240响应于定时器来处理网络分组。分组处理定时器提供任意类型和形式的信号给分组引擎240,以通知、触发或通信时间相关的事件、间隔或发生。在许多实施例中,分组处理定时器以例如像100毫秒、50毫秒、25毫秒、10毫秒、5毫秒或者1毫秒的这样的毫秒级来进行操作。
在操作期间,分组引擎240可以与诸如LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和/或策略引擎295′的网络优化引擎250的任一部分接口、集成或通信。因而,可以响应于分组处理定时器和/或分组引擎240来执行LAN/WAN探测器210、流控制器220、Qos引擎236、协议加速器234、压缩引擎238、高速缓存管理器232和策略引擎295′的任意逻辑、功能或操作。在一些实施例中,可以以例如小于或等于10毫秒的时间间隔的、通过分组处理定时器提供的时间间隔的粒度来执行加密引擎234、高速缓存管理器232、策略引擎236和多协议压缩逻辑238的任意逻辑、功能或操作。例如,在一个实施例中,高速缓存管理器232可以响应于集成的分组引擎240和/或分组处理定时器242来执行任意高速缓存的对象的终止。在另一个实施例中,可以将高速缓存的对象的满期或终止时间设置为与分组处理定时器的时间间隔相同的粒度级,例如每10毫秒。
高速缓存管理器
高速缓存管理器232可以包括软件、硬件或软件和硬件的任意组合,以将数据、信息和对象保存到存储器或者存储装置的高速缓存中,提供高速缓存访问,并且控制和管理高速缓存。由高速缓存管理器232处理和保存的数据、对象或内容可以包括诸如标记语言的或者通过任意协议通信的任意类型的数据。在一些实施例中,高速缓存管理器232复制存储在别处的原始数据或者以前计算、生成或发送的数据,其中原始数据也许需要相对于读取高速缓存存储器或者存储元件来说更长的访问时间以取出、计算或者以其他方式获取。一旦数据被保存在高速缓存中,未来的使用可以通过访问高速缓存的拷贝而不是重新取回或再计算原始数据来进行,从而减少访问时间。在一些实施例中,高速缓存可以包括设备200的存储器中的数据对象。在另一个实施例中,高速缓存可以包括诸如硬盘的一部分的设备200的任意类型和形式的存储元件。在一些实施例中,装置的处理单元可以提供由高速缓存管理器232使用的高速缓存存储器。在又一个进一步的实施例中,高速缓存管理器232可以使用存储器、存储装置或处理单元的任意部分和组合,以用于高速缓存数据、对象及其它内容。
进一步地,高速缓存管理器232包括任意逻辑、功能、规则或操作,以执行设备200的任意高速缓存技术。在一些实施例中,高速缓存管理器232可以作为应用、库、程序、服务、进程、线程或任务来操作。在一些实施例中,高速缓存管理器232可以包括任意类型的通用处理器(GPP)或者诸如现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)或专用集成电路(ASIC)的任意其它类型的集成电路。
策略引擎
策略引擎295′包括任意逻辑、功能或者操作,用于提供和应用一个或者多个策略或者规则到设备200的任一部分的功能、操作或者配置。策略引擎295′可以包括例如智能统计引擎或者其他可编程应用。在一个实施例中,策略引擎295提供配置机制来允许用户识别、指定、限定或者配置用于网络优化引擎250或者其任一部分的策略。例如,策略引擎295可以提供策略,用于高速缓存哪些数据、何时高速缓存数据、高速缓存数据用于谁、何时终止高速缓存中的对象或者刷新高速缓存。在其它实施例中,策略引擎236可以包括任意逻辑、规则、功能或操作,以便确定和提供由设备200高速缓存的对象、数据或内容的访问、控制和管理以及由设备200执行的安全、网络业务量、网络访问、压缩或任意其它功能或操作的访问、控制和管理之外。
在一些实施例中,策略引擎295′基于以下的任意一个或者多个来提供和应用一个或者多个策略:用户、客户机的标识、服务器的标识、连接的类型、连接的时间、网络的类型或者网络业务量的内容。在一个实施例中,策略引擎295′基于网络分组的任意协议层处的任一字段或者首部来提供和应用策略。在另一个实施例中,策略引擎295′基于网络分组的任一净荷来提供和应用策略。例如在一个实施例中,策略引擎295′基于将所运载的应用层协议的内容的特定部分识别为传输层分组的净荷来应用策略。在另一个实施例中,策略引擎295′基于客户机、服务器或者用户证书所识别的任一信息来应用策略。在又一个实施例中,策略引擎295′基于关于客户机所获取的任意属性或者特征来应用策略,诸如经由任一类型和形式的端点检测(参见示例以下讨论的客户机代理的收集代理)。
在一个实施例中,策略引擎295′和应用递送系统290的策略引擎295结合或者协同运行。在一些实施例中,策略引擎295′是应用递送系统290的策略引擎295的分布的部分。在另一个实施例中,应用递送系统290的策略引擎295被部署在或者执行在设备200上。在一些实施例中,策略引擎295和295′都在设备200上操作。在又一个实施例中,设备200的策略引擎295′或其一部分在服务器106上操作。
多协议和多层压缩引擎
压缩引擎238包括用于压缩诸如由装置200的网络堆栈267使用的任意一种协议的网络堆栈的一个或多个协议的网络分组的任意逻辑、商业规则、功能或操作。压缩引擎238也可以被称为多协议压缩引擎238,这是由于其可以被设计、构建或者能够压缩多个协议。在一个实施例中,压缩引擎238应用上下文不敏感的压缩,其是应用到数据而不需要知道数据类型的压缩。在另一个实施例中,压缩引擎238应用上下文敏感的压缩。在此实施例中,压缩引擎238利用知道数据类型来从一组合适算法中选择特定压缩算法。在一些实施例中,特定协议的知识被用来执行上下文敏感的压缩。在一个实施例中,设备200或者压缩引擎238可以使用端口号(例如,公知端口)以及来自自身连接的数据来确定要使用的适当的压缩算法。一些协议仅使用单个类型的数据,仅要求在连接建立时可以被选择的单个压缩算法。其他协议在不同时间包括不同类型的数据。例如,引入有其他协议数据的随意类型的POP、IMAP、SMTP和HTTP所有移动文件。
在一个实施例中,压缩引擎238使用德尔塔类型的压缩算法。在另一个实施例中,压缩引擎238使用第一位置压缩以及在高速缓存、存储器或者盘中保存的数据上搜索重复的模式。在一些实施例中,压缩引擎238使用无损压缩算法。在其他实施例中,压缩引擎使用有损压缩算法。在一些情况中,知道数据类型和有时来自用户的许可被要求使用有损压缩算法。在一些实施例中,压缩不限于协议的净荷。协议自身的控制字段可以被压缩。在一些实施例中,与对于净荷的使用不同,压缩引擎238对于控制字段使用不同的算法。
在一些实施例中,压缩引擎238在网络堆栈267的一个或者多个层处压缩。在一个实施例中,压缩引擎238在传输层协议处压缩。在另一个实施例中,压缩引擎238在应用层协议处压缩。在一些实施例中,压缩引擎238在层2-4协议处压缩。在其他实施例中,压缩引擎238在层5-7处压缩。在又一个实施例中,压缩引擎238压缩传输层协议和应用层协议。在一些实施例中,压缩引擎238压缩层2-4协议和层5-7协议。
在一些实施例中,压缩引擎238使用基于存储器压缩、基于高速缓存压缩或者基于盘压缩,或者其任一组合。由此,压缩引擎238可以被称为多层压缩引擎。在一个实施例中,压缩引擎238使用保存在诸如RAM的存储器中的数据的历史。在另一个实施例中,压缩引擎238使用保存在诸如处理器的L2高速缓存的高速缓存中的数据的历史。在其他实施例中,压缩引擎238使用保存到盘或者存储位置的数据的历史。在一些实施例中,压缩引擎238使用分层的基于高速缓存、基于存储器和基于盘的数据历史。压缩引擎238可以首先使用基于高速缓存的数据来确定一个或者多个数据匹配用于压缩,并且随后可以检查基于存储器的数据来确定一个或者多个数据匹配用于压缩。在另一个情况中,压缩引擎238在检查基于高速缓存和/或基于存储器的数据历史之后可以检查盘存储用于数据匹配来压缩。
在一个实施例中,多协议压缩引擎238双向地在客户机102a-102n和服务器106a-106n之间压缩任意的基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件)、文件传送协议(FTP)、超文本传送协议(HTTP)、公共因特网文件系统(CIFS)协议(文件传送)、独立计算架构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议和IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中提供诸如可扩展标记语言(XML)的任意标记语言的压缩。在一个实施例中,多协议压缩引擎238提供诸如为设备200设计用于设备200通信的的任意协议的任意高性能协议的压缩。在另一个实施例中,多协议压缩引擎238使用修改的传输控制协议来压缩任意通信的任意净荷或任意通信,所述修改的传输控制协议诸如事务TCP(T/TCP)、具有选择确认的TCP(TCP-SACK)、具有大窗口的TCP(TCP-LW)、诸如TCP-Vegas协议的拥塞预测协议以及TCP欺骗协议。
因而,多协议压缩引擎238为经由桌面客户机以及甚至移动客户机访问应用的用户加速性能,所述桌面客户机例如微软Outlook以及诸如由诸如Oracle、SAP和Siebel的通用的企业应用所启动的任意客户机的非web瘦客户机,所述移动客户机例如掌上电脑。在一些实施例中,通过与访问网络堆栈267的分组处理引擎240结合在一起,多协议压缩引擎238可以压缩由传输层协议所携带的任意一种协议,诸如任意应用层协议。
LAN/WAN检测器
LAN/WAN检测器238包括用于自动检测慢侧连接(例如诸如内联网的广域网(WAN)连接)和相关端口267以及快侧连接(例如局域网(LAN)连接)和相关端口267的任一逻辑、商业规则、功能或者操作。在一些实施例中,LAN/WAN检测器238监控设备200的网络端口267上的网络业务量来检测同步分组,有时称之为“标记”网络分组。该同步分组识别网络分组的类型或者速度。在一个实施例中,同步分组识别WAN速度或者WAN类型的连接。LAN/WAN检测器238还识别对标记的同步分组的确认分组的接收以及其在哪个端口上被接收。设备200随后配置其自身来操作标记的同步分组到达的所识别的端口,使得该端口上的速度被设置为与该端口连接的网络相关联的速度。其它端口随后被设置为和该端口连接的网络相关联的速度。
此处为了讨论方便,“慢”侧可以参考关于与诸如因特网的广域网(WAN)的连接,并且操作在WAN的网络速度。同样,“快”侧可以参考关于与局域网(LAN)的连接并且操作在LAN的网络速度。然而,注意到网络中“快”和“慢”侧可以根据每个连接而改变并且是针对网络连接的速度或网络拓扑的类型的相对术语。这样的配置可以用在复杂网络拓扑中,其中网络仅在和相邻网络比较时是“快”或“慢”的并且在某种意义上不是绝对的。
在一个实施例中,LAN/WAN检测器238可以被用来允许设备自动发现其连接的网络。在另一个实施例中,LAN/WAN检测器238可以被用来检测部署在网络104中的第二设备200’的存在或者缺失。例如,根据图1A的操作中的自动发现机制起到以下作用:设备200和200’被置于和联接客户机102和服务器106的连接相一致。设备200和200’处于连接两个LAN的诸如内联网的低速链路的端点。在一个示例实施例中,设备200和200’的每一个包括两个端口,一个连接到“较低”速链路并且另一个连接到诸如LAN的“较高”速链路。到达一个端口的任一分组被复制到其它端口。因此,设备200和200’每一个被配置为起到两个网络104之间的桥接器的作用。
当诸如客户机102的端点节点开启与诸如服务器106的另一个端点节点的新的TCP连接,则客户机102将具有同步(SYN)首部位集或者SYN分组的TCP分组发送到服务器106。在本例中,客户机102打开到服务器106的传输层连接。当SYN分组传递通过设备200时,设备200将特征TCP首部选项插入、附加或者以其他方式提供给分组,以告知其存在。如果分组传递通过第二设备,则在此示例设备200’中,第二设备记录SYN分组上的首部选项。服务器106响应于具有同步确认(SYN-ACK)分组的SYN分组。当SYN-ACK分组传递通过设备200’时,TCP首部选项被标记(例如附加、插入或者增加)到SYN-ACK分组来将设备200’的存在告知设备200。当设备200接收到此分组,则两个设备200和200’此时互相察觉并且该连接可以被适当加速。
进一步到LAN/WAN检测器238的操作,描述用于使用SYN分组来检测网络的“快”和“慢”侧的方法或者过程。在客户机102和服务器106之间的传输层连接建立期间,设备200经由LAN/WAN检测器238确定SYN分组是否用确认(ACK)来被标记。如果其被标记,则设备200将接收标记的SYN分组(SYN-ACK)的端口识别或者配置为“慢”侧。在一个实施例中,设备200可选地在将分组复制到其它端口之前将ACK标记从分组移除。如果LAN/WAN检测器238确定分组未被标记,则设备200将接收未标记的SYN分组的端口识别或者配置为“快”侧。设备200随后用ACK来标记SYN分组并且将分组复制到其它端口。
在其他实施例中,LAN/WAN检测器238使用SYN-ACK分组来检测网络的快和慢侧。设备200经由LAN/WAN检测器238确定是否用确认(ACK)标记了SYN-ACK分组。如果其被标记,则设备200将接收标记的SYN分组(SYN-ACK)的端口识别或者配置为“慢”侧。在一个实施例中,设备200可选地在将分组复制到其它端口之前将ACK标记从分组移除。如果LAN/WAN检测器238确定分组未被标记,则设备200将接收未标记的分组的端口识别或者配置为“快”侧。LAN/WAN检测器238确定SYN分组是否被标记。如果SYN分组未被标记,则设备200将分组复制到其它端口。如果SYN分组被标记,则设备在将SYN-ACK分组复制到其它端口之前标记该SYN-ACK端口。
设备200、200’可以增加、插入、修改、附加或者以其他方式提供TCP选项中的任意信息或者数据来提供关于网络连接、网络业务流或者设备200的配置或者操作的任意信息、数据或者特征。以此方式,设备200不仅将其存在通知给另一个设备200’或者标记较高或者较低的速度连接,设备200还经由TCP选项首部来提供关于设备或者连接的附加信息和数据。TCP选项首部信息可以用于或者被设备用于控制、管理、优化、加速或者改进通过设备200的网络业务流,或者以其他方式配置其自身或者网络端口的操作。
尽管总的结合检测网络连接的速度或者设备的存在来描述,但是LAN/WAN检测器238还可以被用于将设备200的任意类型的功能、逻辑或者操作应用到网络业务量的端口、连接或者流。更具体地,无论装置在何时在不同端口上执行不同的功能,都可以发生端口的自动分配,其中,在单元操作期间可以做出对任务的端口分配,和/或由设备200可以发现每一端口上的网络段的性质。
流控制
流控制器220包括用于优化、加速或者以其他方式改进网络分组的传输层通信的性能、操作或者服务质量或者传输层处的分组的递送的任意逻辑、商业规则、功能或者操作。流控制器有时也称之为流控制模块,其调节、管理和控制数据传输率。在一些实施例中,该流控制器220被部署在网络104中的带宽瓶颈处或与其连接。在一个实施例中,该流控制器220有效地调节、管理和控制带宽使用或者利用。在其他实施例中,流控制模块还可以部署在等待时间转变(低等待时间到高等待时间)的网络上和具有介质损失的链路(诸如无线或者卫星链路)上的点处。
在一些实施例中,流控制器220可以包括用于控制网络传输量的接收率的接收器侧流控制模块和用于控制网络分组的传输率的发送器侧流控制模块。在其他实施例中,第一流控制器220包括接收器侧流控制模块并且第二流控制器220’包括发送器侧流控制模块。在一些实施例中,第一流控制器220部署在第一设备200上并且第二流控制器220’部署在第二设备200’上。同样,在一些实施例中,第一设备200控制接收器侧上的数据流,并且第二设备200’控制来自发送器侧的数据流。在又一个实施例中,单个设备200包括用于传播通过设备200的网络通信的接收器侧和发送器侧的流控制。
在一个实施例中,流控制模块220被配置为允许瓶颈处的带宽更充分利用,并且在一些实施例中,不能过度利用。在一些实施例中,流控制模块220透明地缓冲(或者重新缓冲由例如发送器已经缓冲的数据)在具有相关联的流控制模块220的节点之间传递的网络会话。当会话传递通过两个或者多个流控制模块220,则一个或者多个流控制模块控制会话的速率。
在一个实施例中,流控制模块200被配置具有涉及瓶颈带宽的预定数据。在另一个实施例中,流控制模块220可以被配置为检测瓶颈带宽或者其关联数据。接收器侧流控制模块220可以控制数据传输率。接收器侧流控制模块220通过将传输率限制转发到发送器侧流控制模块220来控制发送器侧流控制模块220,例如数据传输率。在一个实施例中,接收器侧流控制模块220到在由例如服务器106的接收器发送到诸如客户机102的发送器的确认(ACK)分组(或者信号)上捎带(piggyback)这些传输率限制。接收器侧流控制模块220响应于发送器侧流控制模块220’发送的速率控制请求来做这一工作。来自发送器侧流控制模块220’的请求可以在发送器106发送的数据分组上被“捎带”。
在一些实施例中,流控制器220掌控、调整、模拟、改变、改进或者以其他方式调节传输层协议的行为来提供传输层的递送、数据率和/或带宽利用的改进的性能或者操作。流控制器220可以在传输层实现多个数据流控制技术,包括但不限于1)预确认,2)窗口虚拟化,3)重新拥塞技术,3)本地重传输技术,4)波前检测和消除二义性。5)传输控制协议选择性确认,6)事务边界检测技术和7)重新分包。
尽管发送器总的在此处描述为客户机102以及接收器为服务器106,但是发送器也可以是诸如网络104上服务器106或者任一计算装置100的任一端点。同样,接收器也可以是网络104上客户机102或者任意其它计算装置。
预确认
对于预确认流控制技术总的来说,在一些实施例中,流控制器220处理发送器的确认和重新传输,有效终接发送器与网络连接的下游部分的连接。参考图1B,描述用来实现该特征的将设备200布置到网络架构中的一个可能的部署。在此示例实施例中,发送计算机或者客户机102在网络104上例如经由转换器发送数据,其确定该数据发往VPN设备205。由于所选择的网络拓扑,发往VPN设备205的所有数据传播通过设备200,使得设备200可以将任一必要的算法应用到该数据。
进一步在该例中,客户机102发送由设备200接收的分组。当设备200接收从客户机102经由VPN设备205发送到接收者的分组时,设备200保留分组的备份并且将分组向下游转发到VPN设备205。设备200随后产生确认分组(ACK)并且将ACK分组发送回客户机102或者发送端点。该ACK即预确认使得发送器102相信分组已经被成功递送,释放发送器的资源用于随后的处理。在请求分组重新传输的事件中,设备200保留分组数据的备份,使得发送器102不必处理数据的重新传输。这个确认的早期产生可以称为“预确认”。
如果需要分组的重新传输,设备200将分组重新传输到发送器。设备200可以确定当发送器处于传统系统中时是否需要重新发送,例如,在预定时间之后对于该分组如果没有接收到确认信息则确定分组丢失。对此,设备200监控例如服务器106(或者任意其它下游网络实体)的接收端点产生的确认,使得其可以确认是否分组已经成功递送或者需要重新传输。如果设备200确定分组已经成功发送,则设备200能够自由丢弃所保存的分组数据。设备200还可以禁止将已经由发送端点接收的分组的确认进行转发。
在上述实施例中,设备200经由流控制器220通过预确认(也称之为”预告知”)的递送来控制发送器102,如同设备200是接收端点本身一样。由于设备200不是端点并且实际上不消耗数据,所以设备200包括用于对发送端点提供过流控制的机制。无需过流控制,因为设备200保存已经预确认到发送端点但还没有确认为由接收端点接收的分组,所以设备200能够用完存储器。在发送器102发送分组到设备200快于设备向下游转发分组的情况中,设备200中可用于保存未确认分组数据的存储器可以快速填充。用于过流控制的机制允许设备200控制来自发送器102的分组的传输以避免该问题。
在一个实施例中,设备200或者流控制器包括固有的“自同步”(self-clocking)过流控制机制。该自同步归因于这样的顺序:设备200可以被设计为将分组发送到下游并且将ACK发送到发送器102或者106。在一些实施例中,设备200并不预确认分组,直到其向下游发送分组为止。以此方式,发送器102以设备200能够发送分组而不是设备200能够从发送器100接收分组的速率接收ACK。这有助于调节来自发送器102的分组的传输。
窗口虚拟化
设备200可以实现的另一个过流控制机制是使用TCP窗大小参数,其告知发送器接收器允许发送器填满多少缓冲器。预确认中的非零窗大小(例如至少一个最大段大小(MSS)的大小)允许发送端点继续将数据递送到设备,而零窗大小禁止进一步的数据传输。相应地,设备200可以例如当设备200的缓冲器变满时通过适当地设置每一预确认中的TCP窗大小来调节来自发送器的分组的流量。
另一项用来降低该附加开销的技术是应用滞后作用(hysteresis)。当设备200将数据递送到较慢侧时,设备200中的过流控制机制可以在发送非零窗公布到发送器之前要求可用的最小数量的空间。在一个实施例中,设备200在发送非零窗分组之前等待直到存在最小的预定数量的分组(诸如四个分组)的可用空间,,非零窗分组诸如是指示四个分组的窗大小的分组。对于四个数据分组的每个组由于仅两个ACK分组被发送,而不是对于四个数据分组要发送八个ACK分组,这可以将开销大概降低到原来的四分之一。
设备200或者流控制器220可以用于过流控制的另一个技术是TCP延迟ACK机制,其跳过ACK来降低网络业务量。TCP延迟ACK自动延迟ACK的发送,直到接收到两个分组或者直到发生固定的超时为止。该机制单独导致开销减半,此外,通过增加分组的数量高于两个,实现附加的开销降低。但是仅延迟ACK本身不足以控制过流,并且设备200还可以使用ACK上公布的窗机制来控制发送器。当这样操作时,在一个实施例中,设备200通过延迟ACK很长时间来避免触发发送器的超时机制。
在一个实施例中,流控制220不对一组分组的最后一个分组进行预确认。通过不对最后一个分组或者该组的分组的至少一个预确认,设备避免对一组分组的错误确认。例如,如果设备将发送最后一个分组的预确认并且该分组随后丢失,则发送器在分组没有被递送时已经被欺骗认为其被递送。考虑到分组已经递送,则发送器丢弃该数据。如果设备还损失该分组,则不能重新传输该分组到接收者。通过不对一组分组的最后一个分组预确认,则发送器直到该分组被递送时才将其丢弃。
在另一个实施例中,流控制器220可以使用窗虚拟化技术来控制流速或者网络连接的带宽利用。虽然根据检查诸如RFC 1323的传统文献其可能不是直接明显的,但是存在用于诸如TCP的传输层协议的发送窗。发送窗由于消耗缓冲器空间(尽管在发送器上),所以和接收窗相同。发送器的发送窗包括接收器还没有确认的应用发送的所有数据。在要求重传输的情况中该数据必须保留在存储器中。由于存储器是共享资源,所以一些TCP堆栈实现限制了该数据的大小。当发送窗满时,应用程序尝试发送更多的数据导致阻断应用程序,直到空间可用为止。随后的确认接收将释放发送窗存储器并且不阻断应用程序。该窗大小公知为一些TCP实现中的套接字缓冲器大小。
在一个实施例中,流控制模块220被配置为提供对增加的窗(或者缓冲器)大小的访问。该配置还可以称为窗虚拟化。在包含作为传输层协议的TCP的实施例中,TCP首部可以包括对应窗范围的位字符串。在一个实施例中,“窗”可以在发送、接收或者二者的上下文中提及。
窗虚拟化的一个实施例是将预确认设备200插入到TCP会话中。参考图1A或1B的任意一个环境,建立例如客户机102(为讨论方便,现在称为源节点102)的源节点和例如服务器106(为讨论方便,现在称之为目标节点106)的目标节点之间数据通信会话的初始化。对于TCP通信,源节点102最初将同步信号(“SYN”)通过其局域网104传输到第一流控制模块220。第一流控制模块220将配置标识符插入到TCP首部选项区域中。该配置标识符将数据路径中的该点识别为流控制模块。
设备200经由流控制模块220提供窗(或者缓冲器)来允许会话内的增加的数据缓冲能力,尽管具有例如16k字节的小缓冲器大小的端节点。然而,RFC 1323要求窗缩放大于64k字节的任何缓冲器大小,其必须在会话初始化(SYN、SYN-ACK信号)时设置。此外,窗的缩放对应于数据路径中的最小公分母(common denominator),经常是具有小的缓冲器大小的端节点。该窗比例(window scale)通常是0或者1的比例,其对应于直到64k或者128k字节的缓冲器大小。注意到,由于窗大小被限定为随窗比例改变的每一分组中的窗字段,则窗比例建立用于该缓冲期的上限,但并不保证该缓冲器实际上就那么大。每个分组指示窗字段中接收器处当前可用的缓冲器空间。
在使用窗的虚拟技术缩放的实施例中,在当第一流控制模块220从源节点102接收SYN信号(或者分组)的连接建立(即,会话初始化)期间,流控制模块220将源节点102(其是之前的节点)的窗比例或者如果之前的节点的比例丢失则为窗比例保存0值。第一流控制模块220还在SYN-FCM信号中修改比例,例如将比例从0或者1增加到4。当第二流控制模块220接收SYN信号时,其将来自第一流控制信号的增加的比例保存并且将SYN信号中的比例重置为源节点103的比例值以用于传输到目标节点106。当第二流控制器220接收到来自目标节点106的SYN-ACK信号时,其将来自目标节点106比例(例如,0或者1)的比例保存并且将其修改为与SYN-ACK-FCM信号一起发送的增加的比例。第一流控制节点220接收并且记录所接收的窗比例并且将发送返回源节点102的窗比例修订为下降到例如0或者1的初始比例。基于上面连接建立期间的窗变化会话,会话的例如TCP分组的每一个随后的分组中的窗字段必须根据窗变化转换而改变。
如上所述,窗比例表示出大于64k的缓冲器大小,并且可以不需要窗虚拟化。因此,窗比例的变化可以用于表示每一个流控制模块220中的增加的缓冲器容量。该缓冲器容量的增加可以被称为窗(或者缓冲器)虚拟化。该缓冲器大小的增加允许更大的分组从各自的端节点102和106进出。注意到,TCP中的缓冲器大小典型地以字节表示,但是为了讨论方便由于“分组”和虚拟化相关,在此处描述中可以使用“分组”。
通过示例,描述流控制器220执行的窗(或者缓冲器)虚拟化。在此例中,源节点102和目标节点106配置为与具有受限的16k字节的缓冲器容量的传统端节点相同,其大约等于10个数据分组。典型地,端节点102、106在下一组分组能够传输之前必须等到该分组被传输并且收到确认。在一个实施例中,使用流控制模块220中的增加的缓冲器容量,当源节点103发送其数据分组时,第一流控制模块220接收该分组,将该分组保存在其例如512个分组容量的较大容量的缓冲器中,并且立即发送指示分组接收(“REC-ACK”)的确认信号回到源节点102。源节点102可以随后“清除”其当前缓冲器,将10个新的数据分组载入缓冲器,并且将这些传输到第一流控制模块220上。在此,第一流控制模块220发送REC-ACK信号回到源节点,并且源节点102清除其缓冲器并且对其载入10个更新的分组用于传输。
当第一流控制模块220接收到来自源节点的数据分组时,其相应地将该数据分组载入到缓冲器中。当其准备好时,第一流控制模块220可以开始将数据分组传送到第二流控制模块230,其还具有增加的缓冲器大小例如来接收512个分组。第二流控制模块220’接收数据分组并且开始每次传输10个分组到目标节点106。在第二流控制节点220处接收的来自目标节点106的每一个REC-ACK导致10个更多分组传输到目标节点106,直到所有的数据分组被传送。因此,本发明能够通过利用装置之间的流控制模块220、220’的较大的缓冲器来增加源节点(发送器)102和目标节点(接收器)106之间的传输量。
注意到通过之前描述的数据的“预确认”传输,发送器(或者源节点102)被允许传输超过不需要预确认的可能的更多的数据,因此造成更大的窗大小。例如,在一个实施例中,该技术有效地用在流控制模块220、220’处于缺乏大窗的节点(例如,源节点102或者目标节点106)附近的时候。
重新拥塞
流控制器220的另一个技术或者算法称之为重新拥塞。标准的TCP拥塞避免算法在面对特定网络条件时公知地表现差,包括:大的RTT(往返时间)、高分组损失率以及其它。当设备200检测到诸如长的往返时间或者高的分组损失的拥塞条件时,设备200插入、代入更好地适合特定网络条件的替代的拥塞避免算法。在一个实施例中,该重新拥塞算法使用分组来有效终接发送器和接收器之间的连接。设备200随后使用不同的拥塞避免算法从自身重新发送分组到接收器。重新拥塞算法可以依赖于TCP连接的特性。设备200监控每一个TCP连接,在特征在于关于不同的维度,选择适合用于当前特征的重新拥塞算法。
在一个实施例中,当检测到通过往返时间(RTT)限制的TCP连接时,作为多个TCP连接运行的重新拥塞算法被应用。每个TCP连接操作在其自身性能限度内,但是集合的带宽实现了更高的性能水平。该机制中的一个参数是所应用的并行连接的数量(N)。N和连接束的值过大实现超过其合理共享的带宽。N和连接束的值过小实现低于其合理共享的带宽。建立“N”的一个方法依赖于监控分组损失率、RTT和实际连接的分组大小的设备200。这些数字插入TCP响应曲线方程来提供本配置中单个TCP连接的性能的上限。如果连接束中每个连接正获得与计算到上限的基本相同的性能,则应用附加的并行连接。如果当前束正获得低于上限的性能,则降低并行连接的数量。以此方式,由于单独的连接束包含不超过其所需的并行,则维持系统的总的共享,来消除协议自身强加的限制。进一步,每个单独的连接保留TCP兼容性。
建立“N”的另一个方法是使用诸如TCP“Vegas”算法或者TCP“稳定Vegas”算法的并行流控制算法。在此方法中,和连接束中的连接相关的网络信息(例如,RTT、损失率、平均分组大小等等)被集合并且应用到替代流控制算法。该算法的结果相应被分布到控制他们数量(即,N)的束的连接之间。可选地,束中的每个连接仍旧使用标准TCP拥塞避免算法。
在另一个实施例中,并行束中的单独连接被虚拟化,即实际上不建立单独的TCP连接。事实上拥塞避免算法仍被修改为好像存在N个并行连接来运行。该方法的优点呈现为如同单个连接一样传输网络节点。因此,通过重新拥塞算法而不会影响这些节点的QOS、安全性和其他监控方法。在又一个实施例中,并行束中的单独连接是真实存在的,即独立的。TCP连接被建立用于束中的并行连接的每一个。不必修改用于每一个TCP连接的拥塞避免算法。
重新传输
在一些实施例中,流控制器220可以应用本地重传输技术。用于实现预确认的一个原因是准备发送到高损链路(例如无线)。在这些实施例中,预确认设备200或者流控制模块220最有益地位于无线链路“之前”。这允许要进行的重传输更接近于高损链路,将重传输负荷从网络的剩余部分移除。设备200可以提供本地重传输,在此情况中,由于链路失败而丢失的分组由设备200直接重传输。由于这消除了诸如服务器106的端节点上的重传输负担和任一网络104的基础结构,所以这是有益的。利用设备200提供本地重传输,丢失的分组可以被重传输通过高损链路而不需要必须由端节点重传输并且来自端节点的数据传输率对应下降。
用于实现预确认的另一个原因是避免接收超时(RTO)惩罚。在标准TCP中,存在多种情况导致RTO,即使是成功接收传输中的较大百分比的分组。使用标准TCP算法,RTT窗中丢失多于一个分组有可能会导致超时。此外,如果重传输分组丢失,则大部分TCP连接经历超时。在具有高带宽延迟产品的网络中,甚至相对小的分组损失率也会导致频繁的重传输超时(RTO)。在一个实施例中,设备200使用重传输和超时算法来避免早期的RTO。设备200或者流控制器220基于每一分组来维持重传输的计数。每当重传输分组时,计数加一并且设备200继续传输分组。在一些实施例中,仅有当一个分组已经被重传输预定次数后后才被宣告为RTO。
波前检测和消除二义性
在一些实施例中,设备200或者流控制器220在管理和控制网络业务量的流时使用波前检测和消除二义性技术。在此技术中,流控制器220使用传输标识符或者号码来确定是否需要重传输特定数据分组。通过示例,发送器在网络上传输数据分组,其中所传输的数据分组的每一个实例和传输号码相关联。可以理解,由于序列号索引分组中的数据而传输号码索引该数据的传输的实例,分组的传输号码与分组的序列号不相同。传输号码可以是对于该目的可用的任意信息,包括和分组相关联的时间戳或者简单地增加的号码(类似于序列号或者分组号)。由于数据段可以被重传输,则不同的传输号码可以和特定序列号相关联。
由于发送器传输数据分组,所以发送器保持数据分组传输的所确认的实例的数据结构。数据分组传输的每个实例由其序列号和传输号码索引。通过保持对于每个分组的传输号码,发送器保留数据分组的传输的顺序。当发送器接收到ACK或者SACk时,发送器确定和所指示的接收器(在所接收的确认中)已经接收的分组相关联的最高传输号码。具有最低传输号码的任一未完成的未确认分组被假设丢失。
在一些实施例中,当到达分组已经被重传输时,发送器呈现出不明确的状态:标准的ACK/SACK没有包含足够的信息来允许发送器确定到达分组的传输已经触发该确认。从而接收到不明确确认之后,发送器将确认消除二义性来将其和传输号码相关联。在不同的实施例中,多个技术的其中之一或者组合可以被用来解决该不确定性。
在一个实施例中,发送器包括具有所传输的数据分组的标识符,并且接收器返回该标识符或者其中具有确认的函数。标识符可以是时间戳(例如在RFC 1323中描述的TCP时间戳)、序列号、可以被用来在分组传输的两个或者多个实例之间解析的任一其他信息。在TCP时间戳选项被用来消除确认的二义性的实施例中,每一分组使用高达32位唯一的信息来标记。接收到数据分组时,接收器将此唯一信息回送到具有该确认的发送器。发送器确保最初发送的分组和其重传输的一个或者多个版本包含对于时间戳选项的不同值,允许明确地消除ACK不确定性。发送器可以将该唯一信息保存在例如用来保存所发送数据分组的状态的数据结构中。由于该技术与工业标准相兼容并且因此不会遇到或者遇到很少互操作性的问题,所以该技术是有益的。然而,该技术在一些实现中可以要求十个字节的TCP首部空间,降低了网络上的有效吞吐率并且减少了可用于其它TCP选项的空间。
在另一个实施例中,分组中的另一个字段,诸如IP ID字段,被用来以与上述TCP时间戳选项类似的方式来消除二义性。发送器安排该分组的最初的和重传输形式的的ID字段值,以使在IP首部中具有不同的ID字段。在接收器或者其中代理装置接收到数据分组时,接收器将ACK分组的ID字段设置为触发ACK的分组的ID字段的函数。由于该方法不需要附加的数据发送,保持网络和TCP首部空间的有效性,所以该方法是有益的。所选择的功能应该提供消除二义性的高度可能性。在优选实施例中,发送器选择具有最高有效位设置为0的IP ID值。当接收器响应时,IP ID值被设置为具有最高有效位设为1的同样的IP ID值。
在另一个实施例中,和非模糊性确认相关联的传输号码被用来消除不确定确认的二义性。该技术基于的原理是由于该两个分组在时间上更接近地传输,则对于两个分组的确认将倾向于时间上更接近地接收。由于对于这样的分组所接收的确认不能轻易地与传输号码相关联,所以没有重传输的分组不会导致不确定性。因此,对于在时间上接近于已知确认的多接收的不确定确认,比较这些已知的传输号码和可能的传输号码。发送器将不确定确认的传输号码和最近已知的所接收的传输号码相比较,选择对于已知的所接收的传输号码最接近的一个。例如,如果接收到数据分组1的确认并且最后所接收的确认是用于数据分组5,发送器通过假设数据分组1的第三实例所导致的确认来解析该不确定性。
选择性确认
设备200或者流控制器220的另一个技术是实现传输控制协议选择性确认或者TCP SACK的实施例来确定哪些分组已经接收到或者没有接收到。该技术允许发送器明确确定已经由接收器接收的一分组列表以及没有接收到的一精确分组列表。可以通过修改发送器和/或接收器或者通过将发送器和接收器侧流控制模块220插入到发送器和接收器之间的网络路径中来实现该功能。参考图1A或者图1B,例如客户机102的发送器被配置为通过网络104将数据分组传输到例如服务器106的接收器。作为响应,接收器将称之为SACK分组的TCP选择性确认选项返回给发送器。在一个实施例中,尽管此处为了简便仅讨论一个方向的通信,但是该通信是双向的。接收器保持一个列表或者其它适合的数据结构,包含用于接收器已经实际接收到的数据分组的序列号的一组范围。在一些实施例中,该列表根据序列号以升序或者降序排列。接收器还保持放弃(left-off)的指针,其包括对列表的引用并且指示从之前产生的SACK分组的放弃点。
当接收到数据分组时,接收器产生SACK分组并将其传输回到发送器。在一些实施例中,SACK分组包括多个字段,每个字段可以保持序列号的范围来指示一组已接收的数据分组。接收器使用包括触发SACK分组的登陆(landing)分组的序列号的范围来填充SACK分组的该第一字段。剩余可用的SACK字段使用来自所接收分组的列表的序列号的范围填充。由于列表中的范围多于可以被载入SACK分组的,则接收器使用放弃指针来确定哪个范围被载入SACK分组。接收器从分类的列表连续插入SACK范围,从指针索引的范围开始并且在列表持续向下,直到消耗完SACK分组的TCP首部中的可用SACK范围空间。如果到达末端,则接收器环绕到列表的开始。在一些实施例中,两个或者三个附加的SACK范围可以被增加到SACK范围信息。
一旦接收器产生SACK分组,则接收器将确认发送回发送器。接收器随后在列表中将放弃指针前进一个或者多个SACK范围项。例如,如果接收器插入四个SACK范围,则放弃指针可以在列表中被推进两个SACK范围。当所推进的放弃指针达到列表的末端,则指针被重置为列表的开始,有效地围绕已知所接收范围的列表。将该列表围绕使得系统可以执行得好,甚至在SACK分组大的损失的情况下,这是由于一旦列表被围绕,则由于丢失的SACK分组导致的未被通信的SACK信息最终被通信。
因此可以理解,SACK分组可以通信关于接收器的情况的多个细节。第一,SACK分组指示在SACK分组产生时接收器已经接收该SACK信息的第一字段中的数据分组。其次,SACK信息的第二和随后的字段指示接收器已经接收这些范围中的数据分组。SACK信息还暗示接收器在SACK分组的产生时没有接收落入SACK信息的第二和随后的字段之间的任意一个数据分组。本质上,SACk信息中的第二和随后的范围之间的范围是所接收数据中的“孔”,其中已知的未被递送的数据。从而,使用该方法,当SACK分组具有足够空间来包括多于两个的SACK范围,接收器可以向发送器指示还没有由接收器接收的数据分组的范围。
在另一个实施例中,发送器使用之上描述的SACK分组结合上述重传输技术来假设数据分组已经被递送到接收器。例如,当重传输算法(使用传输号码)宣告分组丢失,则发送器认为该分组仅是条件性丢失,有可能识别该分组接收的SACK分组丢失,而不是数据分组本身丢失。发送器因此将该分组增加到潜在丢失的分组的列表,称之为假定丢失的列表。每当SACK分组到达,来SACK分组的数据的已知丢失范围和假定丢失列表中的分组相比较。包括已知丢失的数据的分组被宣告实际丢失并且被随后重传输。以此方式,组合这两个方案来给予发送器关于分组已经丢失并且需要重传输的更好的信息。
事务边界检测
在一些实施例中,设备200或者流控制器220应用称之为事务边界检测的技术。在一个实施例中,该技术适合于乒乓(ping-pong)表现的连接。在TCP层,乒乓行为是当一个通信器例如发送器发送数据并且随后等待来自另一个通信器例如接收器的响应。乒乓行为的例子包括远程程序调用、HTTP和其他。以上描述的算法使用重传输超时来恢复和事务相关的最后的分组的丢失。由于在一些实施例中TCP RTO机制极端粗略,例如在所有情况中要求最小一秒的值,差的应用行为在这些情况中可以看到。
在一个实施例中,数据的发送器或者耦合到发送器的流控制模块220检测所发送数据中的事务边界。在检测到事务边界时,发送器或者流控制模块220发送附加的分组,其接收产生来自于接收器的附加的ACK或者SACK响应。附加分组的插入优选地限制到改进的应用响应时间和网络能力利用之间的平衡。所插入的附加分组的数量可以根据和该连接相关的当前损失率来选择,对于越高损失率的连接选择更多的分组。
检测事务边界的一个方法是基于时间的。如果发送器已经发送数据并且停止,则在一段时间之后发送器或者流控制模块200宣告事务边界。这可以和其他技术相组合。例如,通过发送器在TCP首部中设置PSH(TCP进栈)位可以指示事务边界。随之,将基于时间的方法和这些附加的试探方法相组合可以提供对于事务边界的更精确的检测。在另一个技术中,如果发送器或者流控制模块220理解应用协议,其可以解析协议数据流并且直接确定事务边界。在一些实施例中,可以独立于任一基于时间的机制使用此最后的行为。
响应于检测事务边界,发送器或者流控制模块220将附加的数据分组传输到接收器来从其引发确认。从而附加数据分组应该使得接收器将响应于接收数据分组来至少产生ACK或者SACK。在一个实施例中,简单地重传输事务的最后一个或者多个分组。相比于仅发送哑元数据分组,如果最后一个或者多个分组已经丢失,这就具有重传输所需数据的增加的益处。在另一个实施例中,发送最后一个或者多个分组的片段,允许发送器来消除来自于他们最初分组的这些分组到来的二义性。允许接收器来避免错误的搞乱任一重新排序自适应算法。在另一个实施例中,任意数量的公知的前向纠错技术可被用来产生附加的数据用于插入的分组,允许重新构造接收器处丢失的或者以其他方式失败的数据。
在一些实施例中,当事务中的最后一个分组的确认丢失时,此处描述的边界检测技术有助于避免超时。当发送器或者流控制模块220接收用于这些附加数据分组的确认时,发送器可以从这些附加确认来确定是否最后一个分组已经接收或者需要重发送,从而避免超时。在一个实施例中,如果最后的分组已经接收到但是它们的确认丢失,则流控制模块220产生用于该数据分组的确认,并且将确认发送给发送器,从而告知发送器数据分组已经递送。在另一个实施例中,如果最后的数据分组还没有接收到,则流控制模块220发送一个分组给发送器来引发发送来重发送丢失的数据分组。
重新分包
在又一个实施例中,设备200或者流控制器220应用重新分组技术来改进传输层网络业务量的流。在一些实施例中,TCP的性能和分组大小成比例。因此增加分组大小能改进性能,除非其引发实质的增加的分组损失率或者其他的非线性效应,例如IP分片(fragmentation)。通常,有线介质(诸如铜缆或者光纤)具有极低的误码率,低到可以忽略不计。对于这些介质,在分片发生之前,最大化分组大小可以是有益的(通过基本传输介质的协议来限制最大化分组大小)。但是对于具有较高损失率的传输介质(例如,诸如WiFi等的无线技术或者诸如配电线网络等的高损环境),由于介质引发的错误导致整个分组丢失(即,介质引发的错误超过对于该介质的标准纠错码的能力),增加了分组丢失率,从而增加分组大小可以导致较低传输率。分组损失率中的显著大的增加实际上否定了增加的分组大小的任一性能益处。在一些情况中,对于TCP端点来选择最优的分组大小可能是困难的。例如,最优的分组大小根据每个链路的性质在通过传输路径时改变。
通过将设备200或者流控制模块220插入到传输路径中,流控制器220监控链路的特征并且根据所确定的链路特征重新分组。在一个实施例中,设备200或者流控制器220将具有连续数据的分组重新分组为较小数量的较大的分组。在另一个实施例中,设备200或者流控制器220通过一列大的分组的部分分为大量的较小的分组而将分组重新分组。在其他实施例中,设备200或者流控制器220监控链路特征并且通过重新组合来调整分组大小以改进吞吐量。
QoS
仍旧参考图2A,在一些实施例中,流控制器220可以包括QoS引擎236,也称为QoS控制器。在另一个实施例中,例如设备200和/或网络优化引擎250包括单独的但与流控制器220通信的QoS引擎236。QoS引擎236包括用于执行一个或者多个服务质量(QoS)技术改进任一网络连接的性能、操作或者服务质量的任意逻辑、商业规则、功能或者操作。在一些实施例中,QoS引擎236包括为不同用户、应用、数据流或者连接提供不同特性的网络业务量控制和管理机制。在其他实施例中,QoS引擎236为用户、应用、数据流或者连接控制、维持或者确保特定水平的性能。在一个实施例中,QoS引擎236为用户、应用、数据流或者连接控制、维持或者确保特定部分的带宽或者网络容量。在一些实施例中,QoS引擎236监控性能的实现水平或者对应于用户、应用、数据流或者连接的服务质量,例如数据率和延迟。响应于监控,QoS引擎236动态地控制或者调整网络分组的调度特性来实现期望水平的性能或者服务质量。
在一些实施例中,QoS引擎236根据一个或者多个服务的等级或者水平来优先排序、调度和传输网络分组。在一些实施例中,服务的等级或者水平可以包括:1)最好的努力,2)控制的负载,3)担保或者4)性质。对于服务的最好结果等级,设备200作出合理的努力来递送分组(标准服务水平)。对于服务的控制的负载等级,设备200或者QoS引擎236逼近传输介质的标准的分组错误损失或者逼近小负载网络条件中的最好努力的服务的行为。对于服务的担保等级,设备200或者QoS引擎236保证该能力来在连接期间以确定速率传输数据。对于服务的性质等级,设备200或者QoS引擎236使用性质服务等级用于请求或者期望优先排序的业务量但不能保证资源需求或者服务水平的应用、用户、数据流或者连接。在这些情况中,设备200或者QoS引擎236基于QoS引擎236的任意逻辑或者配置或者基于商业规则或者策略来确定服务等级或者优先级。例如,在一个实施例中,QoS引擎236根据策略引擎295、295’执行的一个或者多个策略来优先排序、调度和传输网络分组。
协议加速
协议加速器234包括用于优化、加速或者以其他方式改进一个或者多个协议的性能、操作或者服务质量的任意逻辑、商业规则、功能或者操作。在一个实施例中,协议加速器234在网络堆栈的层5-7处加速任意应用层协议。在其他实施例中,协议加速器234加速传输层或者层4协议。在一个实施例中,协议加速器234加速层2或者层3的协议。协议加速器234被配置、构建或者设计来根据数据类型、协议的特征和/或行为来优化或者加速一个或者多个协议的每一个。在另一个实施例中,协议加速器234被配置、构建或者设计来改进用户体验、响应时间、网络或者计算机负载和/或关于协议的网络或者带宽利用。
在一个实施例中,协议加速器234被配置、构建或者设计来最小化文件系统访问上的WAN等待时间的效应。在一些实施例中,协议加速器234优化或者加速CIFS(公共因特网文件系统)协议的使用来改进文件系统访问时间或者对数据和文件的访问时间。在一些实施例中,协议加速器234优化或者加速NFS(网络文件系统)协议的使用。在另一个实施例中,协议加速器234优化或者加速文件传输协议(FTP)的使用。
在一个实施例中,协议加速器234被配置、构建或者设计来优化或者加速承载净荷或者使用任一类型和形式标记语言的协议。在其他实施例中,协议加速器234被配置、构建或者设计为优化或者加速超文本传输协议(HTTP)。在另一个实施例中,协议加速器234被配置、构建或者设计为来优化或者加速承载净荷或者以其他方式使用XML(可扩展标记语言)的协议。
透明并且多点布置配置
在一些实施例中,设备200和/或网络优化引擎250对于通过诸如WAN链路的网络连接或链路的任意数据流是透明的。在一个实施例中,设备200和/或网络设备250以此方式操作:通过WAN的数据流是由任意网络监控、QoS管理或者网络分析工具可识别的。在一些实施例中,设备200和/或网络优化引擎250不产生任意隧道或者流用于传输可以隐藏、混淆或者以其他方式是网络业务量不透明的数据。在其他实施例中,设备200透明操作,其中设备不改变网络分组的任一源和/或目标地址信息或者端口信息,诸如互联网协议地址或者端口号。在其他实施例中,设备200和/或网络优化引擎250被认为对于网络架构中的网络、应用、客户机、服务器或者其他设备或者计算装置透明地操作或者运转。也就是在一些实施例中,设备是透明的,其中网络上的任意装置或者设备的网络相关配置不必修改来支持设备200。
设备200可以以下面的布置配置方式来布置:1)串行业务量,2)代理模式,3)虚拟串行模式。在一些实施例中,设备200可以与以下的一个或者多个串行布置:路由器、客户机、服务器或者另一个网络装置或者设备。在其他实施例中,设备200可以与以下的一个或者多个并行布置:路由器、客户机、服务器或者另一个网络装置或者设备。在并行布置中,客户机、服务器、路由器或者其它网络设备可以被配置为转发、传送或者传输到设备200或者经由设备200。
在串行的实施例中,设备200与路由器的WAN链路串行布置。以此方式,来自WAN的所有业务量在到达LAN的目标之前传递通过设备。
在代理模式的实施例中,设备200被布置为客户机和服务器之间的代理装置。在一些实施例中,设备200允许客户机做出到网络上的资源的间接连接。例如,客户机经由设备200连接到资源,并且设备通过连接到资源、不同的资源、或者通过从高速缓存服务该资源来提供资源。在一些情况中,设备可以对于不同的目的来改变客户机请求或者服务器响应,诸如对于此处讨论的任一优化技术。在一个实施例中,客户机102发送寻址到代理的请求。在一个情况中,代理响应于客户机来代替或者充当服务器106。在其他实施例中,设备200通过将请求和响应拦截并透明地转发到客户机和/或服务器,用作为透明代理。不使用客户机侧配置,设备200可以将客户机请求重定向到不同的服务器或者网络。在一些实施例中,设备200可以在穿越设备的任一网络业务量上执行任一类型和形式的网络地址转换,称之为NAT。
在一些实施例中,设备200以虚拟串行模式配置来布置。在此实施例中,具有路由或者转换功能的路由器或者网络装置被配置为转发、路由或者去以其他方式提供发往网络或者设备200的网络分组。设备200随后在网络分组上执行任一期望的处理,诸如此处讨论的任一WAN优化技术。当完成处理时,设备200将处理的网络分组阻转发到路由器以发送到网络上的目的地。以此方式,设备200可以并行耦合到路由器,但是仍旧如同设备200串行一样操作。因为分组经由设备通过网络处理和传输,则该布置模式还透明地提供所保持的源和目标地址以及端口信息。
端点节点布置
尽管网络优化引擎250以上总的结合设备200描述,但是网络优化引擎250或者其任意部分可以被布置、分布或者以其他方式操作在诸如客户机102和/或服务器106的任一端节点上。由此,客户机或者服务器可以提供此处描述的结合一个或更多设备200或者不结合设备200的网络优化引擎250的任一系统和方法。
现在参考图2B,描述布置在一个或者多个端节点的网络优化引擎250的示例实施例。总的来说,客户机102可以包括第一网络优化引擎250’并且服务器106可以包括第二网络优化引擎250”。客户机102和服务器106可以建立传输层连接并且交换穿越或者不穿越设备200的通信。
在一个实施例中,客户机102的网络优化引擎250’执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。在另一个实施例中,服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。在一些实施例中,客户机102的网络优化引擎250’和服务器106的网络优化引擎250”执行此处描述的技术来优化、加速或者以其他方式改进在客户机102与服务器106之间通信的网络业务量的性能、操作或者服务质量。在又一个实施例中,客户机102的网络优化引擎250’结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与客户机102通信的网络业务量的性能、操作或者服务质量。仍在另一个实施例中,服务器106的网络优化引擎250”结合设备200执行此处描述的技术来优化、加速或者以其他方式改进与服务器106通信的网络业务量的性能、操作或者服务质量。
C.客户机代理
如图2A和2B所示,部署在系统中或者具有设备200或者205的客户机可以包括客户机代理120。在一个实施例中,客户机代理120被用来促进与一个或者多个设备200或者205的通信。在一些实施例中,此处描述的设备200或者205的任意系统和方法可以经由客户机代理120部署、实施或者包含在客户机中。在其他实施例中,客户机代理120可以包括提供诸如端点检测和验证、虚拟专用网络连接和应用流式传输的附加功能性的应用、程序或者代理。在讨论设备200的系统和方法的其它实施例之前,将描述客户机代理120的实施例。
现在参考图3,描述了客户机代理120的一个实施例。客户机102包括用于经由网络104与设备200、设备205和/或服务器106建立、交换、管理或者控制通信的客户机代理120。在一些实施例中,也被称为WAN代理的客户机代理120加速WAN网络通信和/或被用来经由网络上的设备200进行通信。简单概述,客户机102在计算装置100上操作,所述计算装置100具有带有内核模式302和用户模式303的操作系统以及带有一个或多个层310a-310b的网络堆栈267。客户机102已经安装和/或执行一个或多个应用。在一些实施例中,一个或多个应用可以经由网络堆栈267通信到网络104。诸如web浏览器的一个应用还可以包括第一程序322。例如,第一程序322可以被用于在一些实施例中安装和/或执行客户机代理120或者其任意部分。客户机代理120包括用于从一个或多个应用中拦截来自于网络堆栈267的网络通信的拦截机制或拦截器350。
如同设备200一样,客户机具有包括任意类型和形式的软件、硬件或者其任一组合的网络堆栈267来提供与网络104的连接性以及与网络104的通信。客户机102的网络堆栈267包括以上结合设备200描述的任一网络堆栈实施例。在一些实施例中,客户机代理120或者其任一部分被设计和构建为和网络堆栈267一起操作或者结合工作,网络堆栈267是由客户机102的操作系统安装或者以其他方式提供的。
在进一步的细节中,客户机102或者设备200(或者205)的网络堆栈267可以包括用于接收、获取、提供或者以其他方式访问与客户机102的网络通信相关联的任意信息和数据的任意类型和形式的接口。在一个实施例中,到网络堆栈267的接口包括应用编程接口(API)。该接口还可以包括任意函数调用、挂钩或过滤机制、事件或回叫机制、或任意类型的连接技术。网络堆栈267经由接口可以接收或提供诸如对象的与网络堆栈267的功能或操作相关的任意类型和形式的数据结构。例如,数据结构可以包括与网络分组相关的信息和数据或者一个或多个网络分组。在一些实施例中,数据结构包括、参考或者识别诸如传输层的网络分组的在网络堆栈267的协议层处理的网络分组的一部分。在一些实施例中,数据结构325是内核级数据结构,而在其它实施例中,数据结构325是用户模式数据结构。内核级数据结构可以包括获得的或与在内核模式302中操作的网络堆栈267的一部分相关的数据结构、或者运行在内核模式302中的网络驱动程序或其它软件、或者由运行或操作在操作系统的内核模式中的服务、进程、任务、线程或其它可执行指令获得或收到的任意数据结构。
另外,例如数据链路或网络层的网络堆栈267的一些部分可以在内核模式302中执行或操作,而诸如网络堆栈267的应用层的其它部分执行或操作在用户模式303中。例如,网络堆栈的第一部分310a可以给应用提供对网络堆栈267的用户模式访问,而网络堆栈267的第二部分310a提供对网络的访问。在一些实施例中,网络堆栈的第一部分310a可以包括诸如层5-7中的任意一个的网络堆栈267的一个或多个较上的层。在其它实施例中,网络堆栈267的第二部分310b包括诸如层1-4中的任意一个这样的一个或多个较低的层。网络堆栈267的第一部分310a和第二部分310b中的每一个可以在任意一个或多个网络层处、在用户模式203、内核模式202或其组合中、或者在网络层的任意部分或网络层的接口点或用户模式302和内核模式203的任意部分或接口点处,包括网络堆栈267的任意部分。
拦截器350可以包括软件、硬件或软件和硬件的任意组合。在一个实施例中,拦截器350在网络堆栈267中的任一点拦截或者以其他方式接收网络通信,并且将所述网络通信重定向或发送到被拦截器350或客户机代理120所期望、管理或控制的目的地。例如,拦截器350可以拦截第一网络的网络堆栈267的网络通信并发送该网络通信给设备200以用于在第二网络104上的传输。在一些实施例中,拦截器350包括或者是驱动器,诸如被构造和设计为与网络堆栈267接口和工作的网络驱动器。在一些实施例中,客户机代理120和/或拦截器350在诸如传输层处的网络堆栈267的一个或多个层处操作。在一个实施例中,拦截器350包括过滤器驱动程序、挂钩机制或任意格式和类型的适当的网络驱动程序接口,所述接口例如经由传输驱动程序接口(TDI)来接口于网络堆栈的传输层。在一些实施例中,拦截器350接口到诸如传输层的第一协议层以及诸如传输协议层之上的任意层的例如应用协议层的另一个协议层。在一个实施例中,拦截器350可以包括遵照网络驱动程序接口规范(NDIS)的驱动程序或NDIS驱动程序。在另一个实施例中,拦截器350可以是小过滤器(min-filter)或迷你端口(mini-port)驱动程序。在一个实施例中,拦截器350或者其一部分操作于内核模式202中。在另一个实施例中,拦截器350或者其一部分操作于用户模式203中。在一些实施例中,拦截器350的一部分操作于内核模式202中,而拦截器350的另一部分操作于用户模式203中。在其它实施例中,客户机代理120操作于用户模式203中,但经由拦截器350连接到内核模式驱动程序、进程、服务、任务或一部分操作系统,以便获得内核级数据结构225。在进一步的实施例中,拦截器350是诸如应用的用户模式应用或程序。
在一个实施例中,拦截器350拦截或者接收任意的传输层连接请求。在这些实施例中,拦截器350执行传输层应用编程接口(API)调用以对于该位置设置目的地信息,诸如所期望的位置的目的地IP地址和/或端口。以此方式,拦截器350拦截并重定向传输层连接到由拦截器350或客户机代理120控制或管理的IP地址和端口。在一个实施例中,拦截器350为到客户机102的本地IP地址和端口的连接设置目的地信息,客户机代理120在客户机102的本地IP地址和端口上进行监听。例如,客户机代理120可以包括在用于重定向的传输层通信的本地IP地址和端口上监听的代理服务。在一些实施例中,客户机代理120随后传达重定向的传输层通信到设备200。
在一些实施例中,拦截器350拦截域名服务(DNS)请求。在一个实施例中,客户机代理120和/或拦截器350解析DNS请求。在另一实施例中,拦截器发送被拦截的DNS请求到设备200以用于DNS解析。在一个实施例中,设备200解析DNS请求并通信DNS响应给客户机代理120。在一些实施例中,设备200解析经由另一设备200′或DNS服务器106的DNS请求。
在又一个实施例中,客户机代理120可以包括两个代理120和120′。在一个实施例中,第一代理120可以包括操作于网络堆栈267的网络层的拦截器350。在一些实施例中,第一代理120拦截诸如因特网控制消息协议(ICMP)请求(例如,查验和跟踪路由)的网络层请求。在其它实施例中,第二代理120′可以在传输层操作并拦截传输层通信。在一些实施例中,第一代理120拦截在网络堆栈210的一层处的通信,并与第二代理120′连接或通信被拦截的通信到第二代理120′。
客户机代理120和/或拦截器350可以以相对于网络堆栈267的任意其它协议层透明的方式操作于协议层处或与协议层连接。例如,在一个实施例中,拦截器350以相对于诸如网络层的传输层之下的任意协议层以及诸如会话、表示或应用层协议的传输层之上的任意协议层透明地来操作网络堆栈267的传输层或与其连接。这允许网络堆栈267的其它协议层按意愿地操作而不用修改来使用拦截器350。因而,客户机代理120和/或拦截器350可以与传输层交互或者在其上操作以保护、优化、加速、路由或负载平衡经由诸如TCP/IP之上的任意应用层协议的通过传输层携带的任意协议提供的任意通信。
进一步地,客户机代理120和/或拦截器350可以以相对于任意应用、客户机102的用户以及诸如与客户机102通信的服务器的任意其它计算装置100透明的方式来操作于网络堆栈267处或与网络堆栈267连接。客户机代理120或者其任一部分可以以一定方式安装和/或执行于客户机102上而不修改应用。客户机代理120或者其任一部分可以以对于客户机102、设备200、205或者服务器106的任意网络配置透明的方式安装和/或执行。客户机代理120或者其任一部分可以以一定方式安装和/或执行而不修改客户机102、设备200、205或者服务器106的任意网络配置。在一个实施例中,客户机102或与客户机102通信的计算装置的用户不知道客户机代理120或其任一部分的存在、执行或操作。因而,在一些实施例中,相对于应用、客户机102的用户、客户机102、诸如服务器或者设备200、205的另一个计算装置、或者在由拦截器350联接的协议层之上和/或之下的任意协议层透明地来安装、执行和/或操作客户机代理120和/或拦截器350。
客户机代理120包括流客户机306、收集代理304、SSL VPN代理308、网络优化引擎250和/加速程序302。在一个实施例中,客户机代理120是由位于Fort Lauderdale,Florida的Citrix Syestems公司开发的独立计算架构(ICA)客户机或者其任意部分,并且还被称为ICA客户机。在一些实施例中,客户机120包括用于将应用从服务器106流式传输到客户机102的应用流客户机306。在另一个实施例中,客户机代理120包括用于执行端点检测/扫描以及为设备200和/或服务器106收集端点信息的收集代理304。在一些实施例中,客户机代理120包括诸如网络优化引擎250和加速程序302的一个或者多个网络加速或者优化程序或者代理。在一个实施例中,加速程序302加速经由设备205’的客户机102和服务器106之间的通信。在一些实施例中,网络优化引擎250提供此处讨论的WAN优化技术。
流客户机306是用于接收和执行来自于服务器106的流式传输的应用的应用、程序、进程、服务、任务或可执行指令集。服务器106可以将一个或多个应用数据文件流式传输到流客户机306,以用于在客户机102上播放、执行所述应用或者以其他方式使所述应用被执行。在一些实施例中,服务器106发送一组压缩的或封装的应用数据文件到流客户机306。在一些实施例中,多个应用文件在文件服务器上被压缩和存储在诸如CAB、ZIP、SIT、TAR、JAR或其它档案(archive)的档案文件中。在一个实施例中,服务器106解压缩、解封装或解档(unarchives)应用文件,并发送所述文件到客户机102。在另一个实施例中,客户机102解压缩、解封装或解档应用文件。流客户机306动态地安装应用或其中的一部分,并执行应用。在一个实施例中,流客户机306可以是可执行程序。在一些实施例中,流客户机306可以启用另一个可执行程序。
收集代理304是用于识别、获得和/或收集关于客户机102的信息的应用、程序、进程、服务、任务或可执行指令集。在一些实施例中,设备200发送收集代理304到客户机102或客户机代理120。可以根据设备的策略引擎236的一个或多个策略来配置收集代理304。在其它实施例中,收集代理304发送收集的有关客户机102的信息给设备200。在一个实施例中,设备200的策略引擎236使用收集的信息来确定并提供对客户机到网络104的连接的访问、验证和授权控制。
在一个实施例中,收集代理304是端点检测和扫描程序,其识别和确定客户机的一个或多个属性或特性。例如,收集代理304可以识别和确定任意一个或多个以下的客户机侧属性:1)操作系统和/或操作系统的版本,2)操作系统的服务包,3)运行的服务,4)运行的进程,和5)文件。收集代理304还可以识别和确定客户机上的任意一个或多个下列软件的存在或版本:1)防病毒软件,2)个人防火墙软件,3)反垃圾邮件软件,和4)因特网安全软件。策略引擎236可以具有根据客户机或客户机侧属性的任意一个或多个属性或特性的一个或多个策略。
SSL VPN代理308是用于建立从第一网络104到第二网络104’、104”的安全套接字层(SSL)虚拟专用网络(VPN)连接或者从客户机102到服务器106的SSL VPN连接的应用、程序、进程、服务、任务或者可执行指令集。在一个实施例中,SSL VPN代理308建立从公共网络104到专用网络104’或者104”的SSL VPN连接。在一些实施例中,SSL VPN代理308结合设备205一起工作来提供SSL VPN连接。在一个实施例中,SSL VPN代理308建立与设备205的第一传输层连接。在一些实施例中,设备205建立与服务器106的第二传输层连接。在另一个实施例中,SSL VPN代理308建立与客户机上的应用的第一传输层连接,和与设备205的第二传输层连接。在其他实施例中,SSL VPN代理308和WAN优化设备200结合工作来提供SSL VPN连接。
在一些实施例中,加速程序302是用于执行一个或多个加速技术的客户机侧加速程序,以加速、增强或者以其他方式改善客户机与服务器106的通信和/或对服务器106的访问,诸如访问由服务器106提供的应用。加速程序302的可执行指令的逻辑、功能和/或操作可以执行一个或多个的下列加速技术:1)多协议压缩,2)传输控制协议池,3)传输控制协议多路复用,4)传输控制协议缓冲,以及5)经由高速缓存管理器的高速缓存。另外,加速程序302可以执行对由客户机102接收和/或发送的任意通信的加密和/或解密。在一些实施例中,加速程序302以集成的方法或方式来执行一个或多个加速技术。另外,加速程序302可以在被携带为传输层协议的网络分组的净荷的任意协议或多个协议上执行压缩。
在一个实施例中,加速程序302被设计、构建或者配置为和设备205一起工作来提供LAN侧加速或者提供经由设备205提供的加速技术。例如,在Citrix System公司出品的NetScaler设备205的一个实施例中,加速程序302包括NetScaler客户机。在一些实施例中,加速程序302提供在诸如分支结构中的远程装置中独立的NetScaler加速技术。在其他实施例中,加速程序和一个或者多个NetScaler设备205一起工作。在一个实施例中,加速程序302提供网络业务量的LAN侧或者基于LAN的加速或者优化。
在一些实施例中,网络优化引擎250可以被设计、构建或者配置为和WAN优化设备200一起工作。在其他实施例中,网络优化设备250可以被设计、构建或者配置为提供设备200的WAN优化技术,需要或者不需要设备200。例如,在Citrix System公司出品的NeNScaler设备205的一个实施例中,网络优化设备250包括NeNScaler客户机。在一些实施例中,网络优化引擎250提供在诸如分支结构中的远程位置中独立的NeNScaler加速技术。在其他实施例中,网络优化引擎250和一个或者多个NeNScaler设备200一起工作。
在另一个实施例中,网络优化引擎250包括加速程序302,或者加速程序302的功能、操作和逻辑。在一些实施例中,加速程序302包括网络优化引擎250,或者网络优化引擎250的功能、操作和逻辑。在又一个实施例中,网络优化引擎250被提供或者安装为来自加速程序302的单独的程序或者可执行指令集。在其他实施例中,网络优化引擎250和加速程序302包括在相同的程序中或者同一个可执行指令集中。
在一些实施例中以及仍然参考图3,可以使用第一程序322来自动地、静默地、透明地或以其他方式地安装和/或执行客户机代理120或者其一部分。在一个实施例中,第一程序322是诸如被加载应用并由应用执行的ActiveX控件或Java控件或脚本的插件部件。例如,第一程序包括由web浏览器应用加载并运行在例如应用的存储空间或上下文中的ActiveX控件。在另一个实施例中,第一程序322包括由诸如浏览器的应用加载并运行的一组可执行指令。在一个实施例中,第一程序322被设计和构造来安装客户机代理120。在一些实施例中,第一程序322通过网络来从另一个计算装置获得、下载或接收客户机代理120。在另一个实施例中,第一程序322是客户机102的操作系统上的诸如网络驱动程序和客户机代理120或其任意部分的安装程序或用于安装程序的即插即用管理器。
在一些实施例中,客户机代理120、流客户机306、收集代理304、SSLVPN代理308、网络优化引擎250、加速程序302、拦截器350的每一个或者其中任意部分可以被安装、执行、配置或者操作为单独的应用、程序、进程、服务、任务或者可执行指令集。在其他实施例中,客户机120的每一个或者任意部分可以被一起安装、执行、配置或者操作为单独的客户机代理120。
D.用于多层次高速缓存和高速缓存索引系统的系统和方法
现在参考图4A-4E,描述用于多层次高速缓存和高速缓存索引系统的系统和方法。在一些实施例中,高速缓存管理系统232使用基于存储器的对象索引以参考或标识存储在磁盘中的相应对象。在一个实施例中,用于索引对象的存储器成比例地或与磁盘大小的生长相关地生长。虽然用于存储对象的存储装置大小改变了,但在此所描述的技术最小化,减小或保持了用于对象索引的存储器大小。这些技术在增大或减小用于对象存储的磁盘大小的同时允许更优化地使用用于对象索引的存储器。
现在参考图4A,描述具有多层次高速缓存索引和存储系统的设备或装置的示例性实施例。简言之,设备200包括具有高速缓存管理器232的网络优化引擎,该高速缓存管理器232用于管理存储器122中的对象索引410,存储器122用于索引存储在被高速缓存232使用的部分存储器128中的对象。对象索引410和/或高速缓存232的对象高速缓存420可以设置成多层次的。第一层次具有象大小412和第一最大数量的对象412用于在对象高速缓存420第一最大对的存储装置128中存储被称为小对象的对象422。第二层次具有第二最大对象大小414和第二最大数量的对象415,用于存储对象高速缓存420的存储装置128中的对象424。高速缓存232还可以包括具有第n最大对象大小416和第n最大数量的对象417的第三或第n层次用于在对象高速缓存420的存储装置128中存储被称为大对象426的对象426。高速缓存管理器232可以包括层次管理器402,其用于管理或调整用于每个层次的最大对象数量和对象大小。高速缓存管理器232和/或层次管理器402可以响应用于对象高速缓存232的存储装置大小的改变而运作。在一个实施例中,高速缓存管理器232和/或层次管理器402在用于对象高速缓存420的存储装置128的大小改变的同时保持对象索引的存储器的大小。
在一些实施例中,高速缓存管理器232建立第一大小的存储器122,用于或分配给对象索引410。装置100的任何类型和形式的存储器都可以用于对象索引410。在一个实施例中,高速缓存管理器232建立第一存储器元件122的所有可用存储器用于对象索引410。在另一实施例中,高速缓存管理器232建立第一存储器元件122的第一部分用于对象索引。在一些实施例中,高速缓存管理器232使用第一存储器元件122的所有可用存储器或第一存储器元件122的第一部分以及第二存储器元件122’的所有可用存储器或第二存储器元件122’的第二部分。在一个实施例中,装置或设备使用存储器122的一部分用于其它处理任务、程序、服务或装置进程。在一些实施例中,高速缓存管理器232保持存储器大小或分配固定的大小或部分的存储器122用于对象索引410。
在一个实施例中,高速缓存管理器232建立存储装置128的大小或其一部分,以用于或分配给对象高速缓存。任何类型和形式的存储装置都可以用于对象高速缓存,包括固定或便携式磁盘和存储I/O装置。在一些实施例中,高速缓存管理器232建立或分配所有第一存储装置128用于对象高速缓存410。在其他实施例中,高速缓存管理器232建立或分配第一存储装置128的第一部分和第二存储装置128’的第二部分用于对象高速缓存420。在一些实施例中,高速缓存管理器232建立或分配存储装置128的一部分用于各层次。在另一些实施例中,高速缓存管理器232建立或分配独立存储装置128、128’、128”或其一部分用于各层次。在一些实施例中,高速缓存管理器232建立存储装置128的第一部分用于对象高速缓存420,同时装置保持存储装置128的任何剩余部分用于其它装置功能性或使用。
在又一些实施例中,高速缓存管理器232建立、组织、设置或保持逻辑存储单元,被称为存储装置128的“组块(chunk)”。装置,例如通过高速缓存管理器232,可以保持用于每个逻辑存储单元的唯一标识符并关联“组块”存储装置中的尺寸大小以及开始和结束部分。在一些实施例中,高速缓存管理器232指定用于小对象422的一个或多个组块的第一组、用于中对象424的一个或多个对象的第二组和用于大对象426的一个或多个组块的第三组。在一些实施例中,高速缓存管理器232可以设计用于小对象422的第一存储装置128的第一部分或区域、用于中对象424的第一存储装置128或第二存储装置128’的第二部分或区域,以及用于大对象426的第一、第二或第三存储装置的第三部分或区域。在一个实施例中,用于任何对象422、424、426的存储装置类型和形式可以根据在装置100或设备200操作期间存取对象的存取速率和频率来确定或建立。
对象索引410包括任何类型和形式的索引方案,用于将索引对应到高速缓存中的对象。在一个实施例中,对象索引保持在存储器中,同时相应的对象存储在磁盘中。在一些实施例中,对象索引410包括参考或标识存储在对象高速缓存420中的对象的位置或指针的条目。在一个实施例中,对象索引410在对象名称或标识符上使用任一类型的哈希(hash)、校验和(checksum)或指纹功能作为条目或索引。在一些实施例中,对象索引410对对象进行哈希、校验和或指纹操作。在另一些实施例中,对象索引410的条目是对象的名称或标识符。在一些实施例中,用于条目或索引的值是对象存储装置中位置的位置标识符。例如,索引值可以包括对象开始地址或位置的指针。在另一示例中,索引值包括组块的标识符和用于对象开始位置的组块偏移量。
层次管理器402包括软件、硬件或软件和硬件的任何组合。层次管理器402可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。层次管理器402包括或提供用于建立、管理或调整任何层次高速缓存的对象数量和对象大小的逻辑、商用规则、功能或操作。最大对象大小412、414和416以及最大对象数量412、414和416可以包括任何适当的值,例如可以是从0到数百倍千、百万或兆对象的整数值,其取决于装置100的容量。在一些情况下,用于这些参数的值可被设置为一些负数或其他无用的值,例如字符串,以便标识该值将不被使用。在一些实施例中,用于这些参数412、414和416以及412、414和416的值可以设置为一个或多个其他值或参数的函数,例如用于对象索引410的存储器122的大小和/或用于对象高速缓存420的存储装置128的大小。通过示例且非限制性的方式,下表描述了图4B中三层次高速缓存的示例性实施例:
层次 高速缓存对象 最大对象尺寸 最大对象数量   最大存储装置大小
  1   小   10KB   200,000   2GB
  2   由   10MB   100,000   10GB
  3   大   1GB   100   100GB
在一些实施例中,层次管理器402可以响应于存储器122的大小的改变或用于对象高速缓存420的存储装置128的大小的改变来增大或减小对象索引410的最大对象大小412、414或416。在另一些实施例中,层次管理器402可以响应于存储器122的大小的改变或用于对象高速缓存420的存储装置128的大小的改变来增大或减小对象索引410的最大对象数量。在一个实施例中,层次管理器402在检测到用于对象高速缓存420的存储装置128大小的改变时而改变其他层次的对象大小414、416和对象数量415、417的同时保持用于第一层次的最大对象大小412和最大对象数量413。在另一些实施例中,层次管理器402在考虑检测到用于对象高速缓存420的存储装置128大小的改变的情况下保持第一和第二层次的最大对象大小412、414和最大对象数量413、415。即使用于高速缓存存储装置420的存储装置的大小增大或减小,高速缓存管理器232可以保持用于高速缓存的一个、两个或所有层次的对象大小和对象数量。
在又一实施例中,层次管理器402可以增加或减少用于任何一个层次的对象的最大数量或最大对象大小,以响应于装置或设备的操作条件或特性,例如并行连接的数量、关于被请求和/或被高速缓存对象的数量和大小的历史信息、高速缓存命中的数量、以及未使用或具有剩余空间的层次的存储器和/或存储装置的部分。在一些实施例中,高速缓存管理器232或层次管理器402可以包括或提供用于建立、管理、调整或配置以下任何事项的任何类型和形式的用户界面:层次的数量、用于每个层次的对象最大数量和对象大小、用于对象索引的存储器大小、用于对象高速缓存的存储装置大小。用户界面可以是图形用户界面或命令行用户界面。在一些实施例中,响应于策略引擎295的一个或多个策略设备200或装置100可以建立、管理、调整或配置任何上述信息。
参考图4B,描述了用于管理响应于用于对象高速缓存的存储装置大小的改变的多层次对象索引的方法450的实施例。简而概括地说,在步骤451,存储器中对象索引的大小被建立为预先确定的大小。对象索引存储对存储到具有预定大小的存储装置128的一个或多个部分的对象进行索引。高速缓存使用存储装置的第一部分或第一层次和存储装置的第二部分或第二层次,其中第一部分或第一层次用于存储小于或等于第一对象大小的对象,第二部分或第二层次用于存储大于第一对象大小的对象。在步骤453,该方法包括识别高速缓存被允许存储到高速缓存232所使用的层次或存储装置的各个部分的每一个的最大对象数量。在步骤455,在用于对象索引的存储器大小保持不变的同时,用于存储被高速缓存对象的存储装置的大小变更或改变为第二预定大小。在步骤457,高速缓存管理器232保持高速缓存允许存储到存储装置128的第一部分或预定阈值以下的第一层次的最大对象数量。在步骤459,高速缓存管理器232响应于存储装置大小的改变而变更或保持高速缓存的一个或多个层次的对象大小和对象数量。
更详细地,在步骤451,设备200或高速缓存管理器232建立用于对象索引410的预定大小的存储装置122的。在一个实施例中,与用于对象高速缓存420的存储装置大小相关或成比例地建立存储器中的预定大小的对象索引。在一些实施例中,分配到对象索引410的存储器初始大小可以表示存储器与高速缓存所使用的存储装置的任意比率,例如对于高速缓存所使用的存储装置的每千兆字节来说10MB、20MB或30MB的存储器。在其他实施例中,高速缓存管理器232根据装置中的可用存储器分配存储器的一部分用于对象索引410。在一个实施例中,高速缓存管理器232将一百分比的可用存储器,例如10%、20%、30%、40%、50%、60%、70%、80%或90%分配给对象索引410。在另一实施例中,用户或系统管理员可以通过装置100或高速缓存管理器232的用户界面配置用于对象索引410的存储器大小。在又一实施例中,高速缓存管理器232使用专门用于存储对象索引410的该大小的存储元件122。
在步骤451,高速缓存管理器232建立由高速缓存使用的第一部分或存储层次用于存储小于或等于第一最大对象大小412的对象。高速缓存管理器232还建立由高速缓存使用的第二部分或存储层次用于存储大于第一最大对象大小的对象。在一个实施例中,高速缓存管理器232可以建立并保持两个层次。在另一实施例中,高速缓存管理器232可以建立并保持三个层次。在其他实施例中,高速缓存管理器232可以建立四个、五个或六个层次。在一些实施例中,设备200或高速缓存管理器232可以建立设备200的操作和性能所需要的任何粒数(granular number)的层次、对象大小和对象数量。
在一些实施例中,设备200或高速缓存管理器232提供用户界面以便用户或系统管理员建立层次的数量以及用于每个层次的最大对象大小和对象数量。在其他实施例中,设备200或高速缓存管理器232通过默认、作为安装的或装载的配置有预定数量的层次以及用于每个层次的预定最大对象大小和对象数量。在又一实施例中,应用程序、程序或代理对网络环境、系统环境、系统所使用的应用程序、客户机和服务器、客户机和服务器之间所用的对象数量进行分析,并推荐层次数量以及用于每个层次的最大对象大小和对象数量、或用于每个层次的设置。
在步骤453,设备200和/或高速缓存管理器232识别或建立高速缓存管理器232允许存储到高速缓存的每个部分或层次的对象数量。在一些实施例中,高速缓存管理器232为高速缓存的多个部分或层次建立最大对象大小412、414、416和最大对象数量413、415、417。例如,在一个实例中,高速缓存管理器232可以为对象高速缓存420中的小对象422建立10KB的最大对象大小412。对该例进一步而言,高速缓存管理器232可以建立高速缓存232在对象高速缓存420中存储高达最大200,000个小对象412。在一些实施例中,大于第一最大对象大小的任何对象都存储在高速缓存的第二层次中。例如,如果对象大于10KB,例如1M的文件,则将对象作为中对象424存储在对象存储器中。在其他实施例中,如果对象大于第一最大对象大小412或小于等于第二最大对象大小414,例如10MB,则高速缓存管理器232将对象作为中对象424存储在第二层次中。在又一实施例中,高速缓存管理器232为第一层次建立最小对象大小。例如,如果一对象小于1KB,则高速缓存管理器232不高速缓存该对象。
同样地,基于层次的数量和相应的对象大小,高速缓存管理器232确定对象的大小并将该对象相应地存储到适当的层次。高速缓存管理器232使用任何类型和形式的跟踪机制,包括对象、计数器、变量或数据结构跟踪,以便跟踪存储在每个层次中的对象数量。如果存储到一层次中的对象数量达到该层次的最大对象数量,则高速缓存管理器232跳过将下一对象存储到该层次或用新对象替换存储器中的老对象。在一些实施例中,高速缓存管理器232可以根据陈旧度、最后访问时间、访问频率或任何其他条件将对象从高速缓存移除。在其他实施例中,高速缓存管理器232可以根据策略引擎285的任何一个或多个策略刷新、更新、保持或从高速缓存移除对象。
在一些实施例中,高速缓存管理器232接收具有超出高速缓存的最大阈值,例如第n最大对象大小417的大小的对象。例如,高速缓存管理器232可以接收10GB的对象,其大于1GB的第n最大对象大小设置。在一个实施例中,高速缓存管理器232可以跳过将此对象存到高速缓存。在另一实施例中,高速缓存管理器232可以动态地建立另一层次,用于存储大于第n最大对象大小417的对象。在一些实施例中,高速缓存管理器232可以将对象分割为多个部分并根据层次的最大对象大小将这些部分存储在一个或多个存储层次中。
在步骤455,由对象高速缓存420使用或分配给对象高速缓存420的存储装置可以改变。在一个实施例中,存储装置128用具有更大或更小存储容量的第二存储装置128’代替。在一些实施例中,第二存储装置128’添加到装置100以增大可用于用作对象高速缓存420的存储容量。在另一实施例中,设备200或高速缓存管理器232为对象高速缓存420建立或分配存储装置128的更大或更小的部分。在一些实施例中,设备200的用户或管理员改变分配用作对象高速缓存420的存储装置的大小。在其他实施例中,高速缓存管理器或用户可以改变一个或每个存储层次的大小。在又一实施例中,存储装置128的一部分会变得被毁坏或者不能用于对象高速缓存420。在这些实施例中,存储装置128的存储容量会降低。
在一个实施例中,在变更用于对象高速缓存232的存储装置大小时,用于对象索引的存储器122的大小可被保持。例如,在步骤451,10MB的对象索引410可以用于20GB的对象存储420。用于对象高速缓存420的存储装置128的部分可被增加到40GB但对象索引410的存储器大小保持在10MB。在另一实施例中,当变更为对象高速缓存232建立的存储装置128的部分的大小时,用于对象索引的存储器122的大小可以减小。例如,用于对象索引410的存储器大小可以从10MB减小到5MB,而存储装置128用于对象高速缓存的的部分保持不变或增大。
在又一实施例中,用于对象索引的存储器122的大小可以增大或减小,而不是增大或减小到与存储装置128的部分或由对象高速缓存420使用的或分配给对象高速缓存420的存储层次的增大或减小成比例或成比率。例如,用于对象索引410的存储器122的大小与用于对象高速缓存420的存储装置的大小的比可以已被设置为1MB比1GB,例如存储器的10MB比存储装置的10GB。用于对象高速缓存420的存储装置的大小可以双倍于20GB,却仅仅通过相对较小的比率增大用于对象索引122的存储器122的大小,例如到2MB。同样地,分配到对象高速缓存420的存储装置的大小可以减小一半到5GB而用于对象索引122的存储器122的大小以更高的比率减小,例如到250KB。
在步骤457,在一个实施例中,高速缓存管理器232响应于对象高速缓存的存储装置大小的改变,例如任一层次的存储装置大小的改变,将最大对象数量412和/或最大对象大小413保持在预定阈值以下。在一个实施例中,虽然由高速缓存使用的存储装置大小改变了,但高速缓存管理器232不改变用于第一层次的最大对象数量413或最大对象大小412。在另一实施例中,高速缓存管理器232还不改变用于第二层次的最大对象数量413或最大对象大小414。在一些实施例中,高速缓存管理器232增大或减小对象大小412或对象数量413但将该增大或减小保持在预定阈值内。例如,如果用于对象高速缓存420的存储装置以预定量增大,例如20%,则高速缓存管理器232以不大于20%的量增大用于第一层次的对象大小412或对象数量413。
在这种方式中,高速缓存管理器232通过更有效的使用存储器较好地影响了对大于较小对象422的那些对象的对象索引和对象存储。在一些实施例中,高速缓存管理器232更有效地利用了高速缓存的第二和第三层次,而不是以直接相应于磁盘调整的大小的方式增加存储器的使用或增加对象索引410的存储器的使用。如此,由于存储装置的大小已经增大,因此设备200或高速缓存管理器232不需要增大用于对象索引410的存储器大小。因此,用于对象索引410的相同量的存储器可被配置用于支持用于对象高速缓存420的任何大小的存储装置或存储层次。在一些情况下,这将减小系统或设备的升级维护,和配置。可以添加新磁盘或取代旧磁盘而不改变设备或系统上的存储器。在此所描述的技术还可以使用板上(on-board)存储器和不易升级或改变的其他类型的存储器。此外,装置可以更有效地支持或允许其他应用程序、系统或资源使用存储器同时保持高速缓存的有效性能或使用。
根据第一最大对象大小412的大小,存储在对象高速缓存420中的较小对象422的数量可以在不使用更多存储装置的情况下显著增长。例如,100,000个10kb或更小的较小对象占据小于1GB的存储装置128。但是,在一些实施例中,较小的被高速缓存对象422在减小带宽和响应时间方面具有比中对象424或较大对象426较小的影响。也就是说,在一些实施例中,设备200或高速缓存管理器232将通过使更多的中对象和较大对象存储在高速缓存中来服务以改善网络带宽的减小和/或进一步提高响应时间。因此,在一个实施例中,通过在存储装置增加时保持或限制存储在高速缓存中的较小对象422或第一层次对象的数量,设备200或高速缓存管理器232具有更多用于高速缓存中对象和较大对象的存储容量。在一些实施例中,通过在存储装置增加时保持或限制存储在高速缓存中的较小对象422和中对象的数量,设备200或高速缓存管理器232具有更多用于高速缓存并服务较大对象的存储容量。
在步骤459,高速缓存管理器232可以响应于由对象高速缓存420使用或分配到对象高速缓存420的存储装置大小的改变来改变或保持用于任何层次的任何对象大小和对象数量。在一些实施例中,设备200或高速缓存管理器232的用户或管理员可以为每个层次配置或指定不同的对象大小和对象数量。在一种情况下,用户或管理员可以建立新层次或移除一层次。在其他实施例中,设计并构造高速缓存管理器232以便根据用于高速缓存的存储装置大小的改变、每个层次中的当前对象数量和对象大小、剩余的可用存储器和/或存储装置或者诸如访问频率、每个层次的高速缓存命中数量、错过的高速缓存机会数量和并行用户或连接的数量的任何操作特性,来改变用于各层次的对象大小和对象数量。
在此描述的多层次化的高速缓存和索引系统在确定和管理由高速缓存使用的存储装置和存储装置方面提供了大的弹性和粒度以便根据系统的存储器和磁盘规格获得期望的性能。虽然结合图4A的设备200作了如上描述,但方法450和多层次化高速缓存系统可以应用于网络中的任何节点,例如客户机102、服务器106、第二设备200’或其他类型的设备205’。
现在参考图4C,描述了用于响应于用于对象高速缓存的存储器大小的改变而管理多层次对象索引的方法460的另一实施例。简而概括地说,在步骤451,存储器中对象索引的大小被建立为预先确定的大小。对象索引存储对存储到由高速缓存使用的存储装置的各层次的对象进行索引。高速缓存使用存储装置的第一部分或第一层次和第二部分或第二层次,其中第一部分或第一层次用于存储小于或等于第一对象大小的对象,第二部分或第二层次用于存储大于第一对象大小的对象。在步骤453,该方法包括识别高速缓存允许存储到高速缓存232所使用的存储装置或层次的各个部分的对象最大数量。在步骤465,在由高速缓存使用的存储装置大小保持不变的同时,用于对象索引的存储器大小变更或改变为第二大小。在步骤467,高速缓存管理器232保持高速缓存允许存储到预定阈值以下的第一层次或存储装置的第一部分的对象最大数量。在步骤469,高速缓存管理器232响应于存储器大小的改变而变更或保持高速缓存的一个或多个层次的对象大小和对象数量。
进一步详细地,在步骤451和结合图4B的以上描述,设备200或高速缓存管理器232为对象索引410建立存储器122的预定大小。在一个实施例中,将由高速缓存使用的存储器的预定大小与用于对象高速缓存420的存储装置的大小相关或成比例地建立。在一些实施例中,分配到对象索引410的存储器的大小可以表示存储器与由高速缓存使用的存储装置的任何比率。在其他实施例中,高速缓存管理器232根据装置中的可用存储器为对象索引410分配一部分存储器。在一些实施例中,用户或网络管理员确定将由高速缓存232使用的存储器的大小。例如,用户可以配置高速缓存管理器232以使用预定量的存储器。
同样如以上结合图4B的描述,在步骤451,高速缓存管理器232建立由高速缓存使用的第一部分或存储层次以存储小于或等于第一最大对象大小412的对象。高速缓存管理器232还建立由高速缓存使用的第二部分或存储层次以存储大于第一最大对象大小的对象。在一个实施例中,高速缓存管理器232可以建立并保持具有高速缓存232的操作和性能所需的任何对象大小和对象数量的两个、三个或四个或更多的层次。
在步骤453和同样如以上结合图4B的描述,设备200和/或高速缓存管理器232识别或建立高速缓存管理器232允许存储到高速缓存的每个部分或层次的对象数量。在一些实施例中,高速缓存管理器232为高速缓存的多个部分或层次建立最大对象大小412、414、416和最大对象数量413、415、417。
在步骤465,用于或分配到高速缓存和/或对象索引410的存储器大小可以改变。在一个实施例中,用具有较大或较小存储容量的第二存储装置122’代替存储器122。在一些实施例中,将第二存储元件121’添加到装置100以增大可用于用作对象索引410的存储器容量。在另一实施例中,设备200或高速缓存管理器232建立或分配存储器122的较大或较小部分以由高速缓存使用。在一些实施例中,设备200的用户或管理员改变被分配用于对象索引410的存储器大小。在又一实施例中,存储器122的一部分可以被破坏或不能由高速缓存和/或对象索引使用。在这些实施例中,用于对象索引410的存储器容量可以减小。
在一个实施例中,在改变用于对象高速缓存232的存储器大小时,可以保持用于对象高速缓存420的存储装置大小。例如,在步骤451,10MB的对象索引410可以用于20GB的对象存储420。用于对象索引410的存储器122的部分可以增大到20GB但对象高速缓存420的存储装置大小保持在20MB。在另一实施例中,在改变为高速缓存232所建立的部分存储器122的大小时,用于对象高速缓存420的存储装置大小可以减小。例如,用于对象存储420的存储器大小可以从20MB减小到15MB,而用于对象索引410的存储器部分保持不变、增大或减小。
在又一实施例中,用于或分配到对象高速缓存420的存储装置大小可以增大或减小,但不增大或减小到与用于或分配到对象索引410的存储器的增大或减小成相同比例或比率。例如,用于对象索引410的存储器大小可以设置为与用于对象高速缓存420的存储装置大小为1MB与1GB的比率,例如存储器的10MB比存储装置的10GB。用于对象索引410的存储器大小可以双倍为20MB到40MB,而仅仅通过相对较小的比率增大用于对象高速缓存420的存储装置大小,例如到1.2GB。同样,分配到对象索引410的存储器大小可以减少一半为5MB而用于对象高速缓存420的存储装置大小以较高比率减小,例如到250MB。
在步骤467,在一个实施例中,高速缓存管理器232响应于用于对象高速缓存的存储器大小的改变而保持预定阈值以下的最大对象数量412和/或最大对象大小413。在一个实施例中,虽然用于对象索引410的存储器量已改变,但高速缓存管理器232不改变第一层次的最大对象数量413或最大对象大小412。在另一实施例中,高速缓存管理器234还不会响应于高速缓存所使用的存储器的改变而改变用于第二层次的最大对象数量413或最大对象大小414。在一些实施例中,高速缓存管理器232增大或减小对象大小412或对象数量413,但将增大或减小保持在预定阈值内。例如,如果用于对象索引410的存储器以预定量增加,例如20%,则高速缓存管理器232可以以不大于20%来增大用于第一层次的对象大小412或对象数量413。
以这种方式,高速缓存管理器232较好地影响了对象索引和对象存储以便通过更有效地利用存储器来高速缓存对象。在一些实施例中,高速缓存管理器232更有效地利用高速缓存的第二和第三层次而不改变由高速缓存使用的存储装置大小以便与由高速缓存使用的存储装置大小的改变相对应。这样,由于用于对象索引410的存储器大小已增大,因此设备200或高速缓存管理器232就不需要增大用于对象高速缓存430的存储器大小。此外,可以配置相同数量的用于对象高速缓存420的存储器以便支持任何大小的对象索引410或其所用的存储器。在一些情况下,这将降低系统或设备的升级维护和配置。可以在不改变设备或系统上的存储器的情况下添加新的存储器元件或替代存储器。此外,装置可以在保持高速缓存的有效性能或使用的情况下更有效地支持或允许由其他应用程序、系统或资源利用存储器。
在步骤469,高速缓存管理器232可以响应于用于或分配到对象索引410的存储器大小的改变而改变或保持用于任何层次的任何对象大小和对象数量。在一些实施例中,设备200或高速缓存管理器232的用户或管理员可以配置或指定用于每个层次的不同对象大小和对象数量。在一种情况下,用户或管理员可以建立新的层次或移除层次。在其他实施例中,设计并构造高速缓存管理器232,以便根据由高速缓存使用的存储装置大小的改变、每个层次中的当前对象数量和对象大小、剩余的可用内存和/或存储器或诸如访问频率、每个层次的高速缓存命中数量、错过的高速缓存机会数量和并行用户或连接数量的任何操作特性来改变用于各层次的对象大小和对象数量。
现在参考图4D,描述根据对象大小利用多存储层次422-426在高速缓存420中存储对象并将存储到高速缓存的较小对象的数量保持在预定阈值内的方法实施例。简而概括地说,在步骤471,建立用于高速缓存420的存储器大小以存储被高速缓存对象,其中高速缓存420使用用于存储小于或等于第一阈值对象大小412的对象的存储装置的第一部分422和用于存储大于第一阈值对象大小412的对象的存储装置的第二部分424。可以高速缓存420被允许存储到存储器的第一部分422的对象数量413在步骤473确定。在步骤475,高速缓存管理器232接收用于高速缓存的对象。在步骤477,高速缓存管理器232根据对象的大小确定在存储器420的哪个部分,第一部分422还是第二部分424来存储对象。在步骤479,高速缓存管理器232也可以将可以高速缓存420被允许存储到存储器第一部分422的对象数量413保持在预定阈值以下。
进一步详细地说,在步骤471,设备200或高速缓存管理器232建立用于高速缓存420的存储器大小以存储被高速缓存对象。高速缓存232使用存储装置的第一部分422来存储小于或等于第一阈值对象大小412的对象并使用存储装置的第二部分424来存储大于第一阈值对象大小412的对象。在一些实施例中,高速缓存420驻留(reside on)在客户机102上。在其他实施例中,高速缓存420驻留在设备200上。在一个实施例中,将由高速缓存使用的存储器的大小与用于对象索引420的内存的大小相关地或成比例地建立。在一些实施例中,分配给对象高速缓存420的存储器的大小可以表现为内存与由高速缓存所使用的存储器的任意比率。在其他实施例中,高速缓存管理器232根据装置中的可用存储器来分配用于对象高速缓存420的一部分存储器。在一些实施例中,用户或网络管理员确定将由高速缓存232使用的存储器的大小。例如,用户可配置高速缓存管理器232以便使用预定量的存储器。
在步骤473,在一个实施例中,设备或高速缓存管理器还识别高速缓存420被允许存储到存储器第一部分422的对象数量413。如以上结合图4B所述,设备200和/或高速缓存管理器232识别或建立高速缓存管理器232可被允许存储到高速缓存的每个部分或层次的对象数量。在一些实施例中,高速缓存管理器232建立用于高速缓存的多个部分或层次的最大对象大小412、414、416和最大对象数量413、415、417。在一些实施例中,高速缓存管理器232计数存储在存储器第一部分422中的当前对象数量。在其他实施例中,高速缓存管理器232跟踪存储器第一部分422中空闲空间的数量。在一些其他实施例中,设备200响应于存储器第一部分422中存储空间的量来计算存储器第一部分中允许的最大对象数量413。
在步骤475,设备或高速缓存管理器拦截或接收对象用于高速缓存。在一些实施例中,设备从客户机和服务器之间的页面通信拦截对象。在其他实施例中,设备接收来自客户机代理120的对象。在一些实施例中,高速缓存管理器接收来自第二设备200’的对象。在又一些其他实施例中,设备接收来自服务器106的对象。
在步骤477,设备或高速缓存管理器根据对象大小来确定对象高速缓存420的哪个部分或层次存储对象。在一些实施例中,该方法确定对象的大小小于或等于第一阈值对象大小412并将对象存储在对象高速缓存的第一部分422中。在其他实施例中,该方法确定对象的大小大于第一阈值对象大小412并将该对象存储在对象高速缓存的第二部分中。
在步骤479,设备或高速缓存管理器还将高速缓存被允许存储到对象高速缓存第一部分422的对象数量413保持在预定阈值以下。在一些实施例中,高速缓存管理器232确定存储到对象高速缓存第一层次422的对象数量已经达到预定阈值413。在其他实施例中,高速缓存管理器232根据确定存储到存储装置的第一部分422的对象数量已达到预定阈值413而不在高速缓存420中存储所接收的对象。在又一些其他实施例中,高速缓存管理器232根据确定存储到存储装置的第一部分422的对象数量已达到预定阈值413而从高速缓存420中移除先前高速缓存的对象,并将所接收的对象存储在高速缓存420中。
在另一实施例中,设备或高速缓存管理器建立预定大小的存储器第二部分424用于存储大于第一阈值对象大小412的对象。在一些实施例中,设备或高速缓存管理器识别用于在存储器第一部分424中存储对象的第二阈值对象大小。在一些其他实施例中,设备或高速缓存管理器接收用于高速缓存的第二对象,并且,响应于确定第二对象的大小大于第二阈值对象大小并小于第一阈值对象大小412,高速缓存管理器在存储器第一部分422中存储第二对象。在其他实施例中,设备或高速缓存管理器接收用于高速缓存的第二对象,并且,响应于确定第二对象的大小小于第二阈值对象大小,高速缓存管理器不将第二对象存储到高速缓存420。
在另一实施例中,设备或高速缓存管理器建立由高速缓存使用的存储器122的大小以便索引410存储到高速缓存420的存储器的对象。在一些实施例中,高速缓存管理器响应于用于高速缓存232使用的存储器大小的改变而保持用于索引对象的由高速缓存232使用的存储器122的大小。
现在参考图4E,示出了根据对象大小使用多存储器层次将对象存储在高速缓存中并将大于对象阈值大小的对象存储到由高速缓存使用的部分存储器的方法实施例。简而概括地说,在步骤481该方法包括为由高速缓存232使用的存储器第一部分建立预定大小以便存储大于第一阈值对象大小412的对象,高速缓存232将小于第一阈值对象大小412的对象存储到由高速缓存使用的存储器的剩余部分。在步骤483,设备或高速缓存管理器拦截或接收用于高速缓存的对象。在步骤485,高速缓存管理器232确定对象的大小大于第一阈值对象大小412。响应于该确定,在步骤487,高速缓存管理器还将对象存储在存储装置的第一部分或层次。
进一步详细地说,在步骤481,设备或高速缓存管理器为由高速缓存232使用的存储器第一部分建立预定大小以便存储大于第一阈值对象大小412的对象,高速缓存232将小于第一阈值对象大小412的对象存储到由高速缓存422使用的存储器的剩余部分。在一些实施例中,高速缓存管理器将可以高速缓存232被允许存储到存储器的剩余部分的对象数量保持在预定阈值412以下。在一些其他实施例中,高速缓存管理器232确定存储到存储器剩余部分的对象数量已达到预定阈值。高速缓存管理器232不会将小于第一阈值对象大小412的第二接收对象存储到由高速缓存使用的存储器的剩余部分。在一些实施例中,高速缓存管理器建立由高速缓存232使用的存储器大小以便保持对存储到对象高速缓存的对象的索引。在又一些其他实施例中,高速缓存管理器232响应于由高速缓存232使用的存储器第一部分或层次的大小的改变保持由高速缓存使用的存储器的大小以便索引对象。
在另一实施例中,设备或高速缓存管理器为由高速缓存232使用的存储装置的剩余部分建立第二预定大小以便存储小于第一阈值对象大小412的对象。在一些实施例中,高速缓存管理器确定由高速缓存使用的存储装置的第一部分422的可用空间是否处于或接近预定大小。如果由高速缓存232使用的存储装置第一部分的可用空间处于或接近预定大小,则高速缓存管理器可以通过将空间从存储装置剩余部分分配到存储装置第一部分来增大存储装置第一部分的预定大小。
在步骤483,设备或高速缓存管理器接收用于高速缓存的对象。在一些实施例中,设备200接收来自客户机代理120的对象。在其他实施例中,设备200拦截或接收来自服务器106的对象。在另一实施例中,当对象从客户机102到服务器106通信时,设备拦截该对象。在一些其他实施例中,当对象从服务器到客户机通信时,设备拦截该对象。
在步骤485,高速缓存管理器确定对象的大小是否大于第一阈值对象大小412。高速缓存管理器可以从对象的首部信息识别所接收对象的大小。在其他实施例中,高速缓存管理器计算对象的大小。在一个实施例中,高速缓存管理器232估计对象的大小。在另一实施例中,设备200或高速缓存管理器232通过网络堆栈接收对象的大小,例如通过API。高速缓存管理器可以将对象的已定大小与第一阈值对象大小412进行比较。
响应于该确定,在步骤487,如果对象的大小小于第一阈值对象大小,高速缓存管理器则将对象存储在存储器第一部分或层次422。如果高速缓存管理器确定对象的大小大于第一阈值对象大小,则该方法将对象存储在存储装置的第二部分或层次424。
在一个实施例中,高速缓存管理器接收第二对象,并确定第二对象的大小小于第一阈值对象大小412。在一些实施例中,如果空间可用于存储第二对象,则高速缓存管理器将第二对象存储到由高速缓存232使用的存储装置的剩余部分。在其他实施例中,高速缓存管理器确定由高速缓存232使用的存储装置的剩余部分不具有能够存储第二对象的空间。在一些实施例中,高速缓存管理器不将第二对象存储到高速缓存420中。在又一些实施例中,高速缓存管理器从由高速缓存232使用的存储装置剩余部分移除先前高速缓存的对象并将第二对象存储在存储装置剩余部分。
现在参考图4F,描述根据对象大小使用多存储层次来管理存储在高速缓存中的对象的大小的方法实施例。该方法包括分配由高速缓存使用的一部分存储装置用于存储较大对象。简而概括地说,在步骤491,建立由高速缓存232使用的存储器大小以便保持对存储到对象高速缓存的对象的索引410。由高速缓存使用的存储装置具有预定的存储装置大小。在步骤492,高速缓存管理器建立第一预定大小的由高速缓存使用的存储装置的第一部分。在步骤492,高速缓存232使用高速缓存的存储装置的第二部分来存储小于第一阈值对象大小的对象。在步骤495,可以改变或变更由高速缓存232使用的存储器的大小或存储装置大小。在步骤497,高速缓存管理器还响应于由高速缓存使用的存储器大小或存储装置128大小的改变而保持由高速缓存232使用的存储装置第一部分的第一预定大小。
进一步详细地说,在步骤491,设备或高速缓存管理器建立由高速缓存232的使用的存储器的大小以便保持对对象的索引410。对象索引相应于存储到对象存储装置的对象。高速缓存管理器可以根据装置的可用存储器来建立存储器的大小。在一些实施例中,高速缓存管理器可以根据可用于高速缓存的存储装置大小建立存储器的大小。
在步骤493,设备或高速缓存管理器建立用于高速缓存232的存储装置第一部分的第一预定大小,以便存储大于第一阈值对象大小的对象。高速缓存232可以使用第二存储装置来存储小于第一阈值对象大小的对象。在一些实施例中,高速缓存管理器标识被允许存储到存储装置第一部分的高速缓存232的对象数量。
在步骤495,改变由高速缓存232使用的存储器122的大小或存储装置大小。在一些实施例中,改变由高速缓存使用的存储器的大小。在其他实施例中,改变由高速缓存使用的存储装置的大小。在另一实施例中,改变由高速缓存使用的存储装置的大小和存储器大小。
在步骤499,高速缓存管理器还响应于由高速缓存使用的存储器大小或存储装置大小的改变而保持高速缓存232的存储装置第一部分的大小。在一些实施例中,响应于由高速缓存232使用的存储器大小或存储装置大小的改变,高速缓存管理器保持被允许存储到存储装置第一部分的高速缓存232的对象数量。在其他实施例中,响应于由高速缓存232使用的存储器128的大小或存储装置大小的改变,高速缓存管理器232调整第一阈值对象大小。在又一些其他实施例中,高速缓存管理器在保持存储装置第一部分的第一预定大小的同时,调整可以高速缓存232被允许存储到存储装置第二部分的对象数量。在一些其他实施例中,高速缓存管理器响应于高速缓存使用的存储器大小或存储装置大小的改变,而调整可以高速缓存232被允许存储到存储装置第一部分的对象数量。在其他实施例中,高速缓存管理器相对于高速缓存使用的存储器128的大小或存储装置大小的改变量,调整高速缓存232被允许存储到磁盘第二部分的对象数量。
在另一实施例中,高速缓存管理器为高速缓存232被允许存储到存储装置的第二部分的对象建立第二阈值对象大小。第二阈值对象大小可以小于第一阈值对象大小。在一些实施例中,高速缓存420包括为存储小于第二阈值对象大小的对象而建立的存储装置128的第三部分。在其他实施例中,高速缓存管理器响应于高速缓存使用的存储器的大小或存储装置大小的改变而调整第二阈值对象大小。
E.用于在代理连接中提供安全性和可靠性技术的系统和方法
现在参考图5A和5B,描述设备200为代理连接提供安全性和/或可靠性的系统和方法,代理连接例如为传输层连接。在一个实施例中,以上结合自动LAN/WAN检测功能性的描述的使用上述标记的SYN和SYN-ACK分组技术(packet technique)的设备200可以延迟接受代理连接请求,直到收到已经建立连接的确认。在此描述的设备200可以延迟对连接的责任(responsibility)直到接收到服务器的SYN-ACK响应分组和/或已经与请求方建立端到端的连接,而不是一旦从连接的请求方接收初始SYN分组就接受责任而代理或加速传输层连接。这种技术提供了可靠性和安全性的优点。如果服务器将拒绝接受客户请求的连接,则服务器可以拒绝接受来自代表客户机102的设备200的连接。如果服务器不可用于接受客户机的连接请求,则设备不应接受对代理或加速将不建立或不可靠的连接的责任。
这种技术还可以应用于应用级或会话级会话和连接以及高速缓存对象。在一些实施例中,设备200可以延迟代理或加速应用级或会话级连接请求,直到服务器接受应用级或会话级连接和/或端对端的会话已经建立。例如,设备200可以延迟来自加速HTTP应用业务量的协议加速器234,直到已经与网络服务器106建立了HTTP会话为止。
在其他实施例中,设备200可以延迟提供存储在高速缓存232中的对象直到设备200确定提供对象的服务器将为客户提供对象为止。设备200可以通过替代向原始服务器转发请求并等待直到设备2002确定已经发生或将发生对象的成功传输来延迟访问被高速缓存的数据。例如,设备200一旦接收“OK”响应就从高速缓存提供对象。在另一示例中,设备200可以接收“Forbidden”或“Authentication Required”或“Gateway Timeout”或“NotFound”消息并确定不从高速缓存232提供对象。通过这种方式,设备200仅在服务器批准对客户进行传输时才提供对象。并且,如果服务器不可用于提供对象,则此技术防止了设备200提供服务器不可用的对象给服务器。
考虑图5A示图的底部,参考图5B的方法500,描述用于对代理和/或加速连接的责任推迟的技术的实施例。简而概括地说,在步骤505,设备200拦截从客户机102到服务器106的连接请求。在步骤510,设备200识别该连接请求并转发该请求给目的地,例如服务器106。在步骤515,设备200延迟接受对连接的代理和/或加速,直到接收到来自服务器106的响应。在步骤520,设备200根据从服务器106接收的响应来确定是否代理和/或加速连接。在步骤525,如果服务器接受连接或建立了端对端连接,则设备200代理和/或加速此连接。在步骤530,如果服务器未接受连接或未建立端对端连接,则设备200可不代理或加速此连接。
进一步详细地说,在步骤505,设备200可以拦截或接收任何类型和形式的连接或会话请求。虽然在此通常参考连接请求,例如,传输层连接,但连接包括会话层连接或应用层连接,其还可以被称为会话。在一个实施例中,设备200接收从客户机102到服务器106的传输层连接请求。在另一实施例中,设备200拦截或接收客户机102到服务器106的应用层或会话层连接请求。例如,在一个实施例中,设备200拦截到服务器106的ICA或RDP会话请求,例如通过如图2A中所述的应用递送系统290。在另一示例中,设备200拦截到服务器106例如网络服务器的HTTP会话请求。在一些实施例中,设备200对客户机102和/或服务器106透明地拦截连接请求。在一个实施例中,设备200是客户机102和服务器106之间的直接透明代理或透明中介(intermediary)。在其他实施例中,设备200是到客户机102的已知代理且客机102传输该请求到设备200。
在步骤510,设备200将来自客户机102的被拦截信息识别为连接请求。在一些实施例中,设备200确定客户机102已经传输SYN分组以便请求与服务器106的传输层连接。在其他实施例中,设备200根据来自客户机102的网络分组的应用层或会话层来确定客户正在请求与服务器106建立应用会话。在一个实施例中,设备200从网络分组的会话或应用层确定客户机102正在请求与服务器106的ICA或RDP会话。在另一实施例中,设备从网络分组的会话层确定客户机102正在请求与服务器的加密套接字协议层(SSL)或传输层安全性(TLS)的会话。在又一实施例中,设备200从网络分组的应用层确定客户102正在请求与HTTP服务器建立基于HTTP的会话。
在步骤515,设备200对请求或请求的连接延迟进行设备的任何代理或加速功能。设备200将所拦截的通信转发到所要的目的地或服务器106。设备200可以追踪请求和/或以任何类型和形式的数据结构或表例如连接表建立被请求的连接。在一些实施例中,设备200追踪是否从服务器106接收到对所转发请求的响应。例如,在一些实施例中,服务器106可以当机(down)且请求超时。
在一个实施例中,设备200仅对来自用户或客户机的第一连接请求延迟代理和/或加速连接请求。在其他实施例中,设备200对来自用户或客户机的每个连接请求都延迟代理和/或加速连接。在又一些其他实施例中,如果从客户机或用户接收的请求之前尚未请求过连接,则设备延迟接受用于代理或加速的连接。在又一些实施例中,如果从相同用户或客户机或者不同用户或客户机接收的请求超出了先前连接请求的预定时间阈值,则设备延迟代理或加速该连接。在又一实施例中,一旦检测到安全性或可靠性问题,设备就延迟代理或加速由该设备先前代理或加速的客户机和服务器之间的连接请求。例如,设备200可以检测服务器106在连接请求之间的时间不可用。在另一示例中,设备200可能已经检测到从相同客户机或另一客户机到服务器的安全性缺口或破坏。
在步骤520,设备200根据从服务器106接收的响应来确定是否代理和/或加速连接。在一个实施例中,设备200从服务器接收表示服务器接受或已经接受客户机连接请求的响应。例如,在传输层连接请求的情况下,设备200接收或拦截由服务器106传输到客户机102的SYN-ACK分组。在另一示例中,设备200接收或拦截响应于会话请求的HTTP OK消息。在又一示例中,设备200接收或拦截客户机和服务器之间的多事物交换中的下一个所期望的响应,例如对于SSL。在一些实施例中,设备200拦截来自客户机的服务器对客户机的连接请求的响应的响应。在一个实施例中,只有在客户机102接受了针对客户的连接请求的服务器响应的情况下,设备200才确定接受该连接的责任。
在一些实施例中,设备200从服务器106接收服务器不接受连接的响应。在一个实施例中,设备200接收表示存在连接请求错误的信息。在另一实施例中,设备200从服务器106接收表示服务器106不批准来自客户机102或客户机102的用户的连接的信息。在一些实施例中,设备200从服务器106接收信息,该信息表示服务器要求在建立连接之前鉴定客户机或客户机102的用户。在又一实施例中,设备200接收信息,该信息表示服务器106太忙而不能接受连接、已经达到最大连接数量或类似地不能允许任何更多连接。
在又一些实施例中,设备200接收网络分组或表示到服务器的请求已经超时的信息。在另一实施例中,设备200接收网络分组或表示服务器不可到达或不可路由(routable)的信息。在又一实施例中,设备200不接收来自服务器的对请求的任何响应。在一个实施例中,设备200确定到服务器的请求未在预定时间阈值内由服务器做出响应,由此识别出服务器处于当机或其他类似不可用。
如果设备200接收到连接或会话已被服务器接受或已经在客户机和服务器之间建立端对端连接或会话的指示,则,在步骤525,在一个实施例中,设备200接受代理连接的责任。在一些实施例中,设备200确定对连接执行任何加速或代理技术。例如,设备200可以进行在此描述的流控制、传输控制协议优化、加速、压缩和/或高速缓存技术中的任何一种。在其他实施例中,在接收服务器接受连接或会话或检测到已经建立端对端连接或会话之前,设备200可以进行多个技术中的第一一个或更多代理或加速技术。然后,一旦检测到连接或会话的接受或建立,设备200就可以进行该多个技术中的第二组一个或多个其他代理或加速技术。
如果设备200接收到连接或会话未被服务器接受的指示或未在客户机和服务器之间建立端对端连接或会话的指示,则在步骤530,设备200可以确定不接受客户机和服务器106之间代理连接或会话的责任。在一些实施例中,设备200透明地继续在客户机和服务器之间拦截并转发通信,而不对所拦截的通信进行任何功能性。在一个实施例中,设备200可以对连接或会话进行第一一个或多个代理或加速技术,直到从服务器接收到服务器不接受连接或会话为止。在响应方面,设备200可以停止进行第一组一个或多个代理/加速技术或者确定不进行任何附加代理或加速技术。
现在考虑图5A的顶部图,参考图5B的方法,描述用于延迟提供被高速缓存对象直到从服务器可以确定提供该对象的安全性和/或可靠性的技术的实施例。简而概括地说,在步骤555,设备200拦截或类似地接收从客户机102到服务器106的对对象的请求。在步骤560,设备200确定对象存储在高速缓存中,例如设备的高速缓存232。在步骤565,设备200延迟从高速缓存提供对象直到接收到由设备转发到服务器106的对象的响应。在步骤570,设备200根据从服务器106接收的响应来确定是否从高速缓存提供对象。在步骤575,设备200确定对客户提供被高速缓存对象。在步骤580,设备200确定不从高速缓存提供对象。
进一步详细地说,在步骤555,设备200可以拦截或接收来自服务器的对对象的任何类型和形式的请求。在一个实施例中,设备200拦截传输层网络分组,其具有识别对对象的请求的净荷(payload)。在另一实施例中,设备200拦截应用层网络业务量并识别对应用层数据中对象的请求。例如,在一些实施例中,设备200拦截网络分组并确定网络分组包括对对象的HTTP请求。在其他实施例中,设备200可以从客户机102接收对高速缓存中的对象的请求,例如设备200的高速缓存232。
在步骤560,设备200确定被请求识别的对象存储在高速缓存中。在一个实施例中,设备200识别、解析、提取或确定该请求的对象的名称或标识符,例如请求的统一资源定位符。在一些实施例中,设备200利用包括对象名称或标识符的无用数据的索引来确定对象是否存在于高速缓存中。在一个实施例中,高速缓存索引可以保持在存储器中而被高速缓存对象存储在设备200的磁盘上。在其他实施例中,高速缓存管理器232通过查询或高速缓存管理器用于追踪高速缓存中对象的位置或存在的任何其他方式确定对象是否存在于高速缓存中。在一些实施例中,高速缓存232驻留在设备200上。在其他实施例中,高速缓存232位于另一装置100上,例如设备200’、205或服务器106。在又一些实施例中,设备200可以将信息或请求传输到设备或另一装置100上的高速缓存管理器以便确定对象是否存在或位于高速缓存中。
在步骤565,设备200延迟从高速缓存提供对象,直到接收到由设备转发到服务器106的对象的响应。在一个实施例中,虽然对象位于高速缓存中,设备200仍将对对象的请求转发到所要的目的地或服务器106。在一些实施例中,在提供位于高速缓存中的对象之前或在决定提供在高速缓存中找到的对象之前,设备200等待来自服务器的对该请求的响应。在另一实施例中,设备200不转发客户机的请求而是产生对对象状态、对象的首部信息对对象的条件请求的第二请求或分组。在又一些实施例中,设备200产生第二请求或分组以确定服务器是否可用、可到达或者能够提供对象。
在一些实施例中,设备200仅对来自用户或客户机对对象的第一请求延迟从高速缓存提供对象。在其他实施例中,设备200对用户或客户机的每个请求都延迟提供被高速缓存的对象。在又一些实施例中,设备仅在从未在之前请求过对象的客户机或用户接收到的请求时才延迟提供被高速缓存的对象。在又一些实施例中,如果在对对象的先前请求的预定时间阈值期满之后从相同用户或客户机或者不同用户或客户机接收请求,则设备延迟提供被高速缓存的对象。在又一实施例中,如果设备检测或已经检测到安全性或可靠性问题,则设备延迟将被高速缓存的对象提供给客户机,设备之前将相同对象或在请求不同对象时的请求提供给该客户机。例如,如果设备已经检测到服务器106在对象请求之间的时间内是不可用的,设备200则可以延迟提供被高速缓存的对象。在另一示例中,如果设备已经从相同客户或另一客户检测到安全性缺口或对服务器的破坏,设备200则可以延迟提供被高速缓存的对象。
在步骤570,设备200根据从服务器106接收的响应来确定是否从高速缓存提供对象。如果服务器提供的响应表示服务器将把对象传输到客户、服务器可用于提供对象或者批准或允许客户机或客户机的用户接收对象,则在步骤575,设备200响应于客户机的请求而从高速缓存提供对象。如果服务器未提供响应或者响应表示服务器不可用、服务器不会将对象传输给客户或者服务器不允许或批准客户机或客户机的用户接收对象,则在步骤580,设备200不会响应于客户机的请求而从高速缓存提供对象。
在步骤575的一个实施例中,设备200接收将对象传输到客户机的一部分,该部分表示服务器正在将对象传送到客户机。一旦接收或拦截到传输的此部分,设备200就可以通过存储在高速缓存中的对象对客户机请求作出响应。在一些实施例中,一旦拦截或接收HTTP对象请求的HTTP对象传输的HTTP OK指示符,设备200就利用存储在高速缓存中的对象而不是在当前正由设备200接收对象传送对客户机请求的响应。例如,网络优化引擎250的协议加速器234可以是知道识别对象的HTTP传输的HTTP,包括任何导引首部或状态信息。在另一实施例中,设备200等待对象从要被拦截的服务器或者要被设备200接收的服务器的完整传输。例如,在对对象的第二请求或预定时间阈值之后的对对象的请求时,设备200等待对象的完整传输。在一个实施例中,一旦由设备接收对象的完整或成功传输,设备200则带有被高速缓存对象对客户请求作出响应。在一些实施例中,设备200通过从服务器106接收的对象对客户请求作出响应。在另一实施例中,设备200带有被高速缓存对象对客户请求作出响应并根据从服务器接收的对象更新被高速缓存的对象。
在一些实施例中,设备200接收表示在网络上服务器可用或服务器可到达的响应。一旦接收这种响应,设备200在一个实施例中就响应于客户机请求而从高速缓存提供对象。在另一实施例中,设备200可以接收响应,该响应来自对对象未改变的对象的条件性请求。一旦接收这种响应,在另一实施例中,设备200带有被高速缓存对象传送对客户机请求的响应。在一些实施例中,设备200可以接收来自对对象已改变的对象的条件性请求的响应且该响应包括对象的更新版本。一旦接收这种响应,在其他实施例中,设备200可带有被高速缓存的对象或带有更新版本的对象传输对客户机请求的响应。在又一些实施例中,设备200可以转发服务器的响应到客户机而没有被高速缓存对象。在又一些实施例中,设备200带有被高速缓存对象将服务器的响应转发到客户机。
在步骤580,设备200确定不从高速缓存提供对象。在一个实施例中,服务器106传输不允许或批准客户机或客户机的用户接收对象的响应。在一些实施例中,服务器传输客户机或客户机的用户在接收对象前要求鉴权的响应。在一些实施例中,服务器106传输服务器不再具有对象或对象不再有效的响应。在又一些实施例中,服务器106不发送响应或者设备200确定用于对象或对象状态的对服务器的请求已超时。在另一实施例中,设备200接收表示服务器不可用或不可到达的响应。在其他实施例中,设备200接收表示服务器太忙而不提供对象或服务器在此时正不接受任何更多请求的响应。在任一这些实施例中,设备200可以选择不响应于客户请求而从高速缓存提供对象。在一些实施例中,设备200将服务器响应而不是来自高速缓存的对象转发到客户机102。在一个实施例中,设备200通过高速缓存管理器232从高速缓存移除对象。在另一实施例中,设备200通过高速缓存管理器232终止(expires)高速缓存中的对象。
上述方法500和550的任何技术或其一些部分可以在同一设备200中一起执行或者在彼此结合或共同操作多个设备中一起执行。在一些情况下,一个设备200进行方法500,而第二设备200’进行方法550。
此外,方法500或方法550中代理或加速连接或者用于高速缓存对象的确定可以通过设备200或服务器106的策略引擎295的一个或多个策略来识别、规定或配置。例如,策略引擎295可以规定服务器响应的类型或内容或者用于设备200应代理或加速连接或提供被高速缓存对象的其他条件。
在又一些实施例中,基于来自任何端点检测和批准的信息根据方法500和550的技术,设备200可以对代理、加速或高速缓存作出确定。例如,如结合图3所描述的,收集代理302、或客户机代理102可以传输标识客户机102的状态、条件、操作、属性、外形或特性的各种信息。基于这种端点检测信息根据方法500和550的技术,设备200可以确定何时以及如何延迟和接受代理或加速连接,或者何时以及如何延迟和提供被高速缓存对象。此外,设备200可以使用策略和端点检测信息的结合来确定何时以及如何延迟和接受代理和/或加速连接或者何时以及如何延迟和提供被高速缓存对象。
F.进行被高速缓存对象的并行再生效(parallel revalidation)的系统和 方法
现在参考图6A和6B,描述用于进行称为并行再生效技术的系统和方法。这种并行再生效技术使虽然对象对服务器来说已过时但在其刷新周期(freshness period)还未期满时提供高速缓存中被认为是新的过时数据的问题最小化。当针对客户请求而提供被高速缓存的对象时,高速缓存不会意识到对象对于创始服务器来说已经改变了。高速缓存会在刷新周期未期满时多次提供对象。通过在此描述的并行再生效技术,高速缓存通过初始(originating)服务器使对象再生效并行地响应于请求而提供被高速缓存对象。例如,如果高速缓存中的对象仍然被认为是新的,则高速缓存立刻向客户机提供对象,但是,并行地,高速缓存还传输一个条件性请求到服务器。如果对象毕竟已经改变,高速缓存响应于条件性请求而获得更新的备份,并且未来的对象请求将得到高速缓存中已更新的对象。否则,你得到报告其还未被修改的响应。
图6A示出了基于提供并再生效高速缓存中对象的系统的设备的示例性实施例。虽然这种技术通常将参考设备200的高速缓存来描述,但结合图6B所描述的这种技术可以由具有高速缓存的任何装置,例如客户机102或其他中间装置,例如装置205来进行。
现在参考图6B,描述并行再生效方法600的实施例。简而概括地说,在步骤605,设备200拦截或接收来自客户机102的对对象的请求。在步骤610,设备200识别请求的对象并确定对象位于高速缓存232中。在步骤615,设备200响应于该确定将被高速缓存对象传输到客户机。在步骤620,同样是响应于该确定,设备从初始服务器传输对对象状态的请求。设备可以在步骤615提供对象并在步骤620基本相互同时传输请求。在步骤625,设备200从服务器接收对象的状态或对象的更新备份。根据来自服务器的响应,设备200相应地更新高速缓存。如果对象已经改变,设备200则将已更新的对象存储到高速缓存232。
进一步详细地说,在步骤605,设备200拦截或接收来自客户机102的对对象的任何类型和形式的请求。在一个实施例中,设备200通过应用层协议拦截对对象的请求。例如,在一些实施例中,设备200通过HTTP协议拦截对象请求。在一个实施例中,网络优化引擎250的协议加速器234是知道并识别来自客户机102的HTTP上的对象请求的HTTP。在又一实施例中,客户机通过传输层连接请求来自设备200或高速缓存232的对象。
在步骤610,设备200确定该请求所识别的对象存储在高速缓存中。在一个实施例中,设备200识别、解析、提取或确定请求的对象的名称或标识符,例如请求的统一资源定位符。在一些实施例中,设备200利用包括对象名称或标识符的哈希的索引来确定对象是否存在于高速缓存中。在一个实施例中,高速缓存索引可以保持在存储器中而被高速缓存对象存储在设备200的磁盘上。在其他实施例中,高速缓存管理器232通过查询或高速缓存管理器232用于追踪高速缓存中对象位置或存在的任何其他方式来确定对象是否存在于高速缓存中。在一些实施例中,高速缓存232驻留在设备200上。在其他实施例中,高速缓存232位于另一装置100上,例如设备200’、205或服务器106。在又一些实施例中,设备200可以传输信息或请求到设备或另一装置100上的高速缓存管理器以确定对象是否存在于或位于高速缓存中。
根据确定对象存在于或位于高速缓存中,设备在步骤615和步骤620响应于客户机的请求而将被高速缓存对象传输到客户102机,并从初始服务器传输对对象状态的请求。在一个实施例中,设备在步骤615提供对象并在步骤620基本同时或彼此共同存在地传输对对象状态的请求。在另一实施例中,设备在步骤615提供对象并彼此并行地在步骤620传输对对象状态的请求。在其他实施例中,在步骤615向客户机提供被高速缓存对象之前,设备在步骤620传输对对象状态的请求。在一个实施例中,设备在步骤620传输对对象状态的请求之前,在步骤615向客户提供被高速缓存对象。
在一些实施例中,在可执行指令从高速缓存提供对象到客户机102之前或之后,设备200执行代码或可执行指令,该代码或可执行指令用于将马上被执行的对象的状态请求传输到服务器。在其他实施例中,用于将被高速缓存对象提供到客户102机的可执行指令在单独的进程、服务、驱动器、任务或线程中执行并且与用于从服务器请求对象状态的进程、服务、驱动器、任务或线程中的可执行指令同时或共同存在地进行。在一些实施例中,在步骤615将被高速缓存对象传输到客户机发生在步骤620的向服务器传输对对象状态的请求的预定时间周期内,反之亦然。预定时间周期由设备配置或设置。在一些实施例中,预定时间周期可以以毫秒范围内设置或根据数据分组处理引擎的分组处理定时器来设置。例如,预定时间周期可以是1ms、2ms、3ms、4ms、5ms、10ms、25ms、50ms或100ms。在其他示例中,预定时间周期可以是1ms和1秒之间的任何值。
在一些实施例中,设备200在步骤620传输对象的状态。在一个实施例中,设备200通过应用层协议例如HTTP传输请求。在其他实施例中,设备200传输对象的条件性取得指令(conditional get)。例如,设备200传输条件性HTTP取得请求。在又一实施例中,设备200传输请求以便从服务器106获得对象的当前版本。在一个实施例中,设备200向服务器转发被设备拦截的客户机请求。
在步骤625,设备200从服务器接收对象的状态或对象的已更新备份。在一个实施例中,设备200接收对象未改变的状态。在另一实施例中,设备200接收对象已改变的状态。在一些实施例中,状态表示对象版本的标识符。在其他实施例中,设备200接收对象的已更新备份。在又一实施例中,设备200接收对象已改变的那些部分而不是对象的整个更新备份。根据来自服务器的响应,设备200相应地更新高速缓存。如果对象已经改变,设备200则向高速缓存232存储更新的对象或对象的变化。在一些实施例中,设备200更新高速缓存232中对象的版本信息。在另一实施例中,设备200更新被高速缓存对象的满期周期。在其他实施例中,设备200例如通过高速缓存管理器232更新高速缓存中对象的状态以表明对象是新的或最新的。
在一个实施例中,在与对对象的第一请求提供被高速缓存对象并行使被高速缓存对象再生效时,设备200接收来自相同客户机102或不同客户机102’对对象的第二请求。在一些实施例中,设备200响应于第二请求而进行步骤620的第二再生效。在其他实施例中,设备200意识到对象第一请求的再生效刚刚发生或正在发生,而不响应于第二请求向服务器传输对对象状态的请求。在另一实施例中,设备200响应于第二请求确定被高速缓存对象满期的剩余时间在预定阈值内并对该确定做出响应,设备200不传输对对象状态的请求。在一些实施例中,设备200响应于第二请求而确定被高速缓存对象满期的剩余时间超出预定阈值并对该确定做出响应,设备200传输对对象状态的请求。在又一实施例中,设备200响应于第一请求在步骤625提供从服务器接收的对象并响应于第二请求将所接收的对象提供给客户机。
如上所述,虽然通常参考设备200进行描述,但方法600的技术可以在任何装置上进行。在一个实施例中,结合图3在此讨论的具有网络优化引擎250的客户机代理120可以进行方法600的技术。在其他实施例中,方法600的技术可以在客户机和服务器之间网路中的任何装置上进行,包括客户机或服务器或第二设备200’或205’。在一些实施例中,高速缓存管理功能可以驻留在第一装置,例如客户机102或设备200,而存储对象的高速缓存驻留在第二装置,例如服务器106或第二设备200’或205’。
此外,设备200可以根据策略引擎295的一个或多个策略来确定哪个对象进行并行再生效。策略根据以下的一个或多个来识别对象以提供和再生效:1)对象的大小;2)对象的类型或标识符;3)请求对象的客户机或客户机的任何属性或特性;4)初始产生对象的服务器或服务器的任何属性或特性;5)用户或用户组;6)被高速缓存对象的剩余时间周期;以及7)对象更新的频率。
G.对预刷新/预取对象提供推测性QoS的系统和方法
现在参考图7A和7B,描述用于对对象的推测性预取提供服务质量(QoS)的技术的系统和方法。当在此描述的设备200具有确定网络连接的链接速度以及分配带宽和实时控制网络业务量的流的能力时就在为预取提供QoS方面提供了优势。由于推测性请求与从客户机到服务器的真实请求或其他请求竞争,因此在此描述的技术提供了用于预取对象的机制以便更好地利用空闲带宽并减少与非预取请求的网络连接。该技术标记、解码或识别预取请求为推测性的,以便设备以比其他请求更低的优先级并在空闲带宽可用时传输该请求。
现在参考图7A,描述具有网络优化引擎250的设备200。简而概括地说,设备200拦截或接收通信,例如从初始(originating)服务器106提供或通过其他设备200’传输的页面,并将该页面转发到请求客户机。被拦截的页面可以识别一个或多个对象,例如通过统一资源定位符或超链接。设备通过预取器704产生推测性请求750以便从远程服务器106获得对象。该请求可以被认为是预取,预取是接收页面的用户还没有请求被页面识别的对象,但设备200预料到会从用户拦截该对象的请求而请求该对象。该请求被标记为推测性的以便对传输器或该设备表明该请求具有比非推测性请求更低的传输优先级。设备200包括带宽探测器704,其检测设备200的一个或多个网络连接的空闲或可用带宽。响应于带宽探测器702检测的带宽可用性,预取器704传输推测性请求以便对初始服务器106预取对象。在一些实施例中,图7A中所述的设备200用于加速应用协议层的业务量,例如HTTP业务量。
网络优化引擎250或其任何部分,例如协议加速器234,可以包括带宽探测器702。带宽探测器702可以包括软件、硬件或软件和硬件的任何组合。带宽探测器702可以包括应用、程序、脚本、库、进程、服务、驱动器、任务、线程或任何类型和形式的可执行指令。带宽探测器702包括或提供用于为一个或多个网络链接或连接确定网络带宽的可用性、空闲或利用性的逻辑、商务规则、功能或操作。在一个实施例中,带宽探测器702测量到服务器106的往返行程或响应时间。在其他实施例中,带宽探测器702确定等待将被传输的队列上的分组数量。在一些实施例中,带宽探测器702检测网络数据分组队列从空到非空的转换,反之亦然。
在又一些实施例中,带宽探测器702测量设备的端口或网络连接的利用性。在另一实施例中,带宽探测器702确定有效连接、有效用户或并行连接的数量。在一些实施例中,带宽探测器702检测等待响应的未解决请求的数量。根据队列中的分组数量、队列空或状态转换、服务器响应时间、到和自服务器的往返次数、并行连接的数量、并行用户的数量、CPU的操作状态、设备200的端口和存储器利用,带宽探测器702可以确定带宽可用于较低优先级的请求,例如推测性预取请求750。
网络优化引擎250或其任何部分,例如协议加速器234,可以包括预取器704。预取器704可以包括软件、硬件或软件和硬件的任何组合。预取器704可以包括应用、程序、脚本、库、进程、服务、驱动器、任务、线程或任何类型和形式的可执行指令。预取器704包括或提供用于产生请求或用于请求的一个或多个数据分组的逻辑、商务规则、功能或操作。在一个实施例中,预取器为请求或响应产生一个或多个标识为推测性的数据分组。在一些实施例中,预取器704产生预取被识别对象的请求,例如由所拦截的页面所识别的对象,并起动所产生的请求到服务器106的传输。在一个实施例中,预取器704产生用于预刷新标识在高速缓存232中的对象的请求。在一些实施例中,预取器704产生标识为推测性的或具有低于非预取请求的QoS优先级的请求750。在一些实施例中,预取器704接收对预取请求的响应并将响应的对象存储到高速缓存232。在一些实施例中,预取器704接收对请求的响应产生标识为推测性的响应752。在另一实施例中,预取器704修改一个或多个响应分组以便将响应752标记或标识为推测性的。
预取器704产生推测性请求,例如请求750,利用任何类型和形式的编码方案将请求标记或标识为推测性的或将该一个或多个请求分组标识为具有低优先级。在一个实施例中,预取器704编码传输协议层首部的选项字段的值,例如具有预定值的传输控制协议(TCP)首部。预定值对分组的传输器识别该分组是推测性的。在一些实施例中,预取器704可以结合自动WAN/LAN端口检测技术标记上述任何传输层数据分组。这样,在这些实施例中,可以对连接进行标记以便处理推测性请求和/或响应,或者数据分组可被标记为推测性请求或响应。在另一实施例中,预取器704编码具有预定值的互联网协议或网络层首部例如IP首部的选项字段的值,。在一些实施例中,预取器704编码TCP或IP选项中的值、或IP首部或网络数据分组的标识字段中的值。在又一些实施例中,预取器704可以产生设置为预定值的具有任何服务类型(TOS)字段或差分服务代码点(DSCP)字段的响应或请求分组。在一些实施例中,由预取器704编码的预定值标识低优先级传输请求。在另一实施例中,预取器704编码任何可选应用协议层首部、字段或参数中的值,以标识请求或响应的推测性优先级。
在一些实施例中,网络优化引擎250根据传输进度表或优先级通过预取器704、流控制器238和/或QoS引擎236传输标识为推测性的请求和/或响应。在这些实施例中,网络优化引擎250在预定阈值或水平内以保持带宽利用的传输率或速度传输推测性请求或响应。网络优化引擎240可以以利用未用带宽或可用带宽的传输速率或进度表来传输推测性请求或响应。在这种方式中,推测性网络分组被传输以便使传输不减小可用于非推测性请求和响应的带宽。在一些实施例中,网络优化引擎250传输推测性请求或响应以便使传输不减小非推测性请求和响应的往返行程时间,或者使这种减小最小化。在其他实施例中,网络优化引擎250一旦检测到没有任何非推测性请求或响应要传输就传输推测性请求或响应。在另一实施例中,网络优化引擎250一旦检测到要传输的非推测性请求或响应的数量在预定阈值内,就传输推测性请求或响应。在又一实施例中,网络优化引擎250在传输非推测性请求和响应之间的任何空闲时间都传输推测性请求或响应。
在其他实施例中,带宽探测器702和/或预取器704保持、更新或访问连接或状态表703。连接或状态表703可以包括任何类型的数据结构、对象、文件或用于存储、追踪和获得与连接状态相关信息的数据库。在一个实施例中,带宽探测器702和/或预取器704利用连接状态表703来保持以下事项之一或多个:空闲可用性的状态、连接的带宽利用性、等待要被响应或传输的非推测性请求和/或响应的数量、等待要被传输或响应的推测性请求和/或响应的数量、将被设备传输的任何网络分组的优先级、端口或网络连接的类型和速度、任何共同操作或合作设备,装置或客户机的标识、以及设备200或装置100的任何其他操作条件或设备200或装置100的连接。
现在参考图7B,描述利用推测性QoS方案预取请求的方法700的步骤实施例。简而概括地说,在步骤705,设备200拦截或接收由服务器106传输到客户机102的页面。页面包括一个或多个对象的标识符。设备200转发所拦截的页面到客户机102。在步骤710,设备识别对象并对对象产生到远程服务器的请求分组。设备200将所产生的请求编码为推测性请求。在步骤715,设备确定空闲网络带宽的可用性以便将所产生的请求分组传输到服务器106。在步骤720,设备200响应于可用空闲带宽的检测而将所产生的请求分组传输到服务器106。在步骤725,设备接收来自服务器106的预取对象并将对象存储到高速缓存232。
进一步详细地说,在步骤705,设备200拦截或接收标识对象的从一个装置到另一装置的任何类型和形式的通信,例如从服务器到客户机。在一个实施例中,设备200拦截来自服务器的对对象的客户机请求做出的响应。在一些实施例中,服务器106传输一个或多个具有用于识别对象的应用协议层净荷的网络分组。例如,在一个实施例中,设备200拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括统一资源定位符(URL)或识别对象的超链接。在一个实施例中,网络优化引擎250的协议加速器234是知道HTTP的并识别由服务器105传输的HTTP内容中的对象标识符。在又一实施例中,设备200响应于客户请求通过识别对象的传输层连接来拦截HTTP首部信息。在又一些实施例中,设备200拦截来自服务器的用于识别对象的对象状态的响应。在又一些实施例中,设备200拦截被另一设备拦截并转发的客户机和服务器之间的通信。
在步骤710,设备200或预取器704响应于对象的识别而产生请求以便从对象服务器106例如页面的初始服务器获得对象。在一些实施例中,预取器704检查或试图定位高速缓存232中的被识别对象。在一个实施例中,预取器704不定位高速缓存232中的对象,或者确定对象不存在于高速缓存232中。在这些实施例中,由于设备或客户机先前未获得对象,因此预取器704对对象产生的请求被称为预取。在另一方面,请求被称为预取,其中接收页面的客户机的用户还没有请求来自页面的对象。
在其他实施例中,预取器704定位高速缓存232中的对象。在这些实施例中,预取器704产生被称为预刷新请求的对对象的请求,这是因为对象位于高速缓存中但设备在被高速缓存对象期满前从服务器请求状态或对对象更新。如上所述,预取器704可以通过各种方式将所产生的请求识别或编码为推测性的,这些方式包括但不限于在IP首部字段、IP首部选项、传输层首部选项字段或应用层协议的字段中编码预定优先级值。在一个实施例中,预取器702可以识别或设置连接状态表703中的推测性请求的优先级。
在步骤715,设备200的带宽探测器702检测、确定或识别用于传输推测性请求的带宽的可用性。在一个实施例中,带宽探测器702检测数据分组队列从非空到空的转换。在一些实施例中,带宽探测器702确定较高优先级分组队列处于预定阈值以下。在一个实施例中,带宽探测器702检测在确定点处不存在非推测性请求分组传输。在又一些其他实施例中,带宽探测器702确定到请求分组目的地的网络业务量的水平处于预定阈值以下。在一个实施例中,带宽探测器702确定从服务器106到设备200或客户102没有未解决的响应。
在又一些实施例中,带宽探测器702确定来自服务器的响应次数在预定阈值以下。在一些实施例中,带宽探测器702确定将被传输到服务器的队列中的数据分组数量在预定阈值以下。在又一些实施例中,带宽探测器702测量带宽利用性并确定带宽利用性在预定阈值内。在又一些实施例中,带宽探测器702确定网络条件适于传输推测性请求或确定发送推测性请求而可以对非推测性请求有可忽略的影响。在一个实施例中,带宽探测器702检查带宽利用性的状态、连接状态和/或通过连接传输的数据分组状态以确定网络条件是否处于传输推测性请求的状态。
128.1在步骤720,设备200响应于可用空闲带宽的检测将所产生的请求传输到服务器106。在一个实施例中,设备200将所产生的请求传输到服务器106。在一些实施例中,设备200从等待传输的推测性请求队列获得所产生的请求。例如,队列可以是FIFO(先进先出)或LIFO(后进先出)队列。在一些实施例中,设备200将多个所产生的请求传输到服务器106。例如,预取器704可以产生多个对由一个或多个被拦截页面识别为最初来自服务器106的对象请求。在又一些实施例中,设备200将第一推测性请求750传输到第一服务器106A,并将第二推测性请求750’传输到第二服务器106B。在一个实施例中,设备200以它们被产生的顺序传输推测性请求。
进一步描述步骤720,设备200或网络优化引擎250以一传输速率或进度表传输推测性请求以便将带宽的利用保持在预定阈值或水平内。在一个实施例中,网络优化引擎250一旦通过带宽探测器702检测到带宽利用在预定水平内就传输推测性请求。在另一实施例中,网络优化引擎250一旦确定将传输的或位于传输队列中的非推测性请求的数量在预定阈值以下就传输推测性请求。在一些实施例中,网络优化引擎250在非推测性请求传输之间可用的任何空闲时间期间传输推测性请求。在其他实施例中,网络优化引擎250传输推测性请求以便使推测性请求的带宽利用保持在预定水平内。在一些实施例中,网络优化引擎250传输推测性请求以便使非推测性请求或响应的往返行程次数保持在预定水平。
在步骤725,设备200从服务器106接收通过推测性请求所请求的对象。在一个实施例中,预取推测性请求且设备200或预取器702将对象存储在高速缓存232中。在另一实施例中,推测性请求是预刷新请求且设备200或预取器702用新版本的对象更新存储在高速缓存232中的对象。
上述技术可以应用在任何装置上——客户机、设备或服务器。在一些实施例中,上述预取装置可以应用在网络连接的客户机侧上,例如WAN链接的客户机侧上。在其他实施例中,上述预取装置可以应用在网络连接的服务器侧,例如WAN的服务器侧。在一些实施例中,设备200可以具有到不稳定的(unpaced)快速侧或LAN连接的连接和到稳定的(paced)慢速侧或WAN连接的连接。在一个实施例中,客户机侧上的装置协调(pace)进入的WAN数据而不是输出的LAN数据。在另一实施例中,服务器侧上的装置协调输出的WAN数据而不是进入的LAN数据。
在一些实施例中,产生到服务器的推测性请求的技术完成来自服务器的响应752。也就是说,在一个实施例中,通过将请求识别为推测性的,来识别对该请求的响应752并以与推测性指定相关的QoS优先级处理。在一个实施例中,将服务器的响应识别为推测性的通过共同操作的或合作设备或装置来处理。例如,如图1A-1C所示,第一设备200可以结合第二设备200’来操作。在一个实施例中,第一设备200可以应用于网络连接的WAN或客户机侧而第二设备200’应用于连接的LAN侧上或服务器侧上。并且,如这里所讨论的,第一设备200可以结合应用于客户机102和/或服务器106上的网络优化引擎250来操作。
通过示例并参考图7C,描述双设备应用或客户机102或第一设备200’上第一网络优化引擎250与第二设备200’或服务器106上的第二网络优化引擎250’的应用。例如,第一装置(客户机102或设备200)可以在WAN的客户机侧上,其中第一装置控制传输流或协调来自WAN的输入数据,例如从第二装置接收的WAN数据。第一装置可以将LAN数据以不稳定(unpaced)的方式传输到第二装置。第二装置(设备200或200’)可以在WAN的服务器侧上,其中第二装置控制传输流或协调到第一装置的输出的WAN数据。第二装置可以将LAN数据以不稳定的方式传输到服务器。
简而概括地说,诸如设备200或客户机102的第一装置拦截或接收由服务器提供的页面并识别页面中的对象标识符。第一装置可以将页面转发给客户机或请求该页面的客户机上的应用程序。第一装置产生推测性请求以便从服务器预取与对象标识符对应的对象。第一装置可以将推测性请求分组根据传输率传输到服务器以便将带宽的利用保持在预定水平内。诸如设备200’或服务器106的第二装置拦截第一装置的推测性请求。第二装置将该请求识别为推测性的并将该请求转发给初始服务器106。一旦从服务器接收到响应,第二装置就将该响应识别为推测性的或产生推测性响应。一旦检测到空闲网络带宽是可用的,第二装置可以将响应根据传输率传输到客户机102或设备200以便将带宽的利用保持在预定水平内。第一和第二装置可以响应于由带宽探测器检测的空闲网络带宽的可用性而传输推测性请求和响应,带宽探测器位于请求和/或响应的接收或发送侧上,或二者。
现在参考图7D,描述装置之间推测性响应处理技术的方法750的步骤实施例。简而概括地说,在步骤755,第一装置拦截或接收从服务器传输到请求方的识别对象的页面,请求方例如是客户机。第一装置将页面转发给请求方。在步骤760,第一装置将所产生的推测性请求传输到服务器以便预取由页面识别的对象。第一装置可以以传输率传输请求以便将带宽的利用保持在预定水平内或者利用空闲或可用带宽。在步骤765,第二装置拦截第一装置的推测性请求,并将该请求转发给服务器106。在步骤770,第二装置接收从服务器对请求的响应。在步骤775,第二装置的带宽探测器702确定空闲网络带宽的可用性以便将推测性响应传输到第一装置或请求方。在步骤780,第二装置产生推测性响应或将接收的响应标记为推测性的,并响应于带宽探测器702的确定而传输推测性响应。第二装置可以以一传输率传输响应以便将带宽的利用保持在预定水平内或者利用空闲或可用的带宽。
进一步详细地说,在步骤755,第一装置拦截或接收由初始服务器传输的识别对象的页面。在一个实施例中,第一装置是客户机102。在一些实施例中,第一装置是第一设备200。在另一实施例中,第一装置在网络连接的WAN侧上采用。在一个实施例中,第一装置在分支机构中采用。如以上结合方法700的步骤705所讨论的,第一装置可以拦截用于识别对象的从一个装置到另一装置的任何类型和形式的通信。在又一实施例中,第一装置和第二装置都拦截识别对象的页面。在一个实施例中,第二装置拦截并识别用于预取的对象,例如根据方法700的实施例。
在步骤760,第一装置可以产生推测性请求750。第一装置可以利用在此所述的任何编码技术产生推测性请求。在一个实施例中,第一装置立刻或尽可能快地传输推测性请求750。在另一实施例中,第一装置以与来自第一装置的非推测性请求相同的优先级传输推测性请求750。在一些实施例中,如上所述,第一装置响应于第一装置的带宽探测器702确定可用网络带宽而传输推测性请求750。
在一个实施例中,一旦由带宽探测器702检测到带宽的利用在预定水平内,网络优化引擎250就传输推测性请求。在另一实施例中,一旦确定要传输的或传输队列中的非推测性请求的数量在预定阈值以下,网络优化引擎250就传输推测性请求。在一些实施例中,网络优化引擎250在非推测性请求传输之间可用的任何空闲时间期间传输推测性请求。在其他实施例中,网络优化引擎250传输推测性请求以便使推测性请求所使用的带宽利用保持在预定水平内。在一些实施例中,网络优化引擎250传输推测性请求以便使非推测性请求或响应的往返行程次数保持在预定水平。第一装置可以一传输率传输响应以将带宽的利用保持在预定水平内或者利用空闲或可用带宽。
在步骤765,第二装置拦截或接收由第一装置传输的推测性请求750。在一个实施例中,第二装置是第二设备200’。在其他实施例中,第二装置是服务器106。在又一实施例中,第二装置应用在网络连接的LAN侧上,例如在共同数据中心。在一些实施例中,第一装置将推测性请求750传输到第二装置,而不是第二装置拦截推测性请求750到服务器106的传输。在一个实施例中,第二装置通过检测数据分组的推测性编码方案将所拦截的请求识别为推测性的。第二装置可以由数据分组的编码方案识别出该请求应当通过与推测性预取相关的QoS优先级处理。
在一些实施例中,第二装置将推测性请求750转发到服务器106。在其他实施例中,第二装置对对象产生非推测性请求并将该请求传输到服务器。在另一实施例中,第二装置立刻或尽可能快地传输推测性请求750或第二请求。在其他实施例中,第二装置以与非推测性请求相同的优先级传输推测性请求750或第二请求。在一个实施例中,响应于带宽探测器702第二装置传输推测性请求750或第二请求,带宽探测器702例如将请求传输到服务器106的检测带宽可用性的带宽探测器702。在一个实施例中,一旦由带宽探测器702检测到带宽的利用在预定水平内,网络优化引擎250就传输推测性请求。第二装置以一传输率传输响应以便将带宽的利用保持在预定水平内或者利用空闲或可用的带宽。
在步骤770,第二装置接收来自服务器106的对对象请求的响应。在一个实施例中,一旦检测到可用带宽或一旦QoS传输时序(scheduling)机制将响应识别为低优先级或推测性,则服务器106将请求识别为推测性的并传输响应。在一些实施例中,第二装置接收该响应并将该响应与未解决的推测性请求750联系在一起。例如,在一个实施例中,第二装置经连接状态表703将响应识别为对推测性请求750的响应。
在一些实施例中,第二装置产生或提供推测性响应752。在一个实施例中,第二装置产生包括来自从服务器接收的响应的内容的响应并将所产生的响应编码为推测性的。在另一实施例中,第二装置变更、更改或改变来自服务器的响应分组以便将响应752识别为推测性的。在许多实施例中,来自服务器106的响应包括多个网络分组。在这些实施例的一些实施例中,第二装置产生、提供响应分组或将响应分组识别为推测性的。第二装置可以以与请求750相同的方式或利用与请求750相同的编码方案将响应分组752识别为推测性的。在另一实施例中,第二装置可以使用由第二装置和/或第一装置辨别的不同的推测性QoS编码方案。
在步骤775,在一个实施例中,第二装置的带宽探测器702根据先前讨论的步骤715检测到客户机102或第一装置的空闲网络带宽的可用性。在步骤780,第二装置响应于带宽探测器或借助第二装置的推测性数据分组的QoS传输时序而传输推测性响应752。第二装置可以以一传输率传输响应以便将带宽的利用保持在预定水平内或者利用空闲或可用的带宽。在一些实施例中,第一装置拦截推测性响应752并将对象存储到高速缓存232或更新高速缓存232中的对象。
在一些实施例中,诸如第一设备200和第二设备200’的第一装置和第二装置可分别响应于带宽探测器并以低优先级QoS传输或转发用于预取对象的推测性请求752到初始服务器106上,以便减少与带宽上的非推测性请求的连接。同样,第一装置和第二装置可分别响应于带宽探测器并以较低的优先级QoS传输或转发响应作为推测性响应752,以减少与带宽上的非推测性请求的连接。此外,第一和第二装置可以以与非推测性请求相同或类似的优先级传输推测性请求并根据为推测性传输设计的QoS优先级传输推测性响应。在又一些实施例中,第一和第二装置可以根据与WAN连接相关的端口上的推测性QoS优先级来传输推测性请求和响应。在又一实施例中,第一和第二装置可以一传输率或速度传输推测性请求和响应以便使带宽的利用保持在预定水平内或者利用空闲或可用的带宽。
使用上述系统和方法,这些推测性预取技术减少了用户等待所花费的时间。推测性预取可以减少平均交互处理时间。也就是说,在一些情况下,我们预取用户还未请求的对象,从而使对象在用户请求了对象的情况下是可用的。因此,这种技术可以减少用户在等待上消耗的时间。使用以上推测性预取技术,利用了未用或空闲的带宽从而在带宽方面使推测性预取的成本最小化。
虽然通常结合HTTP型预取在上面描述了该系统和方法,但这些技术可以用于和应用于任何类型和形式的推测性取出中,例如预读、后写以及内容分配和预刷新高速缓存中的对象。例如,推测性预取技术可以用于获得多个装置的压缩引擎之间共享的压缩历史的内容。在另一示例中,设备或多个设备可以通过CIFS协议为诸如办公文件的文件和文档的预读和后写提供推测性预取技术。在一个实施例中,分支机构中的用户可以通过经由一个或多个设备到数据中心中服务器的WAN连接访问文件。设备200可以拦截对识别对象的文件页面的请求或对随后页面的其他内容的请求。设备200可以在推测用户会请求页面或对象的情况下预取随后的页面或对象。设备可以利用此处的技术以较低优先级的方式传输这些预取的请求和响应,以便减少与非推测性请求和响应的网络带宽争用。
H.用于堆栈定向预取技术的系统和方法
现在参考图8A和8B,描述用于从堆栈推出和弹出对象以确定预取对象顺序的技术的系统和方法。这种技术,称作“堆栈定向预取”,响应于用户通过使用堆栈当前访问或最近访问过的页面作出预取决定。例如,在用户漫游(wander off)到第二页面之后预取方案可以不需要第一被请求页面预取链接。当用户请求页面时,该技术页面的统一资源定位符(URL)或对象标识符推到预取堆栈上。当预取器准备好从新页面预取对象或内容时,预取器从堆栈顶部弹出URL,并通过弹出的URL取出所识别的对象或内容。在这种方式中,预取器对最近(recent)页面请求的预取对象给出的优先级超过在前页面请求。
现在参考图8A,描述用于进行堆栈定向预取技术的系统的实施例。简而概括地说,诸如设备200的装置包括网络优化引擎250,其拦截诸如客户机等请求方所请求并由初始服务器106提供的页面。设备200识别用于所拦截页面的统一资源定位符(URL),其可以识别与该页面相关的一个或多个对象。设备200将URL从页面推到堆栈元件850的顶部。当设备200拦截每个页面时,设备将页面的URL推到堆栈上。在一些点,预取器704确定进行对象的预取。预取器704从堆栈顶部弹出推到堆栈上的最后的URL。这个URL表示由请求方请求并由设备拦截的最后的页面。预取器704从URL确定一个或多个对象标识符,产生对对象的请求,并将该请求传输到服务器。设备200接收被预取的对象并将它们存储在高速缓存232中。预取出的可以持续地从堆栈850中弹出URL以便在设备将所拦截页面的新URL推到堆栈上的同时预取对象。
如上结合图7A所述,预取器704可以包括软件、硬件或软件和硬件的任何组合。预取器704可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。预取器704包括或提供用于产生分组的逻辑、商务规则、功能或操作,例如从服务器106请求对象的分组。在一些实施例中,预取器704接收对预取请求的响应并将该响应的对象存储到高速缓存232中。
预取器704还可以包括用于确定何时从服务器预取对象或内容的逻辑、商业规则、功能或操作。在一个实施例中,预取器704被设计并构造得响应于预定的频率而预取对象。在其他实施例中,预取器704被设计并构造得响应于数据分组处理引擎240而预取对象。在另一实施例中,预取器704被设计并构造得响应于由分组处理引擎240处理的、被发送和/或接收的预定数量的分组而预取对象。在其他实施例中,预取器704被设计并构造得响应于定时器而预取对象。在一个实施例中,预取器704被设计并构造得响应于网络带宽或利用而预取对象,例如通过结合图7A所讨论的带宽探测器702。在又一实施例中,预取器704可以响应于设备200的当前负载,例如并行连接的数量和CPU以及存储器使用。
在一些实施例中,预取器704响应于策略引擎295的一个或多个策略以确定何时预取对象。由此,在一些实施例中,预取器704可以基于用户、客户机、服务器或网络连接的标识或类型响应于策略并被配置。在一些实施例中,预取器704可以基于任何时间信息例如频率或一天中的时间响应于策略。在其他实施例中,预取器704可以基于网络业务量类型、协议或网络分组的任何部分或内容响应于策略,例如源和目的地地址和端口,以及TCP或IP选项。在一个实施例中,预取器704可以基于客户机102或服务器106的任何属性或特征响应于策略,诸如通过端点检测,例如通过结合图3所描述的收集代理304。
预取器704与堆栈850接口或通信。在一个实施例中,预取器704与堆栈850集成。在另一实施例中,预取器704包括堆栈850或实现堆栈850。在一些实施例中,设计并构造预取器704以便响应于堆栈850的大小来预取对象。在其他实施例中,设计并构造预取器704以便响应于至和从堆栈850获取数据的频率来预取对象。在又一实施例中,设计并构造预取器704以便响应于堆栈850中元件数量的历史来预取对象。在一些实施例中,设计并构造预取器704以便响应于堆栈850中未取的元件数量来预取对象。在一个实施例中,设计并构造预取器704以便预取已存储在堆栈中预定时间周期的对象。在其他实施例中,设计并构造预取器704以便响应于推到堆栈850上的预定数量的元件来预取对象。在又一实施例中,设计并构造预取器704以便响应于在预定时间周期内推到堆栈850上的预定数量的元件来预取对象。
堆栈850可以包括软件、硬件或软件和硬件的任何组合。堆栈850可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。在一些实施例中,堆栈850可以实现为一个或多个数据结构、链接列表、队列、变量、阵列或存储在存储器中的对象。在其他实施例中,堆栈850可以实现为文件或数据库。在一些实施例中,用于堆栈850的可执行指令包括或提供用于将元件存储到堆栈850并从堆栈850访问和/或移除元件的逻辑、商业规则、功能或操作。在一个实施例中,堆栈850实现为后进先出(LIFO)堆栈或队列——也就是,最后存储到堆栈的元件是从堆栈重新得到或访问的第一元件。在这些实施例中,将元件存储到LIFO堆栈的顶部被称为将元件推到堆栈上。并且,在这些实施例中,从LIFO堆栈的顶部重新得到或访问元件被称作从堆栈弹出元件。在又一实施例中,堆栈850包括代表LIFO方案的元件的列举列表。
在一些实施例中,堆栈850包括可以存储在堆栈850中的预定最大数量的元件。在其他实施例中,堆栈850包括可以存储到堆栈850中的字节方面的最大大小。在一个实施例中,堆栈850包括用于存储到堆栈850中的每个元件或数据的预定大小的阈值。
在又一些实施例中,堆栈850可以包括多个堆栈850A-850A。在一些实施例中,设备200可以动态产生或建立堆栈850A-850N。在其他实施例中,设备可以动态移除或破坏堆栈。在又一实施例中,设备200可以在用户或客户机之间复制并共享堆栈850A-850N。在一些实施例中,多个堆栈850A-850N可以用于穿过设备200的所有连接。在一个实施例中,设备200可以产生、使用和/或分配堆栈850A到每个客户机102A。在另一实施例中,设备200可以为每个传输层连接或应用层会话产生、使用和/或分配堆栈850A。在另一实施例中,设备200可以为每个服务器106产生、使用和/或分配堆栈850A。在另一实施例中,设备200可以产生、使用和/或分配堆栈850A到一组连接、用户、客户机或服务器,例如分支机构的一组用户或客户机。
在一个实施例中,堆栈850提供功能、消息或应用编程接口(API)以便存储、访问、管理、变更或操纵堆栈850。在一个实施例中,预取器704可以使用任何类型和形式的应用编程接口(API)与堆栈850接口或通信。在另一实施例中,预取器704可以使用任何类型和形式的信令与堆栈接口或通信。在一些实施例中,预取器704可以使用任何类型和形式的进程间通信与堆栈850接口或通信。在又一实施例中,预取器704包括并执行堆栈850的操作、功能性或逻辑。
现在参考图8B,描述用于进行堆栈定向预取技术的方法800的步骤实施例。简而概括地说,在步骤805,设备拦截或接收包括一个或多个对象标识符的页面。在步骤810,设备200将对象标识符或URL从所拦截的页面推到堆栈850的顶部。在步骤815,设备200的预取器确定对对象预取,并响应于该确定,将一个或多个URL或对象标识符从堆栈850的顶部弹出。在步骤850,设备或预取器对通过弹出的URL所识别的对象产生请求并将该请求传输到服务器106。在步骤825,在从服务器收到响应时,设备200或预取器200存储或更新高速缓存232中的对象。
进一步详细地说,在步骤805,设备200拦截或接收从一个装置到另一装置的用于识别对象的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,设备200拦截对从服务器到客户机的对对象请求的响应。在一些实施例中,服务器106传输一个或多个网络分组,该分组具有识别对象的应用协议层净荷。例如,在一个实施例中,设备200拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括用于识别对象的统一资源定位符(URL)或超链接。在一些实施例中,设备200拦截由URL标识的页面并且页面标识一个或多个对象。在拦截之后,设备200将所拦截的页面转发或传输到请求方,例如客户机102。
在步骤810,设备200将对象的标识符从所拦截的页面存储到堆栈810。在一些实施例中,设备200将页面上识别对象的URL推到堆栈850的顶部。在其他实施例中,设备200将页面的备份存储到堆栈上。在又一实施例中,设备200将页面的一个或多个对象标识符存储到堆栈850的顶部。在一些实施例中,设备200将来自页面的一个或多个超链接存储到堆栈850的顶部。在一个实施例中,设备将页面的对象的标识符或URL存储到第一堆栈850A。在一些实施例中,设备将页面的对象的标识符或URL存储到与客户机102、服务器106、用户或连接所关的或分配给它们的堆栈。
在许多实施例中,设备200对通过设备200传输的多个页面进行步骤805和810。在一些实施例中,设备200将多个对象标识符或URL存储到堆栈850的顶部。在一个实施例中,设备200将第一对象标识符或第一URL存储到第一堆栈850A并将第二对象标识符或第二URL存储到第二堆栈850B。在其他实施例中,根据客户机、服务器、用户或其他因素,例如策略引擎或堆栈的条件,设备200可以存储、访问并管理多个堆栈850A-850N中的对象标识符或URL。例如,设备200可以将URL从客户机102A的拦截的页面存储到堆栈850A并将URL从客户机102B的拦截的页面存储到堆栈850B。在另一示例中,设备200可以将来自服务器106A的所拦截页面的URL存储到堆栈850A并将来自服务器106B的所拦截页面的URL存储到堆栈850B。
在步骤815,设备200的预取器704确定对对象预取。如上所述,预取器704可以根据或响应于一个或多个因素、条件、状态、策略引擎295或其他程序来进行预取。响应于该确定,预取器704从堆栈850的顶部重新得到、弹出或访问对象标识符或URL。在一个实施例中,预取器704以LIFO方式从堆栈弹出对象标识符或URL。在一些实施例中,预取器704一次从堆栈850中弹出一个对象标识符或URL。在另一实施例中,预取器704从堆栈850弹出多个URL或对象标识符。在其他实施例中,预取器704从堆栈850弹出预定数量的URL或对象标识符。预定数量是可以通过预取器704可配置的或者可以通过预取器可动态调整的。
在又一实施例中,预取器704从第一堆栈850A弹出第一对象标识符或URL。在一些实施例中,预取器从第二堆栈850B弹出第二对象标识符或URL。在一个实施例中,预取器704从第一堆栈850A弹出第一预定数量的对象标识符,然后从第二堆栈850B弹出第二预定数量的对象标识符。在一些情况下,预取器705可以使用任何循环法(round robin)、加权载入机制或合理的分配方案从多个堆栈850A-850N弹出对象标识符或URL。
在步骤820,预取器704对通过对象标识符或URL识别的对象产生请求分组。在一些实施例中,预取器704产生请求分组以从服务器106获得URL。在其他实施例中,预取器704对从堆栈850弹出的多个对象标识符或URL产生请求。在又一实施例中,预取器704对从堆栈850弹出的多个对象标识符或URL的每一个产生请求。在再一实施例中,预取器产生请求分组以获得对象的状态。在一个实施例中,预取器对对象的条件获取产生请求分组。设备200或预取器704传输该一个或多个请求分组到服务器106。在一些实施例中,设备200或预取器704可以使用任何QoS算法或技术传输请求,诸如,例如,图7A-7D的推测性QoS技术。
在许多实施例中,设备200对一个或多个堆栈850A-850N的多个对象标识符进行步骤815和820。在一些实施例中,设备200在允许另一对象标识符或URL被推到堆栈850上之前进行预定数量次数的步骤815和820。在其他实施例中,设备200对到堆栈850上的待决推出指定优先级或次序。在一个实施例中,设备200传输对待决推出的URL产生的请求然后继续弹出URL并根据步骤815和820传输请求。在其他实施例中,设备250继续对第一堆栈850A进行步骤815和820,同时设备将URL或对象标识符推到第二堆栈850B。在又一实施例中,在空闲时间期间,预取器704进行步骤815和820直到拦截到页面或设备不再空闲为止。
在步骤825,设备200或预取器704从服务器106接收对请求的响应。在一些实施例中,设备200从一个或多个服务器接收来自多个请求的多个响应。在一个实施例中,设备200从响应识别对象并将对象与预取请求的对象标识符联系起来。在另一实施例中,设备200拦截对具有与设备请求相关对象的客户机请求的响应。在这些实施例中,设备200可以使用这个对象来满足设备的所产生的请求。设备200将从服务器接收的对象存储到高速缓存232。在一些实施例中,设备200更新存储在高速缓存232中的对象。
在用户接收步骤805的被请求页面请求通过拦截页面的URL或对象标识符识别任何一个或多个对象之前,设备可以进行步骤810、815、820和/或825中的任何一个。以这种方式和在一些实施例中,上述技术的系统和方法用于在用户请求对象之前预取对象。在其他实施例,通过被拦截页面识别的对象可以存储在高速缓存中,并且方法800的堆栈定向技术可以以用户请求对象或响应于到请求方的对象URL的传输的预期进行预刷新或更新被高速缓存的对象。例如,对于具有大致要期满的期满周期的对象或具有预定量期满时间的对象来说,预取器704可以将对象标识符或URL存储到堆栈。
虽然预取器704和堆栈850以设备200的示例实施例在上面进行了描述,但是在此描述的堆栈定向系统和方法可以在任何装置上配置或执行,例如客户机102的端点,或者在配置了网络优化引擎250或其任何部分的任何装置上配置或执行。
用于预刷新被高速缓存对象的系统和方法
现在参考图9A和9B,描述被称作“预刷新”的技术的实施例的系统和方法。在对图9A的简要概述中,诸如设备200或客户机102的装置通过检查状态和/或更新在由装置拦截或接收的页面中所识别的被高速缓存对象来进行这种预刷新技术。装置包括网络优化引擎250,其拦截通过装置通信的页面,例如从服务器106传输到客户机的页面。装置解析页面的超链接或统一资源定位符并确定由该页面识别的对象位于高速缓存232中。在用户从页面请求被识别对象之前,装置的预刷新器904产生对状态的请求或对高速缓存232中的对象的更新并将所产生的请求传输到服务器106。预刷新器904从服务器106接收表示对象状态或提供对象更新版本的响应。根据该响应,装置使高速缓存232中的对象生效或更新。在一个实施例中,该技术被称作预刷新,因为在预想到或在用户请求由页面识别的对象之前该装置就使高速缓存中的对象生效或更新了。
在一些实施例中,在此所述的网络优化引擎250或其任何部分,例如协议加速器234,可以包括预刷新器904。预刷新器904可以包括软件、硬件或软件和硬件的任何组合。预刷新器904可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。在一些实施例中,预刷新器904包括如图7A-7D和8A-8B中所描述的预取器704。在一个实施例中,预刷新器904包括或提供用于确定由页面识别的对象是否位于高速缓存232中的逻辑、商业规则、功能或操作。在一些实施例中,预刷新器904与高速缓存管理器232接口或通信以确定对象是否位于或存储在高速缓存232中。在另一实施例中,预刷新器904查询装置的存储装置以确定对象是否位于或存在于高速缓存232中。在一个实施例中,预刷新器904是高速缓存管理器232的一部分或者高速缓存管理器232包括预刷新器904。在其他实施例中,预刷新器904在索引中检查或查找对象是否存储在高速缓存232中。在一些实施例中,索引包括将对象的哈希或指纹与存储在高速缓存232中的对象相对应的条目。
在一些实施例中,预刷新器904包括或提供用于对对象产生请求的逻辑、商业规则、功能或操作。预刷新器904可以对对象状态产生请求。在其他情况下,预刷新器904对对象产生请求。在又一情况下,预刷新器904对对象产生条件性获取请求。也就是说,在一些实施例中,预刷新器904仅在对象已经改变或被更改的情况下产生请求以便获取对象。在一些实施例中,所产生的请求包括一个分组。在其他实施例中,所产生的请求包括多个分组。
在一个实施例中,预刷新器904对位于高速缓存232中的对象产生请求。在又一些实施例中,预刷新器904产生请求750,该请求被识别为推测性或具有低于非预取请求的QoS优先级,例如结合图7A-7D所述。在一些实施例中,预刷新器904对使用应用层协议的对象产生请求。在另一实施例中,预刷新器904对对象产生HTTP请求。在另一实施例中,预刷新器904使用可扩展标记语言(XML)产生对对象的请求。
在一些实施例中,预刷新器904将所产生的请求传输到服务器106。在一个实施例中,预刷新器904将所产生的请求传输到初始服务器或传输被拦截页面的服务器106。在另一实施例中,预刷新器904将所产生的请求传输到具有对象的多个服务器106A-106N中的一个。在许多实施例中,预刷新器904接收对请求的响应。根据该响应,预刷新器904可以确定存储在高速缓存中的对象是有效的或者不需要被更新。在一些实施例中,预刷新器904由来自服务器106的响应确定高速缓存中的对象已经被更改。在一个实施例中,预刷新器904通过该响应接收对象的更新版本并将对象存储到高速缓存232。在又一实施例中,预刷新器804通过响应接收对象已被更改的部分。在一些实施例中,预刷新器904接收具有表示服务器上对象已被更改的状态的响应。在响应中,预刷新器904可以产生第二请求以便从服务器106获得被更改的对象。
在一个实施例中,设计并构造预刷新器904以便响应于页面的拦截和/或对象的识别而产生对对象的请求。在其他实施例中,设计并构造预刷新器904以便响应于分组处理引擎240而产生对对象的请求。在另一实施例中,设计并构造预刷新器904以便响应于由分组处理引擎240发送和/或接收、或正在处理的预定数量的分组而产生对对象的请求。在其他实施例中,设计并构造预刷新器904以便响应于定时器而产生对对象的请求。在一个实施例中,设计并构造预刷新器904以便响应于网络带宽或利用,例如通过结合图7A所描述的带宽探测器702,而产生对对象的请求。在又一实施例中,预刷新器904可以响应于装置的当前负载,例如并行连接的数量、和/或CPU、磁盘和存储器的利用。
在一些实施例中,预刷新器904响应于策略引擎295的一个或多个策略,以确定何时产生对对象的请求和/或传输对象请求。如此,在一些实施例中,根据用户、客户机、服务器或网络连接的标识或类型构造预刷新器904并响应于策略。在一些实施例中,预刷新器904可以基于任何时间信息响应于策略,例如在拦截页面的预定时间阈值内。在其他实施例中,预刷新器904可以基于网络业务量类型、协议或网络分组的任何部分或内容,例如源和目的地地址以及端口、TCP或IP选项,响应于策略。在一个实施例中,预刷新器904可以基于客户机102或服务器106的任何属性或特性,例如通过端点检测,比如,通过结合图3所述的收集代理304,响应于策略。
现在参考图9B,描述用于进行由装置预刷新被高速缓存对象的技术的方法900的实施例。装置可以是设备200或终端节点,例如客户机102。简而概括地说,在步骤905,装置拦截或接收标识一个或多个对象的页面。在步骤910,装置转发页面到请求方。在步骤915,装置确定由所拦截的页面识别的对象位于或存在于高速缓存中。在步骤920,装置对对象的状态或更新产生请求并将请求传输到服务器。在步骤925,装置接收来自服务器的响应并从该响应确定对象的状态。在步骤930,装置从该响应确定对象在初始服务器上未被更改。在步骤935,装置从该响应确定对象在初始服务器上已经被更改。在一些实施例中,装置从服务器的响应接收已更新的对象。在其他实施例中,装置响应于所确定的状态而从服务器获得对象。
进一步详细地说,步骤905,装置拦截或接收从一个装置到另一装置的识别对象的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,装置拦截从服务器到客户机的对对象的请求的响应。在一些实施例中,服务器106传输一个或多个具有用于识别对象的应用协议层净荷的网络分组。例如,在一个实施例中,装置拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括识别对象的统一资源定位符(URL)或超链接。在一些实施例中,设备200拦截由URL识别的页面且该页面识别一个或多个对象。在步骤910,装置将所拦截的页面转发或传输到请求方,例如客户机102。
在步骤915,装置或预刷新器904确定由所拦截的页面识别的对象是否位于或存在于高速缓存232中。在一些实施例中,高速缓存232位于装置上。在其他实施例中,高速缓存232位于第二装置上。在一个实施例中,预刷新器查询高速缓存232以便在高速缓存232中定位对象。在一些实施例中,预刷新器在存储装置中搜索对象。在其他实施例中,预刷新器904通过在对象或高速缓存索引中查询或查找来确定对象在高速缓存中。在又一些实施例中,预刷新器904使用应用编程接口(API)、函数调用或脚本来确定对象是否位于装置或高速缓存232的存储装置中。在一些实施例中,预刷新器904通过消息将查询发送到另一应用、程序、服务、进程或任务以便确定对象是否位于拦截页面的装置的高速缓存232或具有高速缓存232的另一装置中。
在步骤920,装置或预刷新器904对对象的状态或更新产生请求并将该请求传输到服务器。在一些实施例中,预刷新器904对对象的状态产生请求。在其他实施例中,预刷新器904产生请求以便从服务器获得或得到对象。在又一实施例中,预刷新器904对对象的条件性获取产生请求。在一些实施例中,预刷新器904对多个对象产生请求。
在一个实施例中,预刷新器904对预定大小内的对象产生请求。在一些实施例中,预刷新器904跳过对高速缓存中大于预定大小的对象产生请求。在又一实施例中,预刷新器904不对小于预定大小的对象产生请求。在一个实施例中,预刷新器904对大于预定大小的对象产生请求。在又一实施例中,预刷新器904对预定大小范围内——大于第一预定大小且小于第二预定大小的对象产生请求。在一些实施例中,预刷新器904根据策略引擎295的策略动态地确定要预刷新的对象的大小。在其他实施例中,预刷新器904基于装置的操作和/或性能动态地调整任何预定大小的阈值,例如响应时间、并行连接的数量、带宽可用性或带宽利用以及CPU和存储器的利用。
在又一些实施例中,预刷新器904确定高速缓存232中对象的剩余期满时间。在一个实施例中,如果剩余期满时间在预定阈值内,则预刷新器904产生请求。例如,如果对象的期满时间显示对象相对较新或最近更新,则在一个实施例中预刷新器904不产生预刷新高速缓存232中对象的请求。在其他实施例中,如果对象的期满时间显示对象将要期满或在预定时间内期满,则在另一实施例中预刷新器904产生请求以预刷新高速缓存232中的对象。
装置或预刷新器904将所产生的请求传输到服务器106。在一些实施例中,预刷新器904将所产生的请求传输到初始服务器106或产生所拦截页面的服务器。在其他实施例中,预刷新器904将该请求传输到具有对象备份或也提供对象的服务器。在另一实施例中,预刷新器904将多个所产生的请求传输到一个或多个服务器。在一个实施例中,预刷新器904将一个或多个请求传输到服务器群组。
在步骤925,装置或预刷新器904接收来自服务器的响应并从该响应确定对象的状态。在一些实施例中,预刷新器904从响应的应用净荷的内容确定对象的状态。在其他实施例中,预刷新器904从响应的首部信息确定对象的状态。在另一实施例中,预刷新器904从对象首部确定对象的状态。在一个实施例中,预刷新器904从响应中的状态标识符确定对象的状态。基于该响应和/或该响应的任何内容,预刷新器904确定对象是否有效或是否为新的。
在步骤930,装置从该响应确定对象在初始服务器上未被更改。例如,在HTTP条件性获取请求的实施例中,装置接收“304未更改响应(304NotModified Response)”。在一个实施例中,预刷新器904确定对象未被更改。在一些实施例中,预刷新器904确定高速缓存232中的对象是有效的。在其他实施例中,预刷新器904确定高速缓存232中的对象不需要被更新或刷新。在一些实施例中,预刷新器904确定高速缓存中对象的期满周期尚未期满。
在步骤935中,装置从该响应确定对象已经被更改。在一个实施例中,预刷新器904用状态信息更新高速缓存中的对象。在另一实施例中,预刷新器904借助响应接收对象并在高速缓存232中存储或更新对象。在一个实施例中,预刷新器904通过该响应接收对象已经改变的部分并在高速缓存232中存储对对象的改变或更新高速缓存232中的对象。在其他实施例中,预刷新器904接收高速缓存中的对象已经在服务器上被更改或期满的标识符。在一个实施例中,预刷新器904传输请求以获得已经更改的对象的更新或其一部分。一旦接收的对象更新或改变的部分,预刷新器更新高速缓存232中的对象。
虽然方法900的实施例通常如上所述来预刷新通过页面所识别的对象,例如通过HTTP,但是方法900可以用于例如预刷新通过多个子页面、超链接、目录层、或页面层次来识别的多个对象。例如,如示通过页面950的层次或组、第一对象标识符、URL或第一页面的超链接可以识别第二对象标识符、URL或第二页面的超链接,其进而可以识别第三对象标识符、URL或第三页面的超链接,等等。如此,在一些实施例中,通过装置所拦截的页面可以具有子页面的层次、超链接、到对象的链接或预定深度的目录层。此外,虽然方法900的实施例通常如上所述预刷新通过页面识别的对象,例如通过HTTP,但是方法900可以通过非HTTP协议、对象和内容(content)来实现。
在一些实施例中,方法700实施例中的预刷新技术在多个子页面和通过所拦截的页面所识别的子页面上的对象上进行。在这些实施例中,装置可以在每个子页面、层或层次上进行步骤915到935直到预定深度的阈值952。在一些实施例中,装置可以在2的预定深度阈值952上进行步骤915到935。在一些实施例中,装置可以在5的3、4的预定深度阈值952上进行步骤915到935。在又一实施例中,装置可以对等于页面、超链接或内容层的深度的预定深度阈值952进行步骤915到935,该页面、超链接或内容层的深度可以通过在步骤905所拦截的页面来穿越(traverse)或识别。在一个实施例中,装置可以进行步骤915到935直到达到预定深度阈值952或拦截到另一页面为止。
在一些实施例中,装置可以在从先前的深度或页面接收对对象的请求时在第二深度或页面上进行步骤915到935。例如,在一个实施例中,装置对通过第一页面识别的一个或多个对象进行步骤915到935。第一页面可以具有到子页面的超链接。然后装置一旦拦截到来自页面接收器的请求就对子页面进行步骤915到935,该页面接收器用于来自第一页面的一个或多个对象。然后装置可以在下一页面上或到预定深度阈值952进行步骤915到935。在又一实施例中,装置可以基于装置的任何一个或多个操作或性能特征来动态地调整预定深度阈值952,例如基于响应时间、并行连接的数量、带宽可用性或带宽的利用,以及CPU和存储器的利用。
在使用如上所述的这种预刷新技术的其他实施例中,位于高速缓存中的对象可以识别为陈旧的而尚未在初始服务器上改变或更改。在这些实施例中,预刷新技术大多可以产生表示对象尚未更改的响应而不是进行实际对象传输。如此,在一些情况下,对这种预刷新技术的带宽需求和服务器负载可以非常小或可以忽略。在一个实施例中,这种预刷新技术可以利用可用或常规带宽来进行而不会使网络或系统性能明显劣化。例如,装置将所产生的请求识别为具有与其他非预刷新请求或网络业务量相同的优先级。在其他实施例中,这种预刷新技术结合任何类型和形式的QoS技术进行,例如通过图7A-7D所示的QoS预取技术。在这些实施例中,装置产生预刷新请求,该请求被识别为推测性的或具有低于非预刷新请求的优先级。
J.用于基于对象的首部信息确定是否预取或刷新/预刷新对象的系统和方
现在参考图10A和10B,描述利用对象首部信息确定是否预取对象的系统和方法。当诸如设备200或客户机102的装置预取对象时,装置解析所拦截的页面寻找由页面上的链接识别的对象。然后装置获得由该链接标的或识别的对象。在一些实施例中,装置不知道对象是否值得预取。由于链接或标识符仅识别对象,因此装置可不具有足够的信息以确定对象是否是要预取的对象类型或具有装置期望预取的内容。在此描述的预取或刷新技术可以使装置在预取对象前首先获得关于对象的更多信息。
在图10A的简要概括中,诸如设备200或客户机102的装置包括网络优化引擎250。网络优化引擎250可以包括HTTP协议加速器234,其具有如结合图7A所述的预取器704的实施例。在其他实施例中,例如结合图9A和9B所述,协议加速器234或预取器704包括预刷新器904。在装置的操作和HTTP的示例中,装置拦截识别一个或多个HTTP对象的HTTP页面。响应于HTTP对象的识别或根据对预取的确定,预取器704传输HTTP头命令或请求到服务器106以获得用于对象的首部信息。响应于该头命令,服务器可以回答一个响应,该响应用于返回用于所识别HTTP对象的HTTP首部。然后预取器904检查或检验该响应的首部信息。基于该首部信息,预取器做出响应以确定是否从服务器106获取对象。
现在参考图10B,描述利用对象信息,例如HTTP首部信息,确定是否获取或预取对象的技术的实施例。虽然这种方法1000的实施例将讨论预取内容,但这种方法的实施例可被执行以刷新或预刷新对象,例如通过图8A的预刷新器904。
在方法1000的简要概括中,在步骤1005,诸如设备200或客户机102的装置拦截或接收识别一个或多个对象的通信,例如页面。例如,装置可以拦截具有到由初始服务器106提供的对象的一个或多个链接或URL的web页面。在步骤1010,装置转发所拦截的页面到请求方,例如客户机、用户或客户机上的应用。在步骤1015,装置确定由所拦截的页面识别的对象位于或存在于高速缓存232中。响应于该确定,在步骤1020,装置产生请求以获得对象上的首部信息,例如,通过HTTP头命令。装置将所产生的请求传输到服务器。在步骤1025,装置从服务器接收提供对象上首部信息的响应,例如HTTP对象的HTTP首部值。基于该响应的首部信息,装置确定是否从服务器取或预取对象。在一个实施例中,装置确定不取对象。在这些情况下,装置可以基于通过该响应所接收的信息来更新高速缓存232中对象的信息。在一些实施例中,装置基于该响应确定取对象。在步骤1030,装置对来自服务器的对象产生请求并传输该请求。在1035,装置从服务器接收包括被请求对象的响应。在步骤1040,装置基于在步骤1035的响应中所接收的对象来更新存储在高速缓存中的对象。在一些实施例中,装置还根据在步骤1025的响应中所接收的首部信息来更新高速缓存中对象的信息。
进一步详细地说,在步骤1005,装置拦截或接收从一个装置到另一装置的用于识别对象的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,装置是设备200。在另一实施例中,装置是客户机102。在一个实施例中,装置拦截从服务器到客户机的对对象请求的响应。在一些实施例中,服务器106传输一个或多个网络分组,其具有识别对象的应用协议层净荷。例如,在一个实施例中,装置拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括识别对象的统一资源定位符(URL)或超链接。在一些实施例中,诸如客户机的装置拦截由URL识别的页面且该页面识别一个或多个对象。
在步骤1010,装置转发或传输所拦截的页面、响应或通信到请求方。在一个实施例中,装置一拦截到或在此之后立即转发所拦截的页面。在其他实施例中,装置在识别页面上的一个或多个对象之后转发所拦截的页面。在又一实施例中,装置制作所拦截页面的备份以用于进一步处理,并且一制作备份就将页面转发到请求方。在一些实施例中,装置转发所拦截的通信到客户机102的请求方。在其他实施例中,装置转发所拦截的页面到应用方,例如web浏览器。在另一实施例中,装置转发页面到用户。
在步骤1015,装置和/或预取器904确定由所拦截的通信所识别的对象是否位于、存储于或存在于高速缓存232中。在一些实施例中,高速缓存232位于装置上。在其他实施例中,高速缓存232位于可由设备200或客户机10访问的另一装置上。在一个实施例上,预取器904查询高速缓存232以便在高速缓存232中定位对象。在一些实施例中,预刷新器904在存储器装置搜索对象。在其他实施例中,预刷新器904通过在对象或高速缓存索引中查询或查找来确定对象在高速缓存中。在又一些实施例中,预刷新器904利用应用编程接口(API)、函数调用或脚本来确定对象是否位于装置的存储装置或高速缓存232中。在一些实施例中,预刷新器904通过消息将查询发送到另一应用、程序、服务、进程或任务一确定对象是否位于拦截页面的装置的高速缓存232中或发送到具有高速缓存232的另一装置。
在步骤1020,响应于确定所识别的对象存储或位于高速缓存232中,装置和/或预取器904产生请求以获取对象信息或对象的首部信息。在一个实施例中,预取器904产生HTTP头命令以便请求所识别的对象上的首部信息。在其他实施例中,预取器904使用任何类型和形式应用协议产生请求以便查询或获取与对象有关的信息。例如,在一个实施例中,预取器904可以使用XML语言以请求对象信息或对象首部信息。在一些实施例中,预取器904产生请求以便从数据库系统或对象储存库获取对象信息。在其他实施例中,预取器904产生请求以便使远程程序呼叫中心获得远程系统或设备中对象实例的性能或属性。在一些实施例中,预取器904产生具有如结合图7A-7D所述的推测性预取优先级的请求。在其他实施例中,预取器904利用任何类型和形式的QoS时序安排和/或优先级来确定时间并传输所产生的请求。
进一步讲步骤1020,装置将对对象信息所产生的请求传输到服务器106。在一个实施例中,装置将所产生的请求传输到产生页面的服务器。在另一实施例中,装置将所产生的请求传输到第二服务器。在一些实施例中,装置将所产生的请求传输到服务器群组。在其他实施例中,装置将所产生的请求传输到第二设备200’。在一个实施例中,装置根据分配到所产生的请求或与其相关的任何QoS优先级来传输所产生的请求。在一些实施例中,装置以低于非预取请求的优先级传输所产生的请求。在其他实施例中,装置以低于非预取请求的优先级传输所产生的请求,该非预取请求由装置从客户机、用户或客户机上的应用接收并处理。
在步骤1025,装置接收来自服务器的具有识别对象上信息的信息的响应。在一个实施例中,装置接收具有对象首部信息的响应。例如,在HTTP实施例中,装置接收具有任何一个或多个HTTP首部的响应。在一些实施例中,该响应具有以下HTTP首部中的一个或多个:接受范围、寿命、允许、高速缓存控制、内容编码、内容语言、内容长度、内容位置、内容类型、日期、电子卷标(etag)、期满、最后修改、位置、附注、代理鉴定、后重试(retry-after)、服务器以及变化。在其他实施例中,装置接收具有XML内容的响应,其用于识别对象的一个或多个属性、性能或名称值对。在另一实施例中,装置接收具有消息的响应,该消息具有识别对象信息的名称值对。在又一些实施例中,装置接收识别对象性能或属性的远程程序调用响应。在一个实施例中,装置接收识别已经改变或修改的对象的一个或多个部分的对象信息。
基于响应中所接收的对象信息,装置确定是否从服务器取出、预取或获得对象。在一个实施例中,如果对象信息表示存储在高速缓存中的对象期满,则预取器904确定从服务器获取对象。在另一实施例中,如果对象信息表示存储在高速缓存中的对象将要期满,则预取器904确定从服务器获取对象。在一些实施例中,如果对象信息表示对象已经在初始服务器上被修改,则预取器904确定从服务器获取对象。在其他实施例中,如果对象信息表示对象的大小在预定阈值内,则预取器904确定从服务器获取对象。在又一实施例中,如果对象信息表示对象的类型和/或内容是可接受的、适合的或可被装置、预取器904和/或高速缓存232处理的,则预取器904确定从服务器获取对象。
响应于确定从服务器获取对象,在步骤1035,装置和/或预取器904对对象产生请求。在一个实施例中,预取器904对对象产生HTTP获取请求。在一些实施例中,预取器904对对象产生条件性请求,例如HTTP条件性获取。在一个实施例中,预取器904产生请求以便获取已经修改的对象部分。在其他实施例中,预取器对使用任何类型和形式的应用层协议例如XML的对象产生请求。在一个实施例中,预取器904产生请求以便从数据库获取对象。在其他实施例中,预取器904产生请求以便从由对象信息所识别的位置获取对象,例如通过HTTP位置首部。在另一实施例中,预取器904产生请求以便从另一装置,例如客户机102、设备200或第二高速缓存232’。在一些实施例中,预取器904产生如结合图7A-7D所述的推测性对象请求。在一个实施例中,预取器904通过与预取请求和/或响应相关的或分配给预取请求和/或响应的QoS对对象产生请求。
在步骤1030,装置将对对象产生的请求传输到服务器106。在一些实施例中,装置将所产生的请求传输到服务器群组。在其他实施例中,装置将所产生的请求传输到第二装置或设备200’。在一个实施例中,装置根据分配到所产生的请求或与其相关的任何QoS优先级传输所产生的请求。在一些实施例中,装置以低于非预取请求的优先级传输所产生的请求。在其他实施例中,装置以低于非预取请求的优先级传输所产生的请求,该非预取请求由装置从客户机、用户或客户机上的应用接收并处理。
在步骤1035,装置接收对步骤1030所产生并传输的请求的响应。在一个实施例中,装置接收具有对象的响应。例如,装置可以接收具有HTTP本体的HTTP响应,该HTTP本体包括对象。在一些实施例中,装置通过应用层协议接收对象。在一个实施例中,装置通过XML接收对象。在其他实施例中,装置接收对象已被修改的一个或多个部分。在另一实施例中,响应于条件性获取,装置接收没有对象的响应。在这种实施例中,装置可以接收第二对象首部信息。例如,装置可以接收识别已被修改对象的第二组一个或多个HTTP首部。
在步骤1040中,装置和/或预取器904更新存储在高速缓存232中的对象或其信息。在一个实施例中,预取器904在高速缓存232中存储对象的更新版本。在另一实施例中,预取器904更新或将部分对象的改变存储到高速缓存232。在一些实施例中,预取器905更新被高速缓存对象的对象信息。例如,预取器904在高速缓存232中更新对象的期满或确认信息。
在一些实施例中,在步骤1025,装置和/或预取器904根据所接收的对象信息不从服务器取出、预取或获得对象。在一个实施例中,如果对象信息表示存储在高速缓存中的对象是新的或未期满,则预取器904决定不从服务器获取对象。在另一实施例中,如果对象信息表示存储在高速缓存中的对象对于预定时间周期来说未期满,则预取器904决定不从服务器获取对象。在一些实施例中,如果对象信息表示对象未在初始服务器上被修改或者是新的,则预取器904决定不从服务器获取对象。在其他实施例中,如果对象信息表示对象的大小超出了预定阈值,则预取器904决定不从服务器获取对象。在又一实施例中,如果对象信息表示对象的类型和/或内容不是装置或高速缓存232可接受的、适合的或可处理的,则预取器904决定不从服务器获取对象。
虽然装置和/或预取器可以在步骤1025决定不取出、预取或获取对象,但是装置和/或预取器904可以根据所接收的对象信息更新高速缓存232中对象上的信息。如此,装置和/或预取器904可以在步骤1040更新高速缓存232中的对象信息。例如,在HTTP的情况下,装置和/或预取器904可以利用任何HTTP首部字段更新高速缓存232中的对象。在一个实施例中,预取器904比较在步骤1025接收的对象首部信息和存储在高速缓存232中的首部信息。在一些实施例中,如果信息是不同的,则预取器904和/或高速缓存管理器232更新存储在高速缓存232中的首部信息。
虽然这种技术总体上在上面在HTTP实施例和获取对象的HTTP首部信息中描述,但是在此描述的技术可以与任何其他协议一起使用,其中有关对象的信息可以在不取出对象本身的情况下获得。
进一步地,虽然方法1000的对象首部信息技术总体上结合预取对象来描述,但该技术可以由高速缓存管理器232或预取器904使用以便刷新或预刷新被高速缓存的对象,例如通过结合图9A和9B所描述的预刷新技术。在一些实施例中,高速缓存管理器232使用这些首部更新存储在高速缓存232中的对象的新鲜度。例如,在HTTP首部的情况下,返回到首部信息中的“期满”、“最大寿命”和“最后修改”首部字段由高速缓存管理器232施加于被高速缓存的对象。在一个实施例中,高速缓存管理器232利用已更新的首部信息将高速缓存232中的陈旧对象标记为新的。在另一实施例中,高速缓存管理器232利用已更新的首部信息延长已被标记为新的的被高速缓存对象的新寿命。
现在参考图10C,描述用于预取对象首部信息的方法实施例。在一些实施例中,高速缓存装置高速缓存对象的状态且可不使对象被高速缓存。例如,高速缓存装置可以高速缓存基于HTTP的对象的HTTP首部。在一些情况下,这些被高速缓存的首部可能被客户机或高速缓存认为是陈旧的。高速缓存装置可以在客户机请求对象之前通过初试服务器检查对象的首部信息。如果对象的首部已经改变,则装置将更新的首部存储在高速缓存中。如果客户机请求首部,不论通过HTTP首部命令还是隐含地通过“if-modified since”GET命令,装置都可以提供具有被高速缓存首部信息的请求。
在方法1050的简要概括中,在步骤1055,诸如设备200或客户机102的装置拦截或接收识别一个或多个对象的通信,例如页面。例如,装置可以拦截具有到由初始服务器106提供的对象的一个或多个链接或URL的web页面。在步骤1060,装置将所拦截的页面转发到请求方,例如客户机、用户或客户机上的应用。在步骤1065,装置确定通过所拦截的页面所识别的对象的首部信息位于或存在于高速缓存232中。响应于该确定,在步骤1070,装置产生请求以获得对象的首部信息,诸如例如,通过HTTP头命令。装置将产生的请求传输到服务器。在步骤1075,装置从提供对象上首部信息,例如用于HTTP对象的HTTP首部值,的服务器接收响应。在步骤1080,装置基于由来自服务器的响应所接收的首部信息来更新存储在高速缓存中的对象的首部信息。
进一步详细地说,在步骤1055,高速缓存装置拦截从一个装置到另一装置的用于识别对象的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,装置是设备200。在另一实施例中,装置是客户机102。在一个实施例中,装置拦截来自服务器的对对象的客户机请求的响应。在一些实施例中,服务器106传输一个或多个网络分组,该网络分组具有识别对象的应用协议层净荷。
在步骤1060,装置转发或传输所拦截的页面、响应或通信到请求方。在一个实施例中,装置一拦截到或在此之后立即转发所拦截的页面。在其他实施例中,装置在识别页面上的一个或多个对象之后转发所拦截的页面。在又一实施例中,装置制作用于进一步处理的所拦截页面的备份并且一旦制作了备份就将页面转发到请求方。在一些实施例中,装置转发所拦截的通信到客户机102的请求方。在其他实施例中,装置转发所拦截的页面到应用,例如web浏览器。在另一实施例中,装置转发页面到用户。
在步骤1065,装置和/或预取器904确定由所拦截的通信识别的对象的首部信息是否位于、存储于或存在于高速缓存232中。在一些实施例中,高速缓存232位于装置上。在其他实施例中,高速缓存232位于可由设备200或客户机102访问的另一装置上。在一个实施例中,预刷新器904查询高速缓存232以便在高速缓存232中定位对象首部。在一些实施例中,预刷新器904在存储装置中搜索对象首部。在其他实施例中,预刷新器904通过在对象或高速缓存索引中查询或查找来确定对象首部在高速缓存中。在又一些实施例中,预刷新器904利用应用编程接口(API)、函数调用或脚本来确定对象首部是否位于装置的存储装置中或高速缓存232中。在一些实施例中,预刷新器904通过消息将查询发送到另一应用、程序、服务、进程或任务以便确定对象的首部信息是否位于拦截页面的装置的高速缓存232中或发送到具有高速缓存232的另一装置。
在步骤1070,响应于确定所识别对象的首部信息存储或位于高速缓存232中,装置和/或预取器904产生请求以获取对象的首部信息。在一个实施例中,预取器904产生HTTP头命令以请求所识别对象上的首部信息。在其他实施例中,预取器904产生请求以便利用任何类型和形式的应用协议查询或获取对象上的首部信息。例如,在一个实施例中,预取器904可以利用XML语言来请求对象首部信息。在一些实施例中,预取器904产生请求以便从数据库系统或对象存储库获取对象的首部信息。在一些实施例中,预取器904产生具有诸如结合图7A-7D所述的推测性预取优先级的请求。在其他实施例中,预取器904利用任何类型和形式的QoS调度和/或优先级来调度并传输所产生的请求。
进一步到步骤1070,装置将对所识别对象首部信息所产生的请求传输到服务器106。在一个实施例中,装置将所产生的请求传输到产生页面的服务器。在另一实施例中,装置将所产生的请求传输到第二服务器。在一些实施例中,装置将所产生的请求传输到服务器群组。在其他实施例中,装置将所产生的请求传输到第二设备200’。在一个实施例中,装置根据分配到所产生的请求或与其相关的任何QoS优先级传输所产生的请求。在一些实施例中,装置以低于非预取请求的优先级传输所产生的请求。在其他实施例中,装置以低于来自客户机、用户或客户机上的应用的由装置接收和处理的非预取请求的优先级传输所产生的请求。
在步骤1075,高速缓存装置接收来自服务器的响应,其具有识别对象上首部信息的信息。例如,在HTTP的实施例中,装置接收具有任何一个或多个HTTP首部的响应。在一些实施例中,该响应具有以下HTTP首部中的一个或多个:接收范围、寿命、允许、高速缓存控制、内容编码、内容语言、内容长度、内容位置、内容类型、日期、电子卷标、期满、最后修改、位置、附注、代理鉴定、后重试(retry-after)、服务器以及变化。在其他实施例中,装置接收具有XML内容的响应,其用于识别为对象提供首部信息的一个或多个属性、性能或名称值对。在另一实施例中,装置接收具有消息的响应,该消息具有识别对象首部信息的名称值对。在又一些实施例中,装置接收识别对象首部的性能或属性的远程程序调用响应。
在步骤1080,高速缓存装置和/或预取器904更新存储在高速缓存232中的对象首部信息。在一个实施例中,预取器904将首部的更新版本存储在高速缓存232中。在另一实施例中,预取器904更新或存储对象首部的改变部分到高速缓存232中。例如,预取器904在高速缓存232中更新首部信息的期满或确认信息。在其他实施例中,装置确定首部信息还未改变或不更新被高速缓存的首部信息。
在一些实施例中,一旦预取了首部信息,高速缓存装置就可以确定是否预取所拦截通信中所识别的对象。在一个实施例中,方法1050在图10B所述的方法1000实施例的步骤1025处继续。
在很多情况下,大部分高速缓存命中是位于高速缓存中或被标记为陈旧的“近命中(near-hit)”对象,但与服务器上的内容一致。例如通过HTTP头命令仅请求首部信息的预刷新算法将在确定是否取出、预取、预刷新或刷新对象而几乎不使用或使用很少带宽方法提供显著优点。
K.用于预取或利用动态生成页面的不可高速缓存内容作为压缩历史的 系统和方法
现在参考图11A-11D,描述在压缩和/或高速缓存装置之间利用动态生成页面的不可高速缓存内容作为压缩历史中的数据的系统和方法。在一些情况下,服务器向第一用户传输个性化版本或所请求web页面的动态生成版本。这种动态生成页面可不被识别为可高速缓存的或不受高速缓存的控制。例如,通过服务器动态生成的一个或多个对象可不被服务器识别为可高速缓存的。服务器还将web页面的个性化版本传输到第二用户。在一些情况下,第一用户的个性化web页面的部分数据可以与相同页面的第二用户版本的一些部分相同。类似地,第一用户随后,也就是说在第一请求之后一小时,接收的页面个性化版本可以与第一用户的第一先前个性化web页面相同或类似。下面描述的压缩引擎的系统和方法影响不可高速缓存的动态生成页面之间数据的相似性,以提高压缩装置之间通信的内容的压缩能力。
参考图11A,描述利用不可高速缓存内容作为压缩装置之间所使用的压缩历史数据的系统实施例。简而概括地说,诸如第一设备200的第一装置和诸如客户机102或第二设备200’的第二装置利用压缩历史的数据压缩在装置之间传输的通信。第一设备200具有第一压缩历史1138,其与第二设备200’或客户机102的第二压缩历史1138’共享、同步或结合使用。第一设备200拦截来自服务器106的内容。设备200的压缩引擎238利用来自压缩历史1138中的数据压缩所拦截的内容。第一设备200传输所压缩的内容。第二设备200’或客户机102接收所压缩的内容且第二压缩引擎238’利用来自第二压缩历史1138’中的数据解压被压缩的内容。第二压缩历史1138’具有设备200的压缩引擎238所使用的第一压缩历史1138的相同的数据。同样,第二设备200’或客户机102传输经由压缩引擎238’和第二压缩历史1138’压缩的被压缩内容。第一设备200接收被压缩内容并利用第一压缩历史1138的共享数据解压该内容。
进一步概括并如图11A上部的系统实施例所示,第一设备200可以拦截由服务器106到客户机102传输的不可高速缓存内容1150。例如,不可高速缓存内容1150可以包括为客户机102的第一用户动态生成或个性化的web页面。虽然设备200将该内容识别为不可高速缓存的,但设备200将该内容存储到压缩历史1138,其还可以是高速缓存232或其一部分。第二设备200’和/或客户机102也可以拦截不可高速缓存内容1150,将该内容识别为不可高速缓存并将该不可高速缓存的内容存储到压缩历史1138’。设备200、200’和/或客户机102可以拦截多个页面的不可高速缓存内容1150并将该内容存储到相应的压缩历史1138、1138’。
如位于图11A下半部的系统实施例所示,客户机102的第一用户或第二用户可以请求来自服务器106的第二动态生成或个性化页面。第一设备200拦截由服务器106传输的第二不可高速缓存内容1152。第二不可高速缓存内容1152的部分数据分组括与存储在压缩历史1138中的第一不可高速缓存内容1150的部分数据相同的数据。压缩引擎238基于存储在压缩历史1138中的第一不可高速缓存内容1150产生不可高速缓存内容1152的压缩版本1155。第一设备200传输压缩内容1155到客户机102或第二设备200’。客户机102或第二设备200’拦截压缩内容1155,且压缩引擎238’利用存储在第二压缩历史1138’中的第一不可高速缓存内容1150解压第二不可高速缓存内容1152的压缩版本1155。
在一些实施例中,不可高速缓存内容1150、1152包括一个或多个动态生成的对象。在一个实施例中,不可高速缓存内容1150、1152通过动态生成内容的识别而被识别为不可高速缓存的。在其他实施例中,不可高速缓存内容1150、1152包括未被识别为可高速缓存或识别为不可高速缓存的一个或多个对象。在另一实施例中,动态生成内容的第一对象被识别为可高速缓存或处于高速缓存控制中而第二对象未被识别为可高速缓存或未处于高速缓存控制中。在一些实施例中,不可高速缓存内容1150、1152包括不具有任何HTTP高速缓存控制首部或HTTP指令(HTTP Derective)的HTTP内容。在一个实施例中,不可高速缓存内容1150、1152包括不具有HTTP高速缓存控制首部或指令的一个或多个对象。在另一实施例中,不可高速缓存内容1150、1152包括不具有HTTP电子卷标指令信息的一个或多个对象。在又一实施例中,不可高速缓存内容1150、1152包括将一个或多个对象识别为不可高速缓存的HTTP首部或指令。在一些实施例中,不可高速缓存内容1150、1152包括HTTP首部或指令信息或引导接收器不高速缓存一个或多个对象。在一个实施例中,不可高速缓存内容是基于来自对内容的请求的参数或信息而动态产生的。
设备200、200’和客户机102(在此也称作压缩装置)可以存储任何类型和形式的数据到压缩历史1138、1138’,有时称作压缩历史1138。在一些实施例中,压缩装置拦截网络分组并存储网络分组任何协议层的任何净荷或其一部分到压缩历史1138。在一个实施例中,压缩装置存储通过应用层协议获得的应用数据到压缩历史1138。在一些实施例中,压缩装置存储网络分组的首部,例如HTTP净荷的应用层首部,到压缩历史1138。在其他实施例中,压缩装置不存储网络分组的首部。
压缩引擎238可以在存储装置128中存储压缩历史1138,该存储装置例如磁盘、存储器,例如RAM,或存储装置与存储器的组合。在一些实施例中,压缩引擎238利用对象或数据索引参考或识别存储在压缩历史中的对应对象或数据。在一个实施例中,压缩引擎238利用存储在存储器中的对象索引。在其他实施例中,压缩引擎238利用存储到磁盘上的对象索引。对象索引包括任何类型和形式的用于将索引对应到压缩历史1138中的对象的索引方案。在一个实施例中,对象索引保持在存储器中而对应的对象存储在压缩历史1138中。在一些实施例中,对象索引包括参考或识别到存储于压缩历史1138中的对象的位置或指针的条目。在一个实施例中,对象索引利用对象名称或标识符上的任何类型的无用数据、校验和或指纹功能作为条目或索引。在一些实施例中,对象索引对对象或压缩历史1138中的部分数据运行哈希、校验和或指纹。在另一实施例中,对象索引的条目是对象的名称或标识符。在一些实施例中,用于条目或索引的值是对象在存储器中位置的位置标识符。例如,索引值可以包括到开始地址或对象位置的指针。
在又一实施例中,压缩引擎238建立、组织、布置或保持压缩历史的逻辑存储单元,称为“组块(chunk)”。压缩引擎238可以保持用于每个逻辑存储单元的唯一标识符并在“组块”的存储装置中相关一大小以及开始点和结束点。在一个示例中,索引值包括组块的标识符和用于对象开始位置的到组块内的偏移量。压缩引擎238可以在索引中存储识别对应于逻辑存储单元的标识符的数据部分的条目。
在一个实施例中,压缩引擎238存储任何数量和类型的先前传输数据到压缩历史1138,该先前传输数据经过压缩装置或被该装置拦截。在一些实施例中,压缩引擎238存储所有经过装置的数据到压缩历史1138。在其他实施例中,压缩引擎238可以基于任何因素从数据流选择部分数据存储到压缩历史1138,这些因素包括但不限于数据流源、数据流目的地、传输协议、应用协议、可用磁盘空间、当前磁盘利用(usage)、可用存储器空间、当前可用带宽和数据部分的大小。在一些实施例中,压缩引擎238可以存储在压缩历史1138中利用任何类型和形式的无损压缩算法压缩的数据。在其他实施例中,压缩引擎238可存储使用任何类型荷形式的加密算法在压缩历史1138中加密的数据。
在将数据写到压缩历史1138时,该数据例如所拦截的网络业务量的一部分,诸如客户机102或设备200的装置可以建立共享标识符以使装置和接收所传输数据的装置能够在后面的通信中查阅部分数据。在一个实施例中,这种标识符可以是两个装置之间的唯一标识符。在其他实施例中,这种共享标识符可以是多个装置中全局唯一标识符。共享标识符例如可以通过追踪通过各装置之间的连接而传送的字节数目并将连续标识符分配给所传输的连续字节来建立。
在操作时,设备或客户机通过压缩引擎238在压缩历史1138中从所拦截的数据流识别部分数据。然后设备用标识符取代数据流的这些部分,该标识符识别具有这些部分的压缩历史1138的位置。一旦接收具有压缩历史中对位置参考的数据流,诸如客户机102或设备200的接收装置就搜索其压缩历史1138以查找数据已标识部分。然后装置用数据的已标识部分替代数据流中的标识符,并将未压缩的数据流转发到预期的接收方。在一个实施例中,客户机转发未压缩的数据到请求方,例如浏览器或客户机上的应用。在另一实施例中,设备转发未压缩的数据到客户机102或第二设备200’。
现在参考图11B,描述利用动态生成页面的不可高速缓存内容作为压缩和/或高速缓存装置之间压缩历史中的数据的方法1100的实施例。简而概括地说,在步骤1105,装置拦截或接收通过第一会话传输到客户机的第一页面。第一页面识别由服务器动态生成的不可高速缓存内容。在步骤1110,装置将第一页面的不可高速缓存内容存储到压缩历史。在步骤1115,装置拦截通过第二会话传输到客户机的第二页面。第二页面具有不可高速缓存内容。在步骤1120,装置确定第二页面的至少一部分与存储到压缩历史的第一页面的不可高速缓存内容相匹配。在步骤1125,装置利用压缩历史中的第一页面的匹配不可高速缓存内容压缩第二页面的一部分。在步骤1130,装置将已压缩的内容通信或转发到目标接收方。
进一步详细地说,在步骤1105,诸如客户机102或设备200的装置拦截通过客户机102和服务器106之间任何类型和形式会话而传输的第一页面。装置拦截从一个装置到识别不可高速缓存对象的另一装置的任何类型和形式的通信,例如从服务器到客户机传输的页面。在一个实施例中,装置拦截来自服务器的客户机对动态生成对象的客户机请求的响应。在一些实施例中,服务器106传输具有识别不可高速缓存对象的应用协议层净荷的一个或多个网络分组。例如,在一个实施例中,装置拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括识别不可高速缓存对象的统一资源定位符(URL)或超链接。
会话可以包括任何类型和形式的应用层会话,例如HTTP会话。在一个实施例中,会话可以包括会话层会话,例如SSL或TLS。在又一实施例中,会话可以包括通过传输层连接,例如TCP/IP连接,的任何会话通信。在一些实施例中,会话是为用户建立的或者代表用户,例如客户机102的用户或其应用。
第一页面识别例如由服务器106动态生成的不可高速缓存内容。在一些实施例中,第一页面是为请求方个性化的来自服务器的版本内容,请求方例如是用户或应用。在其他实施例中,第一页面包括基于来自内容请求的参数或信息而动态生成的内容。在另一实施例中,第一页面包括一个或多个先前提供的对象的更新或变化。
在步骤1110,装置存储第一页面的不可高速缓存内容1150到压缩历史。在一个实施例中,装置识别不可高速缓存内容并响应于该识别,将不可高速缓存内容或其一部分存储到压缩历史1138。在一些实施例中,装置将对象识别为不可高速缓存的并将所识别的对象存储到压缩历史1138。在其他实施例中,装置识别具有动态生成内容的页面并将该内容存储到压缩历史1138。在另一实施例中,装置识别表示对象是不可高速缓存的或不应被高速缓存的服务器,且装置将对象存储到压缩历史1138。例如,页面或用于对象的应用层首部可以将对象识别为不可高速缓存的。
在步骤1110’,在一些实施例中,诸如客户机102或设备200’的第二装置也拦截并存储由诸如设备200的第一装置拦截并转发的不可高速缓存内容。在这些实施例中,第二压缩引擎238和第二压缩历史1138’将不可高速缓存内容存储在压缩历史中以便同步或保持压缩装置之间的共享的部分数据。在其他实施例中,诸如设备200的第一装置将压缩历史1138的各部分传输到诸如客户机102的第二装置以使第二装置在压缩历史1138’存储。
在许多实施例中,装置在一个或多个会话和/或为一个或多个用户多次进行步骤1105和1110。在一个实施例中,装置拦截并存储用于第一会话的不可高速缓存内容。在另一实施例中,装置拦截并存储用于第二会话的不可高速缓存内容。在一些实施例中,装置为第一用户拦截并存储不可高速缓存内容。在其他实施例中,装置为第二用户拦截并存储不可高速缓存内容。在一些实施例中,装置拦截并存储第一类型会话的不可高速缓存内容,例如HTTP会话。在其他实施例中,装置拦截并存储第二类型会话的不可高速缓存内容,例如web应用会话或主服务会话。在又一些实施例中,装置拦截并存储一个或多个会话协议的不可高速缓存内容,例如SSL的第一会话协议和ICA的第二会话协议。在再一些实施例中,装置拦截并存储网络堆栈第一协议层和网络堆栈第二协议层的不可高速缓存内容。
在步骤1115,装置拦截或接收通过第一会话或第二会话传输到客户机的第二页面。在一个实施例中,装置拦截通过第一会话传输到例如第一用户的第二页面。在另一实施例中,装置拦截通过第二会话传输的第二页面,例如与第二用户的新会话。在又一实施例中,装置拦截与第一用户的第二会话的第二页面。在一些实施例中,服务器利用与第一会话不同的会话或应用协议通过第二会话传输第二页面。在又一实施例中,第二页面通过第二会话传输,第二会话用于不同于第一会话的应用或主服务的或与其相同的应用或主服务。
如上结合第一页面所述,第二页面可以包括在此描述的任何类型和形式的不可高速缓存内容1152。例如,第二页面包括web页面的个性化版本或用于第二用户的HTTP内容。在另一实施例中,第二页面包括第一页面的但由不同请求动态产生的一个或多个对象。在一个实施例中,对第一页面的动态生成内容的请求具有不同于对动态生成的第二页面的请求的参数。在一些实施例中,第二页面具有与第一页面相同的可高速缓存内容。在一些实施例中,第一页面的部分不可高速缓存内容与第二页面相同。
在步骤1120,装置确定第二页面的至少一部分与存储到压缩历史的第一页面的不可高速缓存内容相匹配。在一些实施例中,压缩引擎238响应于对拦截页面中不可高速缓存内容的识别执行所拦截页面的数据与压缩历史的匹配。在一个实施例中,压缩引擎238确定第二页面的不可高速缓存内容是从与存储到压缩历史1138的其他不可高速缓存内容相同的服务器传输的。在另一实施例中,压缩引擎238确定第二页面是通过与存储在压缩历史1138中的不可高速缓存内容相同的会话传输的。在其他实施例中,压缩引擎238确定第二页面被传输到与存储在压缩历史1138中的不可高速缓存内容相同的客户机或客户机应用。在又一些实施例中,压缩引擎238确定第二页面被传输到与存储在压缩历史1138的不可高速缓存内容相同的用户。在一个实施例中,压缩引擎238确定第二页面具有与第一页面相同的可高速缓存对象并由此确定不可高速缓存内容可能是相似的。在又一实施例中,压缩引擎将所拦截页面可高速缓存对象的一部分与存储在压缩历史1138中的不可高速缓存内容的一部分相匹配。在再一实施例中,压缩引擎238将所拦截页面不可高速缓存对象的一部分匹配到存储在压缩历史1138中的可高速缓存内容的一部分。
在一个实施例中,客户机或设备的压缩引擎238确定第二页面不可高速缓存内容中的一个或多个数据字节的数据与压缩历史1138中的数据相匹配。压缩引擎238可以利用任何类型的指纹算法或方案来确定匹配。在一些实施例中,压缩引擎将所拦截的第二页面的部分数据的指纹与压缩历史1138中部分数据的一个或多个指纹相比较。在一个实施例中,压缩引擎238将第二页面不可高速缓存内容1152的一部分的指纹与存储在压缩历史1138中的第一页面的不可高速缓存内容1150的有部分的指纹相比较。在一个实施例中,压缩引擎238通过将数据不可高速缓存内容的指纹与压缩历史1138的对象索引中的指纹相匹配来确定匹配。在另一实施例中,压缩引擎238通过搜索所拦截的不可高速缓存内容的数据顺序来确定与压缩历史11338中数据的匹配。
在步骤1125,装置利用压缩历史中第一页面的匹配不可高速缓存内容压缩第二页面的该部分。在一些实施例中,压缩引擎238压缩所拦截页面的全部或任何部分以形成第二页面的压缩的表示1155。在一个实施例中,压缩引擎238利用存储在压缩历史1138中不可高速缓存的第一页面的一个或多个部分来压缩第二页面不可高速缓存内容的一个或多个部分。在一些实施例中,压缩引擎238利用存储在压缩历史1138中的第一页面不可高速缓存对象的一部分来压缩第二页面的第一不可高速缓存对象。在又一实施例中,压缩引擎238利用压缩历史1138中的部分第一不可高速缓存对象和部分第二不可高速缓存对象来压缩第二页面的第一不可高速缓存对象。在其他实施例中,压缩引擎238利用存储在压缩历史1138中的个性化页面的一个或多个部分来压缩第二页面个性化内容的至少一部分。在又一实施例中,压缩引擎238利用存储在压缩历史1138中的第一页面的部分不可高速缓存内容来压缩第二页面可高速缓存对象的至少一部分。在一个实施例中,压缩引擎238利用存储在压缩历史1138中的部分可高速缓存内容来压缩第二页面不可高速缓存对象的至少一部分。
在步骤1130,装置将压缩内容1155通信到期望的接收方或目标接收方。在一些实施例中,客户机102将压缩内容通信到设备200或服务器106。在另一实施例中,客户机102将压缩内容通信到客户机102上的应用,例如浏览器。在其他实施例中,设备102将压缩内容通信到客户机102或第二设备200’。诸如客户机102的接收方拦截压缩内容1155,并利用与传送装置所用的压缩相对应的压缩历史1138’中数据的自身备份来解压该压缩内容1155。
现在参考图11C和11D,描述用于预取不可高速缓存内容或对象并存储到压缩历史的系统和方法的实施例。在图11C的简要概括中,描述具有网络优化引擎250的设备200。诸如设备200或客户机102的装置拦截或接收由初始服务器106提供或通过另一设备200’传输的通信或页面并转发该页面到请求客户机。所接收的页面可以识别一个或多个不可高速缓存对象,例如通过统一资源定位符或超链接。设备通过预取器704产生请求1160以便从服务器106获取不可高速缓存对象。该请求可以被认为是预取,其中接收页面的用户还没有请求由该页面识别的对象但设备200根据从用户拦截的对象请求的预料而请求对象。预取器704将请求传输到初始服务器106以便预取不可高速缓存对象。设备从服务器接收包括不可高速缓存对象的响应并将对象存储到设备所用的压缩历史中。
如前面结合图7A-7D所描述的,预取器704包括或为请求提供用于产生请求或分组的逻辑、商业规则、功能或操作。在一个实施例中,预取器为请求或响应产生一个或多个数据分组。在一些实施例中,预取器704产生请求以便预取所识别的对象,例如由所拦截的页面识别的对象,并开始将产生的请求传输到服务器106。在一个实施例中,预取器704对通过页面识别的不可高速缓存对象产生请求1160。在其他实施例中,预取器基于用户对不可高速缓存对象产生请求1160。在另一实施例中,预取器对服务器动态生成的不可高速缓存对象产生请求1160。在一种情况下,请求1160使服务器动态生成不可高速缓存对象,例如用于个性化web页面的对象。在一些实施例中,预取器704产生识别为推测性或具有低于非预取请求的QoS优先级的不可高速缓存对象请求1160。在其他实施例中,预取器704接收对预取请求的响应并将响应的不可高速缓存对象存储到压缩历史1138中。
虽然预取器704被示为协议加速器的一部分,但预取器可以包括在网络优化引擎250的任何部分中。例如,在一些实施例中,压缩引擎238包括预取器,其用于预取压缩历史1138的可高速缓存和/或不可高速缓存对象。
现在参考图11D,描述用于预取用于压缩历史1138的不可高速缓存内容的方法1170的步骤实施例。简而概括地说,在步骤1172,诸如设备200或客户机102的装置拦截或接收识别一个或多个不可高速缓存对象的通信。在步骤1174,装置转发该通信到请求方。在步骤1176,装置对不可高速缓存对象产生请求并将所产生的请求传输到服务器。在步骤1178,装置将不可高速缓存对象存储到压缩历史1138。压缩引擎238可以利用所存储的不可高速缓存对象压缩一个或多个客户机和一个或多个服务器之间随后通信的内容。
进一步详细地说,在步骤1172,装置拦截或接收识别不可高速缓存对象的从一个装置到另一装置的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,装置是设备200。在另一实施例中,装置是客户机102。在一个实施例中,装置从服务器拦截对客户机不可高速缓存对象的请求的响应。在一些实施例中,服务器106传输具有识别不可高速缓存对象的应用协议层净荷的一个或多个网络分组。例如,在一个实施例中,装置拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括识别不可高速缓存对象的统一资源定位符(URL)或超链接。在一些实施例中,诸如客户机的装置拦截由URL识别的页面且该页面识别一个或多个不可高速缓存对象。
在步骤1174,装置转发或传输页面、响应或通信到请求方。在一个实施例中,装置一旦拦截、接收或在此之后立即转发页面。在其他实施例中,装置在识别页面上的一个或多个对象之后转发页面。在又一实施例中,装置制作用于进一步处理的页面备份,并且一旦制作了备份就转发页面到请求方。在一些实施例中,装置转发所接收的通信到客户机102的请求方。在其他实施例中,装置转发所拦截的页面到应用,例如web浏览器。在另一实施例中,装置转发页面到用户。
在步骤1176,响应于识别不可高速缓存对象,装置和/或预取器704对来自对象的服务器的不可高速缓存对象产生请求1160。在一个实施例中,预取器904对不可高速缓存对象产生HTTP请求。在其他实施例中,预取器704产生请求以便利用任何类型和形式的应用协议查询或获取不可高速缓存对象。例如,在一个实施例中,预取器704可以利用XML语言来请求不可高速缓存对象。在其他实施例中,预取器704对识别在步骤1172所接收通信的用户的不可高速缓存对象产生请求。在一些实施例中,预取器704对识别另一用户例如装置的用户的不可高速缓存对象产生请求。在一个实施例中,预取器704产生引发服务器动态生成对象的请求。在一种情况下,该请求识别用于动态生成对象的用户,例如用于个性化web页面。在一些实施例中,预取器704对具有如结合图7A-7D所述的推测性预取的优先级的不可高速缓存对象产生请求。在其他实施例中,预取器904利用任何类型和形式的QoS调度和/或优先级来调度并传输所产生的请求。
进一步到步骤1176,装置将对不可高速缓存对象产生的请求传输到服务器106。在一个实施例中,装置将所产生的请求传输到产生页面的服务器。在另一实施例中,装置将所产生的请求传输到第二服务器。在一些实施例中,装置将所产生的请求传输到服务器群组。在其他实施例中,装置将所产生的请求传输到第二设备200’。在一个实施例中,装置根据分配到所产生请求的或与其相关的任何QoS优先级来传输所产生的请求。在一些实施例中,装置以低于非预期请求的优先级传输所产生的请求。在其他实施例中,装置以低于来自客户机、用户或客户机上应用的由装置接收并处理的非预取请求的优先级传输所产生的请求。
在步骤1178,装置从服务器接收具有不可高速缓存对象或其内容的响应。在一个实施例中,装置接收为特定用户产生的不可高速缓存对象。在另一实施例中,装置接收不取决于用户的不可高速缓存对象。在一些实施例中,装置接收一旦接收了请求而由服务器动态产生的对象。在其他实施例中,装置接收来自另一装置的高速缓存的不可高速缓存对象,该另一装置例如设备、客户机或服务器。
在步骤1180,装置将不可高速缓存对象存储到压缩历史1138。在一些实施例中,装置将不可高速缓存对象存储到压缩历史1138和高速缓存。在一个实施例中,压缩历史1138和高速缓存232使用相同的存储装置或其一部分。在另一实施例中,压缩引擎238利用高速缓存232或其一部分作为压缩历史。
通过预加载或预取具有所拦截的不可高速缓存HTTP内容的压缩历史,压缩引擎可以改进或提高HTTP网络业务量的可高速缓存和不可高速缓存内容的压缩能力。虽然以上系统和方法总体上在上面结合诸如HTTP页面的页面来描述,但是方法1100的技术或图11A的系统实施例可以用于非HTTP协议。
通过多协议和多会话压缩引擎238将不可高速缓存内容存储到压缩历史,压缩引擎238提高了WAN和/或LAN链接上通信的内容的压缩能力,从而减小了带宽、减少了等待时间并提高了响应时间。
L.用于利用非HTTP网络文件传输作为基于HTTP业务量的压缩历史的 系统和方法
现在参考图12A和12B,描述利用压缩历史中非HTTP文件传输数据来压缩基于HTTP业务量的系统和方法。通过这些技术,经过压缩装置访问的非HTTP可以利用来自所访问的这种非HTTP的数据来提高HTTP业务量的压缩能力。例如,网络文件传输可以用于预加载具有远程备份命令的压缩历史,例如:rcpremote-file/dev/null。远程文件通过网络备份然后被丢弃,但是压缩引擎将数据存储在压缩历史中。如果用户通过HTTP请求访问该文件,压缩引擎则利用压缩历史中的非HTTP文件传输的数据。通过在下面更详细描述的这种技术,非HTTP或ad-hoc网络文件传输可以用于为用于压缩HTTP网络业务量的压缩装置提供内容分配。
参考图12A,描述用于为压缩装置分配或预取非HTTP内容以便以后压缩HTTP内容的系统实施例。简而概括地说且如以上结合图11A和11B所述,诸如第一设备200的第一装置和诸如客户机102或第二设备200’的第二装置利用共享同步的压缩历史1138的数据压缩装置之间传输的通信。用户、应用或装置发起非HTTP网络文件传输1250,例如从第一系统到第二系统的一个或多个文件的远程备份或从一个装置到另一个的文件ftp。例如,用户可以执行从服务器106到客户机102的一个或多个文件的备份。在另一示例中,设备200的系统管理员可以执行来自服务器106的文件的远程备份,以便预加载具有文件的设备的压缩历史1138。这种非HTTP网络文件传输可以遍历一个或多个压缩装置,例如设备200和客户机102或第二设备200’。
在进一步的概括和如图13A上部的系统实施例所示,第一设备200可以拦截或接收非HTTP文件传输1250,例如由服务器106传输到客户机102的文件。虽然设备200将内容识别为非HTTP,但设备200将该内容存储到压缩历史1138,其还可以是高速缓存232或其一部分。第二设备200’和/或客户机102也可以拦截非HTTP网络文件传输1250,并将该内容从文件传输存储到压缩历史1138’。设备200、200’和/或客户机102可以拦截多个非HTTP文件传输并将文件或其内容存储到相应的压缩历史1138、1138’。
如位于图12A下半部的系统实施例所示,客户机102的用户可以请求来自服务器106的HTTP内容。例如,客户机可以传输HTTP请求到一个或多个文件或对象的服务器。响应于该请求,服务器传输包括被请求对象或文件的HTTP响应。第一设备200拦截由服务器106传输的HTTP内容1252。HTTP内容1252的一部分数据包括与存储在压缩历史1138中的非HTTP文件传输的一部分相同的数据。响应于检测所拦截数据与压缩历史1139中数据之间的匹配,压缩引擎238根据存储在压缩历史1138中的非HTTP内容1250产生HTTP内容1252的压缩版本1255。第一设备200将压缩内容1255传输到客户机102或第二设备200’。客户机102或第二设备200’拦截压缩内容1255,且压缩引擎238’利用存储在第二压缩历史1138’中的非HTTP文件传输内容1250解压HTTP内容1252的压缩版本1255。
参考图12B,描述利用非HTTP内容来压缩HTTP业务量的方法1200的步骤实施例。简而概括地说,在步骤1205,用户或应用执行非HTTP文件传输,例如系统管理员发起来自服务器的文件的远程备份。在步骤1210,诸如设备200或客户机102的装置拦截或接收非HTTP网络文件传输1250的网络分组。在步骤1215,装置响应于识别非HTTP网络文件传输1250而将文件传输的内容存储到压缩历史。在步骤1220,装置拦截具有HTTP内容1252的通信,例如HTTP页面。在步骤1225,装置确定HTTP内容1252的一部分与存储在压缩历史1138中的非HTTP文件传输的一部分相匹配。在步骤1230,装置利用存储在压缩历史1138中的非HTTP内容压缩部分HTTP内容。在步骤1235,装置将压缩内容1255通信到目标接收方。
进一步详细地说,在步骤1205,用户或应用发起或执行任何类型和形式的网络文件传输1250。在一些实施例中,网络文件传输使用任何类型和形式的应用层协议。在一个实施例中,网络文件传输适用非HTTP协议。在另一实施例中,网络文件传输使用文件传输协议,例如任何版本和类型的FTP。在其他实施例中,网络文件传输使用网络基本输入/输出系统(Network BasicInput/Output System)、NetBioS来传输文件。在一个实施例中,网络文件传输使用NetBEUI协议来传输文件。在一些实施例中,网络文件传输使用服务器消息块(SMB)协议。在又一实施例中,网络文件传输使用CIFS协议来传输一个或多个文件。在再一实施例中,网络文件传输使用消息应用编程接口(MAPI),例如通过email,来传输文件。在一些实施例中,网络文件传输包括用于将数据通信到或经由打印机、串行端口、并行端口或其他通信端口或装置的任何协议。
在一些实施例中,用户通过远程备份命令发起网络文件传输。在一个实施例中,网络文件传输将一个或多个文件从一个系统复制到第二装置的空闲装置,称作Linux或Unix操作系统上的/dev/null并且有时称作“位存储桶(bit bucket)”。在一些实施例中,网络文件传输仅将文件临时复制到系统而不永久存储。在又一实施例中,用户在网络上发起数据的打印或传真,例如打印或传真来自网络驱动器或服务器106上的文件夹的文件或文档。在一些实施例中,用户在网络上电子邮件发送一个或多个文档,例如LAN或WAN。在再一实施例中,用户通过文件浏览器(exploxer)或用户界面将一个或多个文件从第一装置的存储装置通过网络复制到第二装置的存储装置,例如通过拖放文件。在另一实施例中,用户通过文件传输协议程序、应用或用户界面传输装置之间的一个或多个文件。
在一些实施例中,诸如客户机102或设备200的压缩装置发起网络文件传输。例如,在一个实施例中,网络优化引擎250包括逻辑、函数或操作以执行穿越装置的文件的网络传输,以便用数据预取或填入压缩历史1138。在一些实施例中,网络优化引擎250响应于检测来自服务器的请求和/或网络业务量,发起从服务器到另一装置的文件的网络传输。在又一实施例中,网络优化引擎250基于策略引擎295的一个或多个策略触发网络文件传输的执行以便用期望的数据填入压缩历史1138。在一个实施例中,设备200的系统管理员或压缩装置执行网络文件传输以便用特定数据填入压缩历史。
在步骤1210,诸如客户机102或设备200的装置拦截或接收装置之间通信的网络文件传输1250。在一个实施例中,装置拦截识别非HTTP文件传输的从一个装置到另一装置的任何类型和形式的通信,该文件传输例如远程复制或具有文件内容。在一些实施例中,装置拦截识别文件传输的一个或多个网络分组。在另一实施例中,装置拦截具有一个或多个文件的内容的网络分组的应用净荷。在其他实施例中,装置通过如下方式拦截网络文件传输的一个或多个网络分组:远程复制、文件传输协议(FTP)、Email、打印或传真。
在步骤1215,装置将内容1250的全部或任何部分存储到压缩历史1138。在一个实施例中,装置识别非HTTP网络文件传输并响应于该识别,将内容或其一部分存储到压缩历史1138。在一些实施例中,装置识别内容1250中的文件并将该文件存储到压缩历史1138。在其他实施例中,装置识别具有文件的数据的网络分组的净荷并将数据存储到压缩历史1138。在另一实施例中,装置确定网络分组识别具有文件的内容的后续网络分组,并将后续网络分组的内容存储到压缩历史1138。
在步骤1215’,在一些实施例中,诸如客户机102或设备200’的第二装置也拦截并存储由诸如设备200的第一装置拦截并转发的网络文件传输内容。在这些实施例中,第二压缩引擎238’和第二压缩历史1138’将文件传输内容或其任何部分存储到压缩历史1138’中,以便同步或保持压缩装置之间共享的部分数据。在其他实施例中,诸如设备200的第一装置将压缩历史1138的一些部分传输到诸如客户机102的第二装置,用于第二装置存储在压缩历史1138’中。
在许多实施例中,装置对一个或多个网络文件传输1250、1250’多次进行步骤1210和1215。在一个实施例中,装置通过远程复制拦截并存储来自网络文件传输的内容。在一些实施例中,装置通过FTP拦截并存储来自网络文件传输的内容。在另一实施例中,装置通过email或通过MAPI协议拦截并存储来自网络文件传输的内容。在一些实施例中,装置为第一用户拦截并存储网络文件传输内容。在其他实施例中,装置为第二用户拦截并存储网络文件传输内容。在一些实施例中,装置拦截并存储第一类型协议例如FTP的网络文件传输内容。在其他实施例中,装置拦截并存储第二类型协议例如ICA或RDP的网络文件传输内容。
在步骤1220,诸如客户机102或设备200的装置拦截或接收装置之间的任何类型和形式的HTTP通信1252。在一个实施例中,装置拦截从服务器106传输到客户机的HTTP页面1252。在另一实施例中,装置拦截通过任何一个或多个HTTP会话传输的HTTP页面。在另一实施例中,装置拦截传输到用户浏览器的页面。在一些实施例中,装置拦截与第一用户的第一会话的第一页面。在其他实施例中,装置拦截与第二用户的第二会话的第二页面。在一个实施例中,装置拦截具有一个或多个对象的HTTP内容1252。在另一实施例中,装置拦截具有一个或多个文件的HTTP内容1252。在又一实施例中,HTTP内容1252可以包括如上结合图11A-11B所述的不可高速缓存内容1152。例如,在一个实施例中HTTP内容1252可以包括用于第一用户的HTTP页面的个性化版本。在另一实施例中,HTTP内容1252可以包括用于第二用户的HTTP页面的个性化版本。
在步骤1225,装置确定HTTP内容1252的至少一部分与存储到压缩历史1138的网络文件传输1250的内容相匹配。在一些实施例中,压缩引擎238响应于识别包括HTTP的通信而进行所拦截的HTTP内容1252的数据与压缩历史的匹配。在其他实施例中,压缩引擎238响应于识别包括一个或多个文件的内容1252而进行所拦截HTTP内容1252的数据与压缩历史的匹配。在一个实施例中,压缩引擎238响应于识别包括网络文件传输1250的文件的名称或URL的内容1252而进行所拦截HTTP内容1252与压缩历史的匹配。
在一个实施例中,压缩引擎238确定HTTP内容1252是从与存储到压缩历史1138的网络文件传输内容相同的服务器传输的。在其他实施例中,压缩引擎238确定HTTP内容传输到与存储在压缩历史1138中的网络文件传输内容相同的装置。在一个实施例中,压缩引擎238确定HTTP内容1252具有与网络文件传输1250相同的对象或文件。在又一实施例中,压缩引擎238将所拦截HTTP内容1252的一部分与存储在压缩历史1138中的网络文件传输内容1250的一部分相匹配。在又一实施例中,压缩引擎238将所拦截页面的部分不可高速缓存对象与存储在压缩历史1138中的部分网络文件传输内容相匹配。在一个实施例中,压缩引擎238将所拦截页面的部分可高速缓存对象与存储在压缩历史1138中的部分网络文件传输内容相匹配。
在一些实施例中,客户机或设备的压缩引擎238确定HTTP内容252中一个或多个字节的数据的次序与压缩历史1138中的数据相匹配。压缩引擎238可以利用任何类型的指纹算法或方案来确定匹配。在一些实施例中,压缩引擎238将所拦截HTTP内容1250的部分数据的指纹与压缩历史1138中部分数据的一个或多个指纹相比较。在一个实施例中,压缩引擎238将HTTP内容1252的一部分的指纹与存储在压缩历史1138中的部分网络文件传输1252的指纹相比较。在一个实施例中,压缩引擎238通过将HTTP内容1252的数据的指纹与压缩历史1138的对象索引中的指纹相匹配来确定匹配。在另一实施例中,压缩引擎238通过查找来确定所拦截HTTP内容1252的数据的次序与压缩历史1138中的数据相匹配。
在步骤1230,装置利用压缩历史中的匹配网络文件传输内容压缩部分HTTP内容。在一些实施例中,压缩引擎238压缩所拦截HTTP内容1250的全部或任何部分以形成第二页面的压缩表示1255。在一个实施例中,压缩引擎238利用存储在压缩历史1138中的网络文件传输内容的一个或多个部分压缩HTTP内容的一个或多个部分。在一些实施例中,压缩引擎238利用存储在压缩历史1138中的网络文件传输的一个或多个文件的一部分压缩HTTP内容的第一文件。在又一实施例中,压缩引擎238利用存储在压缩历史1138中的网络文件传输的部分第一文件和部分第二文件来压缩HTTP内容的第一对象。在其他实施例中,压缩引擎238利用存储在压缩历史1138中的网路文件传输的一个或多个部分压缩个性化HTTP内容1252的至少一部分。在又一实施例中,压缩引擎238利用存储在压缩历史1138中部分网络文件传输内容压缩HTTP内容可高速缓存对象的至少一部分。在一个实施例中,压缩引擎238利用存储在压缩历史1138中的网络文件传输内容的一部分来压缩HTTP内容不可高速缓存对象的至少一部分。
在步骤1235,装置将压缩内容1255通信到期望的接收器或目标接收方。在一些实施例中,客户机102将压缩内容通信到设备200或服务器106。在另一实施例中,客户机102将压缩内容通信到客户机102上的应用,例如浏览器。在其他实施例中,设备102将压缩内容通信到客户机102或第二设备200’。诸如客户机102的接收器拦截压缩内容1255,并利用与传送装置所用的压缩相对应的压缩历史1138’中数据的自身的备份来解压该压缩内容1255。
M.用于根据装置的操作条件或者连接或服务器的状态来确定是否预取/ 预刷新对象的系统和方法
现在参考图13A和13B,描述用于根据到初始服务器的链接的操作条件或者预取或预刷新装置和/或服务器的操作状态动态地确定是否预取、刷新或预刷新对象的系统和方法。在许多实施例中,初始服务器传送没有期满时间的对象。没有期满信息,就要一直等高速缓存装置确定这些对象还有多长时间保持“新鲜”。如果对象不是新的,则高速缓存装置通过初始服务器检查查看对象是否已改变。在一些情况下,如果初始服务器非常近并且核实新鲜度消耗非常少的时间,则提供相对陈旧的数据是没有意义的。在其他情况下,如果链接非常慢且拥挤而使检查消耗很长或长于期望时间的时间,则提供相对新的数据室没有意义的。
结合图13A和13B所描述的动态刷新启发式技术动态地考虑链接(连接)、高速缓存装置和/或服务器的操作和性能条件以便确定是否检查对象的状态或从服务器获取对象。例如,如果链接的条件在期望阈值以下,则高速缓存装置可以以较低频率或很少检查对象的新鲜度,且可以提供相对陈旧的数据。在另一示例中,如果链接或服务器的状态表明链接或服务器不再操作,则高速缓存装置可以停止与服务器检查对象的新鲜度相符直到重新建立通信。在其他示例中,如果链接和服务器的性能可以,则高速缓存装置确定更频繁地检查对象的新鲜度。
现在参考图13A,描述具有网络优化引擎250的诸如设备200或客户机102的装置。简而概括地说,设备200拦截或接收由初始服务器106提供通过另一设备200’传输的页面并将该页面转发到请求方。网络优化引擎250可以包括操作条件检测器1302,用于动态地确定到服务器的连接、服务器和/或装置(例如设备200或客户机102)的操作和/或性能状态、条件或特性。根据动态检查的操作条件,装置确定是否获取高速缓存中对象的状态或从服务器获取对象的更新。在一个实施例中,网络优化引擎250响应于操作条件检测器1302而确定通过预取器704预取对象。在另一实施例中,网络优化引擎250响应于操作条件检测器1302来确定通过预刷新器904预刷新对象。在其他实施例中,网络优化引擎250响应于操作条件检测器1302来确定不预取、刷新或预刷新对象。
如图13A所示,网络优化引擎250可以包括操作条件检测器1302。操作条件检测器1302包括软件、硬件或软件和硬件的任何组合。操作条件检测器1302可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。操作条件检测器1302包括或提供逻辑、商业规则、函数或操作用于检查或确定以下一个或多个的操作条件、状态、特征和/或性能:例如装置和服务器106之间的网络连接或链接、诸如设备200或客户机102的高速缓存装置、以及一个或多个服务器106。在一些实施例中,操作条件检测器1302包括带宽探测器702,或者其逻辑、功能性和/或其操作,如以上结合图7A-7D所述。
在一个实施例中,操作条件检测器1302检测或确定到具有一个或多个对象的服务器的网络连接的操作条件。在一些实施例中,操作条件检测器1302确定网络连接的类型和速度。例如,操作条件检测器1302确定链接或连接是否到WAN或LAN网络。在其他实施例中,操作条件检测器1302确定在操作条件检测器1302的装置和服务器106之间的网络连接的路径中是否存在合作或合伙装置,诸如设备200’。在另一实施例中,操作条件检测器1302确定网络优化引擎240和服务器106之间的网络连接的带宽的利用(utilization)、可用性或剩余容量。在一个实施例中,操作条件检测器1302确定通过网络连接的网络业务量传送的吞吐率、响应次数或性能。在一些实施例中,操作条件检测器1302确定通过网络连接的网络业务量的拥塞水平或速率、冲突和/或丢失的分组。
在又一实施例中,操作条件检测器1302确定传输层连接是否是有效、已建立或可操作。在一个实施例中,操作条件检测器1302确定传输层连接是否无效、未连接或不可操作。在一些实施例中,操作条件检测器1302检查或监控操作条件检测器1302的装置和服务器106之间传输层连接的条件。在其他实施例中,操作条件检测器1302检查或监控客户机102和服务器106之间传输层连接的条件。在一个实施例中,显而易见地,操作条件检测器1302的装置代理第一装置102和第二装置106之间的传输层连接。
在一些实施例中,操作条件检测器1302确定操作条件检测器1302的装置和服务器106之间的绝对或相对距离。在其他实施例中,操作条件检测器1302确定网络优化引擎250和一个或多个服务器106之间的接近度。在一个实施例中,操作条件检测器1302通过一个或多个往返时间的测量来确定距离或接近度。在另一实施例中,操作条件检测器1302通过由对服务器的ping或ICMP(网间控制报文协议)回声请求返回的时间信息来确定距离或接近度。在一些实施例中,操作条件检测器1302通过网络配置信息来确定一个或多个服务器的距离或接近度。
在一些实施例中,操作条件检测器1302检测或确定服务器的操作条件或性能,该服务器例如提供存储在高速缓存232中的对象的初始服务器。在一个实施例中,操作条件检测器1302通过ping、ICMP回声请求或追踪路由命令之一来确定服务器正在运行或可操作,或者没有运行或不可操作。在其他实施例中,操作条件检测器1302通过请求与服务器的传输层连接来确定服务器正在运行或可操作,或者没有运行或不可操作。在一些情况下,操作条件检测器1302发送诸如HTTP请求的应用层协议请求到服务器并将所接收的响应与期望的响应作比较。在另一实施例中,操作条件检测器1302通过测量或监控到服务器的并行连接的数量来确定服务器的操作条件。在一些实施例中,操作条件检测器1302通过测量或监控与服务器建立的连接数量比来确定服务器的操作条件。
在又一些实施例中,操作条件检测器1302通过以下中的任何一个或多个来确定服务器的负载:1)连接的数量和类型,2)资源的利用,例如CPU、磁盘和存储器的利用,3)资源的可用性,例如CPU、磁盘和存储器的可用性;4)未完成请求的数量,5)被传输的请求数量,6)提供服务的客户机数量,7)响应时间信息,包括平均和历史响应次数,8)连接的错误、状态、性能或带宽,9)会话数量及其状态,10)分配到服务器的权重。在一个实施例中,服务器106传输信息到网络优化引擎250和/或操作条件检测器1302,信息包括任何以上项目任何之一,关于其操作、状态、负载或性能。在一些实施例中,操作条件检测器1302从另一装置接收有关服务器操作条件或性能的信息,另一装置例如是设备200或设备205。
在一些实施例中,操作条件检测器1302检测或确定高速缓存装置或执行操作条件检测器1302的装置的操作条件或性能。在一个实施例中,装置是WAN优化设备200。在另一实施例中,装置是代理装置或代理网络设备。在其他实施例中,装置是用于LAN或WAN的网络加速装置。在一些实施例中,装置是负载平衡器和/或内容转换装置。在任何这些实施例中,操作条件检测器1302检测或确定与用于装置设计和构造的功能性和操作相关的装置操作条件或性能。在一个实施例中,操作条件检测器1302确定提供经过装置的服务网络业务量的性能生产量或速率。在一些实施例中,操作条件检测器1302检测或确定以下任意之一或多个:1)连接的数量和类型,2)资源的利用,例如CPU、磁盘和存储器的利用,3)资源的可用性,例如CPU、磁盘和存储器的可用性;4)未完成请求的数量,5)被传输请求的数量,6)提供服务的客户机数量,7)响应时间信息,包括平均和历史响应次数,8)连接的错误、状态、性能或带宽,9)会话数量及其状态。
在一些实施例中,操作条件检测器1302可以使用一个或多个监控代理1303。监控代理1303可以包括软件、硬件或软件和硬件的组合。监控代理1303可以是应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。在一个实施例中,监控代理1303监控服务器的操作条件或服务器106的网络服务,例如web或HTTP服务。在一些实施例中,监控代理1303监控网络连接的操作条件。在其他实施例中,监控代理1303监控操作条件检测器1302的装置。在一个实施例中,监控代理1303以预定频率确定被监控资源的操作条件,例如服务器或连接,预定频率例如是每1秒或1毫秒和1秒之间的任何频率。
在一些实施例中,操作条件检测器1302使用一个或多个预定阈值1304以便基于网络连接、服务器或装置的操作条件或性能来确定是否获取对象的状态或从服务器获取对象。预定阈值1303可以包括任何类型和形式的值,例如范围。预定阈值1303可以识别或表示在操作条件检测器1302的检测或监控下资源、条件或特性期望的、适合的或可接受的水平。在一个实施例中,该一个或多个预定阈值1304的每一个可以利用任何类型和形式的加权方案来加权。在一些实施例中,装置的用户,例如设备200的管理员,可以选择或建立预定阈值的值和/或对应权重。
在一些实施例中,操作条件检测器1302确定连接、服务器和/或装置的操作条件是否处于或在一个或多个预定阈值1304之内或之下。根据这种确定,操作条件检测器1302指示或通信到预取器704和/或预刷新器904操作条件是这样的以致于预取器704和/或预刷新器904应当进行在此描述的取出、预取、刷新和/或预刷新技术任何之一。在一个实施例中,预取器704和/或预刷新器产生请求以便响应于来自操作条件检测器1302的信号或通信而从服务器获取一个或多个对象的状态。在另一实施例中,预取器704和/或预刷新器904产生请求以便响应于来自操作条件检测器1302的信号或通信而从服务器获取一个或多个对象。在又一实施例中,预取器704和/或预刷新器904响应于来自操作条件检测器1302的信号或通信而对来自服务器的一个或多个对象的条件获取产生请求。
在其他实施例中,操作条件检测器1302确定连接、服务器和/或装置的操作条件是否超过或将要超过预定阈值1304中的一个或多个。在一些实施例中,操作条件检测器1302指示或通信到预取器704和/或预刷新器904不进行对对象的取出、预取、刷新和/或预刷新中的任何一个。在这些实施例的另一个中,操作条件检测器1302不通信信号或指示预取器704和/或预刷新器904进行对象的取出、预取、刷新和/或预刷新中的任何一个。
现在参考图13B,描述用于根据到初始服务器的链接的操作条件或预取或预刷新装置和/或服务器的操作状态来进行基于启发式的且动态的确定是否预取、刷新或预刷新对象的方法1300的步骤实施例。简而概括地说,在步骤1305,通过诸如客户机102或设备200的装置拦截从服务器通过网络连接例如通过传输层连接传输的对象。例如,装置可以拦截对对象的用户请求的HTTP响应。在步骤1305,装置在高速缓存232中存储或更新对象。在步骤1310,装置检测连接或服务器的操作条件是否在预定阈值内。在步骤1315,响应于该检测,装置确定是否将请求传输到服务器以获取高速缓存中对象的状态或更新备份。在步骤1317,如果所检测的一个或多个操作条件超出了一个或多个预定阈值,则装置不产生或传输从服务器获取对象相关信息的请求。在步骤1320,如果所检测的一个或多个操作条件在一个或多个预定阈值内,则装置对对象的状态或更新备份产生请求并将所产生的请求传输到服务器。在步骤1325,装置基于从服务器接收的响应更新存储在高速缓存中的对象。
进一步详细地说,在步骤1305,装置拦截或接收识别或报刊对象的从一个装置到另一装置的任何类型和形式的通信,例如从服务器传输到客户机的页面。在一个实施例中,装置拦截来自服务器的对对象的客户机请求的响应。在一些实施例中,服务器106传输一个或多个网络分组,该网络分组具有提供或识别对象的应用协议层净荷。例如,在一个实施例中,装置拦截由服务器106传输到客户机102的web或HTTP页面且该页面包括识别对象的统一资源定位符(URL)或超链接。在一些实施例中,设备200拦截由URL识别的页面且该页面识别一个或多个对象。在一些实施例中,装置从所拦截的通信识别对象并从服务器获取对象。在步骤1205,装置转发或传输所拦截的通信到请求方,例如客户机102、或客户机102的应用或用户。装置还将对象或备份或其一部分存储到高速缓存232。
在步骤1310,装置通过操作条件检测器1302检测连接或服务器的操作条件是否在一个或多个预定阈值内。在一个实施例中,装置检测装置本身的操作条件是否在预定阈值内。如上所述,操作条件检测器1302可以检查或监控网络连接、服务器或装置的任何类型和形式的操作或性能条件、状态或特征。在一些实施例中,操作条件检测器1302可以使用预定阈值、加权或不加权的任何组合,来确定网络连接、服务器和/或装置的操作条件是否在期望阈值内。
在步骤1315,响应于该检测,装置确定是否将请求传输到服务器以获取高速缓存中对象的状态或更新备份。在一些实施例中,网络优化引擎250根据哪个操作条件在预定阈值内来进行这种确定。在其他实施例中,网络优化引擎250根据哪个操作条件超出预定阈值来进行这种确定。在另一实施例中,网络优化引擎250基于一个或多个当前拦截的页面来确定是否获取对象的状态或更新备份。在一个实施例中,网络优化引擎250基于对象的大小来确定是否获取对象的状态或更新备份。在其他实施例中,网络优化引擎250基于对象的期满周期来确定是否获取对象的状态或更新备份。在一些实施例中,网络优化引擎250基于时间信息,例如对对象的最后请求,来确定是否获取对象的状态或更新备份。在又一实施例中,网络优化引擎250基于所检测的操作条件结合用户要求、存储在高速缓存232中对象的大小、期满周期或其他时间信息来确定是否获取对象的状态或更新备份。在一些实施例中,网络优化引擎250基于策略引擎295的一个或多个策略来进行这种确定。
在一个实施例中,装置和/或操作条件检测器1302确定(多个)操作条件超过一个或多个预定阈值1303或者装置不应当获取高速缓存232的对象状态或备份。在这些实施例中,在步骤1317,响应于该检测,装置不产生或传输从服务器获取有关对象的信息的请求。
在其他实施例中,装置和/或操作条件检测器1302确定(多个)操作条件超出一个或多个预定阈值1303或者装置应当获取高速缓存的对象的状态或备份。在这些实施例中,在步骤1320,装置对对象的状态或备份产生请求并将该请求传输到服务器。在一个实施例中,预取器704响应于操作条件检测器1302而对对象的状态或更新备份产生请求。在其他实施例中,预刷新器904响应于操作条件检测器1302而对对象的状态或更新备份产生请求。在又一实施例中,网络优化引擎250响应于操作条件检测器1302而产生请求以便获取对象的状态或备份。在一个实施例中,网络优化引擎250对对象产生条件性请求。在一些实施例中,响应于操作条件检测器1302进行的操作条件检测,在此描述的任何预取和/或预刷新技术,例如结合图7A-7D、8A-8B、9A-9B以及10A-10B,可被触发。
在步骤1325,装置和/或网络优化引擎250可以基于从服务器接收的响应来更新存储在高速缓存中的对象。在一个实施例中,网络优化引擎250在高速缓存232中存储对象的更新版本。在另一实施例中,网络优化引擎250更新或存储对部分对象的改变到高速缓存232。在一些实施例中,网络优化引擎250更新被高速缓存对象的对象信息。例如,网络优化引擎250更新高速缓存232中对象的期满或确认信息。在另一实施例中,网络优化引擎250更新高速缓存232中对象首部信息。在一些实施例中,网络优化引擎250确定高速缓存中的对象是新的或有效的。
在方法1300的一些实施例中,步骤1305和/或步骤1310和/或1315进行多次以便根据网络连接、服务器或装置的操作条件动态地触发或不触发对象的取出、预取、刷新或预刷新。当条件随时间改变时,在一个时间点,网络优化引擎250可以响应于操作条件而产生并传输对对象的请求,同时在另一时间点或下一时间点,网络优化引擎250可以响应于操作条件而不产生或传输对对象状态或备份的请求。在一些实施例中,网络优化引擎250可以停止进行步骤1320直到一个或多个操作条件落到一个或多个预定阈值以下,例如,当服务器状态表明服务器的负载处于期望水平时。
N.用于响应于对对象的刷新请求而确定被高速缓存对象期满的系统和 方法
现在参考图14A、14B和14C,描述响应于对对象的刷新请求而确定或更新被高速缓存对象期满的系统和方法。在一些情况下,高速缓存装置可以提供被高速缓存对象或页面很长时间,且用户可能需要通过刷新按钮请求页面的刷新以便重新加载当前页面。通过下面描述的刷新按钮技术,高速缓存装置响应于刷新按钮的指示使用并将所要求的URL识别为比启发式信息或期满信息所指示的更快到期的页面。这种技术认识到每个刷新请求是通过用户要求被高速缓存对象更加新鲜来表决的。
参考图14A,描述响应于请求而检测(多个)刷新请求并更新对象的期满信息的设备实施例。在本实施例中,网络优化引擎250应用于设备上。简而概括地说,客户机102执行显示由服务器106提供的一个或多个页面的浏览器。页面可以包括或识别一个或多个对象。客户机102或浏览器可以具有由用户选择的刷新按钮、脚本或程序1450以便刷新浏览器的页面。响应于刷新选择,客户机102或浏览器传输刷新或重新加载页面的请求到服务器106。具有刷新检测器1402的设备200拦截由客户机102传输的通信并将该通信识别为请求页面的刷新或重新加载。刷新检测器1402追踪刷新或重新加载页面或取出对象的请求的数量。响应于刷新请求或达到预定阈值的刷新请求的数量,刷新检测器更新高速缓存232以减少期满时间或保持被高速缓存对象的新鲜度。
参考图14B,描述响应于请求而检测(多个)刷新请求并更新高速缓存中对象的期满信息的系统的另一实施例。在本实施例中,网络优化引擎250应用于客户机102上。简而概括地说,客户机102执行显示由服务器106提供的一个或多个页面的浏览器。页面可以包括或识别一个或多个对象。客户机102或浏览器可以具有由用户选择的刷新按钮、脚本或程序1450以便刷新浏览器的页面。响应于刷新选择,客户机102或浏览器传输刷新或重新加载页面的请求到服务器106。在一个实施例中,客户机上的刷新检测器1402拦截由客户机102传输的通信并将该通信识别为请求刷新或重新加载页面。在另一实施例中,客户机上的刷新检测器1402拦截刷新按钮的选择事件。刷新检测器1402追踪刷新或重新加载页面或取出对象的请求的数量。响应于刷新请求或达到预定阈值的刷新请求的数量,刷新检测器更新客户机上的高速缓存232以减少期满时间或保持被高速缓存对象的新鲜度。
在系统的又一实施例并参考图14C中,刷新检测器可被分配到或用于诸如客户机102的第一装置和诸如高速缓存装置或设备200的第二装置。简而概括地说,客户机102执行显示一个或多个页面的浏览器,所述页面可以包括或识别一个或多个对象。客户机102或浏览器可以具有由用户选择的刷新按钮、脚本或程序1450以便刷新浏览器的页面。响应于刷新选择,客户机102或浏览器传输刷新或重新加载页面的请求到服务器106。在一个实施例中,客户机上的刷新检测器1402拦截刷新选择或由客户机102传输的通信并识别用户或客户机已经请求页面的刷新或重新加载。刷新检测器1402可以与设备200上的刷新检测器1402’通信或接口以便告知这个高速缓存装置刷新请求事件。响应于刷新请求或达到预定阈值的刷新请求数量,刷新检测器1402’更新设备200上的高速缓存232以减少期满时间或保持被高速缓存对象的新鲜度。
在图14A、14B和/或14C的图中,客户机102可以执行或操作任何类型和形式的浏览器。在一个实施例中,浏览器是由华盛顿雷蒙德的微软公司制造的任何版本的Internet Explorer。在另一实施例中,浏览器是由NetscapeCommunications Corporation制造的任何版本的Netscape浏览器。在其他实施例中,浏览器是称作Firefox并由加利福尼亚的Mozilla Foundation提供的、在www.mozilla.com上找到的任何版本的开源浏览器。在又一实施例中,浏览器是由挪威奥斯陆的Opera Software ASA制造的称作Opera的任何版本的浏览器。在一些实施例中,客户机102执行或包括任何类型和形式的应用或程序以显示web页面、web内容或HTTP内容。在一个实施例中,客户机102可以执行远程显示客户机,例如由Citrix System公司制造的ICA客户机或由微软公司制造的远程桌面协议。在这些实施例中,服务器106可以代表客户机执行浏览器并通过远程显示协议,例如ICA或RSDP,将来自客户机102上的浏览器的输出显示到远程显示客户机。客户机102通过浏览器、申请人或远程桌面客户机可以显示一个或多个页面,例如由服务器106提供的任何web或HTTP页面或内容。一个或多个页面可以包括一个或多个对象。一个或多个页面可以识别一个或多个对象。例如,页面可以通过URL或超链接识别对象。
客户机102可以包括任何类型和形式的执行方法1450以便刷新或重新加载通过浏览器、应用或远程桌面客户机提供的页面或其对象。在一个实施例中,浏览器或应用包括刷新用户界面元件1450,例如刷新按钮。一旦通过用户或另一应用选择了刷新按钮1450,浏览器或应用就产生并传输请求1451到服务器106以便刷新或重新加载一个或多个页面的内容或对象。在一些实施例中,刷新执行方法1450包括浏览器或应用的任何类型和形式的可选择用户界面元件。在又一实施例中,刷新用户界面元件1450包括任何类型和形式的脚本或脚本语言,例如Javascript或ActiveX控件。在其他实施例中,刷新执行方法1450包括用于请求刷新或重新加载页面的任何类型和形式的程序、服务、进程、线程或任务,例如在操作系统后台执行的进程。在一个实施例中,刷新执行方法1450包括从高速缓存232刷新或重新加载页面或其对象的可执行指令。
用户、多个用户或客户机102上的任何应用、程序、进程、服务、线程或任务可以执行、启动或发起刷新执行方法1450。由刷新1450的选择产生的请求可以包括任何类型和形式的应用协议层请求。在一些实施例中,刷新用户界面元件1450产生并传输HTTP请求1451以便刷新由服务器106提供的一个或多个HTTP页面。在其他实施例中,刷新元件1450产生并执行函数调用或应用编程接口(API)。在一个实施例中,函数或API在客户机102上执行。在另一实施例中,函数或API在服务器106上执行。
在一些实施例中,服务器106产生并/或传输请求1452到客户机102以刷新页面。服务器106可以通过任何类型和形式的应用层协议传输刷新请求到客户机102。在一个实施例中,服务器106传输HTTP刷新首部1452到客户机102的浏览器。在一些实施例中,服务器106提供由服务器106提供到客户机102的具有页面或内容的HTTP刷新首部1452。在其他实施例中,服务器106传输用于浏览器或客户机102的应用的脚本或一个或多个可执行指令组以便执行重新加载页面或请求刷新。在一些实施例中,脚本或可执行指令包括函数或API调用以便重新加载或刷新页面。在其他实施例中,脚本或可执行指令通过高速缓存232更新页面。
在一些实施例中,在此描述的网络优化引擎250或其任何部分,例如协议加速器234,可以包括刷新检测器1402。在其他实施例中,高速缓存或高速缓存管理器232包括刷新检测器1402。刷新检测器1402可以包括软件、硬件或软件和硬件的任何组合。刷新检测器1402可以包括应用、程序、脚本、库、进程、服务、驱动、任务、线程或任何类型和形式的可执行指令。在一个实施例中,刷新检测器1402包括或提供用于检测刷新用户界面元件1450的选择或确定刷新1450被选择的逻辑、商业规则、函数或操作。例如,客户机102上的刷新检测1402可以通过刷新按钮的选择来检测事件、调用返回或被调用的函数。在一些实施例中,刷新检测器1402包括或提供用于拦截并检测请求刷新或重新加载页面的通信的逻辑、商业规则、函数或操作。例如,设备200上的刷新检测器1402可以通过传输协议连接拦截应用层业务量并确定或识别应用层净荷包括刷新请求。
在客户机102上的刷新检测器1402的实施例中,刷新检测器1402可以包括任何类型和形式的可执行指令以便检测浏览器或应用刷新或重新加载按钮1450的选择。在一个实施例中,刷新检测器1402包括用于用户界面元件选择事件的事件处理器或调用返回函数。在另一实施例中,刷新检测器1402包括钩吊(hooking)或过滤机制以捕获与刷新用户界面元件1450相关的任何事件。在一些实施例中,刷新检测器1402包括脚本、程序或刷新用户界面元件1450可执行指令中的可执行指令,以便进行在此所述的任何操作。在另一实施例中,刷新检测器1402包括如图3所述的客户机代理302的拦截器305。在这些实施例中,刷新检测器1402在客户机102的网络堆栈中的任何点或任何层处拦截请求刷新或重新加载页面的通信。
在设备200上或中间高速缓存装置上的刷新检测器1402的实施例中,刷新检测器1402包括任何类型和形式的可执行指令以便从穿过设备200的网络业务量拦截和/或确定页面或对象的刷新已经被请求。在一个实施例中,刷新检测器1402拦截和/或确定从客户机102到服务器106的通信的刷新请求。在另一实施例中,刷新检测器1402拦截和/或确定从服务器106到客户机102通信的刷新请求。在其他实施例中,刷新检测器1402拦截和/或确定来自在服务器106和客户机102之间传输的通信的刷新请求。在一些实施例中,刷新检测器1402在一个或多个所拦截的网络分组的净荷中识别出净荷包括刷新页面或其对象例如URL或超链接的请求。在一个实施例中,刷新检测器1402确定来自任何类型和形式的应用层协议的刷新请求。在其他实施例中,刷新检测器1402从HTTP通信的首部信息识别或确定该通信包括刷新或重新加载请求。在又一实施例中,刷新检测器1402对所拦截的网络分组施加过滤器以确定一个或多个网络分组是否包括或识别刷新请求,例如请求1451或1452。
如图14A所示,刷新检测器1402可以包括请求追踪器1403。请求追踪器1403可以包括任何类型和形式的追踪机制或方案,用于追踪刷新或重新加载请求例如请求1451和152的数量。请求追踪器1403可以包括数据结构、对象、队列、列表文件或数据库以便追踪并保持刷新请求的数量。请求追踪器1403可以包括用于记录、追踪、更新或管理刷新请求数量的任何类型和形式的可执行指令。在一个实施例中,请求追踪器1403追踪来自客户机102的刷新请求的数量。在一些实施例中,请求追踪器1403追踪来自浏览器或应用的刷新请求的数量。在其他实施例中,请求追踪器1403追踪来自用户的刷新请求的数量。在另一实施例中,请求追踪器1403追踪来自服务器106的刷新请求的数量。在一些实施例中,请求追踪器1403追踪来自一组用户、客户机、服务器或浏览器的刷新请求的数量,例如分支机构的一组用户或客户机。请求追踪器1403可以使用任何类型和形式的计数器和记数方案用于追踪刷新请求的数量。请求追踪器1403可以追踪并计数每个页面基准或每个对象基准上刷新请求的数量,例如对于每个URL、超链接或对象标识符来说。
在一个实施例中,请求追踪器1403在任何时间周期上追踪刷新请求的数量。在一些实施例中,请求追踪器1403在例如在浏览器和服务器之间的应用层会话期间追踪刷新请求的数量。在其他实施例中,请求追踪器1403在例如在客户机和服务器之间的传输层连接期间追踪刷新请求的数量。在一个实施例中,请求追踪器1403跟踪在会话或连接的开始和结束之间的刷新请求的数量。在又一实施例中,请求追踪器1403追踪刷新请求的数量直到对页面或对象的请求数量的计数已经达到预定阈值。在一些实施例中,请求追踪器1402基于任何时间数据或会话或计数器的终止而重置用于对页面请求数量的计算器。
在一些实施例中,请求检测器1402与高速缓存管理器232接口或与之通信。在一个实施例中,请求检测器1402集成或结合在高速缓存管理器232中。响应于追踪刷新请求,请求检测器1402请求高速缓存管理器232更新或改变被高速缓存对象的信息。在一些实施例中,请求检测器1402改变被高速缓存对象的期满周期或新鲜度信息。在其他实施例中,请求检测器1402根据所追踪的刷新请求信息为被高速缓存对象建立期满周期。在另一实施例中,请求检测器1402响应于所追踪的刷新请求信息将被高速缓存对象标记为无效、期满或不新鲜或未确认。在又一些实施例中,请求检测器1402响应于所追踪的刷新请求信息可以触发或执行在此例如通过图7A-7D、8A-8B、9A-9B以及10A-10B描述的预取或预刷新技术的任何一个。
现在参考图14D,描述响应于对对象的刷新请求而确定或更新被高速缓存对象的期满的方法1400的实施例。简而概括地说,在步骤1405,客户机102产生请求以便刷新或重新加载识别存储在高速缓存232中的一个或多个对象的页面。存储在高速缓存232中的对象具有第一期满周期。在步骤1410,诸如设备200或客户机的装置检测刷新页面的一个或多个请求。在步骤1415,装置响应于该一个或多个刷新请求的检测而确定为高速缓存232中的对象建立第二期满周期。例如,基于由刷新请求检测的对被高速缓存对象的用户需求,高速缓存装置可以缩短被高速缓存对象的期满周期以提高高速缓存中对象的刷新频率。在一些实施例中,在步骤1415’,高速缓存装置响应于刷新请求的数量、刷新请求的频率和/或发送和/或接收与被高速缓存对象相关的刷新请求的用户、客户机、服务器或浏览器的数量,来调整被高速缓存对象的期满周期。
进一步详细地说,在步骤1405,客户机、浏览器或应用可以通过任何类型和形式的刷新执行方法1450产生刷新请求1451。在一些实施例中,用户通过选择刷新用户界面元件1451来产生刷新或重新加载请求1451。在其他实施例中,程序、脚本或可执行指令以预定频率或响应于任何用户与客户机102或浏览器的交互作用来产生刷新或重新加载请求1451。
在步骤1410,诸如设备200或客户机的装置检测一个或多个刷新页面的请求。在一个实施例中,客户机102上的刷新检测器1402检测客户机上的浏览器或应用的用户界面元件的选择。在另一实施例中,客户机102上的刷新检测器1402通过在客户机102的网络堆栈中的任何点或层处的拦截来检测从客户机到服务器的通信以便刷新页面。在其他实施例中,设备200上的刷新检测器1402通过拦截并检查经过设备200的网络分组来检查刷新请求。在一个实施例中,设备200的刷新检测器1402确定到服务器的客户机网络通信包括刷新请求1451。在另一实施例中,设备200的刷新检测器1402确定到客户机的服务器网络通信包括刷新请求1452。在又一实施例中,客户机102的刷新检测器1402检测刷新用户界面元件1450的选择或刷新请求1451的通信,并将通信或消息传输到设备200的刷新检测器1402’。在这些实施例中,第一刷新检测器1402将刷新请求的检测告知第二刷新检测器1402’。
在步骤1410,刷新检测器1402追踪被检测的刷新请求的数量。在一些实施例中,刷新检测器1402对每个页面、对象、URL或超链接追踪被检测的刷新请求的数量。在一个实施例中,刷新检测器1402对用户追踪被检测的刷新请求的数量。在其他实施例中,刷新检测器1402以客户机102、浏览器或应用为基础跟踪被检测的刷新请求的数量。在又一实施例中,刷新检测器1402依服务器跟踪被检测的刷新请求的数量。在再一实施例中,刷新检测器1402以一组用户、客户机、浏览器、应用或服务器上被检测的刷新请求的数量。在一些实施例中,刷新检测器1402在任何时间周期上追踪被检测的刷新请求数量,例如对于预定时间周期或在任何会话或连接期间。
在步骤1415,装置响应于一个或多个刷新请求的检测而确定为高速缓存232中的对象建立第二期满周期或改变期满周期。在一个实施例中,刷新检测器1402和/或高速缓存管理器232通过针对对于对象的每个被检测刷新请求的预定量来减少被高速缓存对象的期满周期。在另一实施例中,刷新检测器1402和/或高速缓存管理器232一旦检测到预定数量的对对象的刷新请求就以预定量减少被高速缓存对象的期满周期。在其他实施例中,刷新检测器1402和/或高速缓存管理器232根据对对象的刷新请求的数量和/或刷新请求的频率减少被高速缓存对象的期满周期预定量或计算量。
在一些实施例中,刷新检测器1402和/或高速缓存管理器232根据对象刷新请求的数量或频率的改变而增大被高速缓存对象的期满周期,例如先前减少的期满周期。例如,如果刷新检测器1402在预定时间内不检测对对象的刷新请求,则刷新检测器1402和/或高速缓存管理器232可以增大被高速缓存对象的期满周期或将期满周期重置为初始值或缺省值。在其他实施例中,刷新检测器1402和/或高速缓存管理器232根据对象刷新请求的数量和频率的减小而以预定因数增大被高速缓存对象的期满周期。
在一个实施例中,刷新检测器1402和/或高速缓存管理器232响应于检测对象刷新请求而对被高速缓存对象建立期满周期。在一些实施例中,被高速缓存对象可以没有期满周期。在这些实施例中,刷新检测器1402和/或高速缓存管理器232根据通过被检测的对象刷新请求确定的需求为对象建立期满周期。在另一实施例中,一旦请求数量超出预定阈值或被高速缓存对象的期满周期达到预定阈值,刷新检测器1402就停止检测对象的刷新请求。在又一些实施例中,刷新检测器1402和/或高速缓存管理器232可以响应于刷新请求的检测而更新高速缓存232中的对象的任何信息,例如有效或新鲜度信息。例如,刷新检测器1402和/或高速缓存管理器232可以响应于刷新请求的检测而将不同的新对象标记为无效或期满的。
在一些实施例中,在步骤1415’,刷新检测器1402持续检测对一个或多个对象的刷新请求,刷新检测器1402和/或高速缓存管理器232可以调整——增大和/或减小——对象的期满周期。刷新检测器1402和/或高速缓存管理器232可以根据以下任何之一来更新对象信息,例如期满或新鲜度:1)刷新请求的数量,2)刷新请求的频率,3)距最后或先前刷新请求的时间,4)到第一刷新请求的时间,5)请求刷新的用户、客户机、浏览器或应用的数量,6)响应于刷新请求的服务器数量,7)服务器刷新请求的数量,8)高速缓存中对象的大小,9)对象或对象信息被更新的最后时间,10)与会话或连接的持续时间相关的时间信息,11)会话或连接的建立或断开。
通过如上所述的系统和方法,高速缓存装置可以响应于通过刷新请求检测的用户需求来更新被高速缓存对象。
O.用于域名解析拦截高速缓存和被高速缓存DNS的信息的预刷新/预 取技术的系统和方法
现在参考图15A-15C,描述进行域名解析的技术的系统和方法,该域名解析用于拦截高速缓存并将在此描述的任何预刷新和/或预取技术应用于被高速缓存的域名服务信息。在一些实施例中,高速缓存装置位于与客户机102不同的网络部分上。在这些实施例中,高速缓存不能以与用户相同的方式解析IP名称。在一个实施例中,这会在客户机通过诸如SSL VPN的虚拟专用网络连接到网络时引起额外的麻烦。高速缓存装置会遇到URL或链接不具有虚拟专用网络上的域名的情况。在一种情况下,如果用户的浏览器具有代理配置,客户机传送HTTP请求到代理而不通过域名解析将URLS的地址转换成IP地址。在其他情况下,如果用户的浏览器不知道存在代理,例如,在透明拦截高速缓存的情况下,客户机试图将定址的URL解析到IP地址本身中。用户浏览器首先解析URL地址以致于它可以打开到提供URL的服务器的连接。
利用在此所述的技术,高速缓存装置获取从客户机拦截的分组的IP目的地址。客户机可能已经解析URL的地址并且正在请求到所解析IP地址的连接。在一些实施例中,拦截高速缓存对URL不进行域名解析而是利用所拦截网络分组的目的IP作为URL的已解析IP地址。通过使用这种技术,高速缓存装置避免了域名解析问题,例如通过VPN引起的那些问题,简化了配置并提高了拦截高速缓存的透明度。此外,高速缓存装置可以利用在此描述的预取和/或预刷新技术中的任何之一保持并更新被高速缓存的DNS信息。
现在参考图12A,描述利用与URL或链接相关的所拦截网络分组的目的IP地址作为已解析域名地址的系统实施例。简而概括地说,客户机102可以具有用于接收并显示通过网络传输的内容,例如由服务器106提供的web页面,的应用或浏览器。在一些情况下,客户机102可以通过由设备200’或设备205建立的VPN与服务器通信。页面可以具有一个或多个URL或超链接。客户机102和/或浏览器可以通过诸如服务器106N的域名服务器解析页面的一个或多个URL。客户机102和/或浏览器通过请求到服务器的连接获取由URL识别的内容或对象,该服务器是通过DNS由客户机所解析的IP地址识别的。如图12A所示,客户机102传输URL的一个或多个分组1575到服务器106的目的IP地址。诸如设备200的拦截高速缓存拦截来自客户机102的请求。设备200从分组识别目的IP地址和URL。取代解析URL的域名的IP地址,设备200利用分组1575的目的IP地址作为URL的DNS已解析IP地址。设备200将此信息1580存储在高速缓存232中。对于随后的对URL或对URL域名解析的请求来说,设备200可以利用被高速缓存的信息1580作为URL的已解析IP地址。
在一些实施例中,网络分组1575的应用层识别URL。在其他实施例中,网络分组1575的应用层将要解析的域名识别为IP地址,例如URL的域名。在一个实施例中,客户机102或浏览器通过任何类型和形式的应用层协议,例如HTTP,请求URL或其内容。在另一实施例中,网络分组1575的网络或IP层识别该请求的目的IP地址。在又一实施例中,网络分组1575的传输层识别该请求的目的IP地址。例如,在一个实施例中,客户机102可以请求打开到服务器的传输层连接,例如TCP连接。传输层连接请求将服务器识别为目的IP地址。在一些实施例中,网络分组1575的目的IP地址包括由请求方对URL或URL的域名解析的IP地址。
现在参考图15B,描述用于提供并更新URL的被高速缓存DNS信息的系统实施例。简而概括地说,诸如设备200的拦截高速缓存存储将URL与URL的已解析IP地址相关的高速缓存信息580。在一个实施例中,高速缓存信息580中用于URL的IP地址包括如结合图15A所述从网络分组1575拦截的IP地址。在一种情况下,具有浏览器或应用的客户机102可以请求URL的DNS解析。在一个实施例中,客户机102请求来自服务器106的DNS解析且该请求穿过设备200。设备200可以通过从被高速缓存信息1580提供与URL相关的IP地址响应该要求。此外,设备200响应于该要求可以通过产生并传输对URL的域名解析的请求来刷新被高速缓存信息1580中URL的IP地址。在另一实施例中,设备200响应于该请求可以从服务器预取URL并将来自URL的内容存储到高速缓存232中。在一些实施例中,设备200响应于该请求可以通过从服务器请求内容的状态和/或更新来预刷新被高速缓存的URL内容。
在其他情况下,客户机102可以请求先前请求的URL的内容或对象。在一个实施例中,设备200拦截客户机102的请求并识别该请求的目的IP地址。在一些实施例中,设备200转发该请求到目的IP地址。在其他实施例中,设备200识别该请求的URL并转发该请求到存储在高速缓存232中URL的IP地址。在又一实施例中,设备200用所拦截分组的目的IP地址更新URL的被高速缓存信息1580。基于该请求,设备200还可以进行被高速缓存信息1580的任何预刷新技术以更新存储在高速缓存中的URL的IP地址。
虽然图15A和15B描述了具有设备200的实践在此描述的DNS相关技术的系统实施例,但是这些技术可以应用在终端节点上,例如通过具有网络优化引擎250的客户机102。在一些实施例中,客户机102具有用于存储被高速缓存DNS信息1580的高速缓存232。在另一实施例中,网络优化引擎250和/或客户机120的客户机代理120具有用于响应并处理在此所述的客户机102的DNS请求的逻辑、函数或操作。
现在参考图15C,描述方法1500的步骤实施例,其用于进行对拦截高速缓存进行域名解析并对拦截高速缓存和DNS高速缓存信息施加预刷新和/或预取技术中的任一种。简而概括地说,在步骤1505,诸如设备200的装置拦截对URL的请求。在步骤1510,设备200从该请求的分组识别该请求的目的IP地址。在步骤1515,设备200将来自所拦截分组的被识别目的IP地址与该请求的URL相关联。例如,设备200可以将目的IP地址看作URL的被解析DNS地址。在步骤1520,设备200拦截客户机的DNS请求以解析URL的DNS地址或从服务器拦截对URL的请求。在步骤1525,在一个实施例中,设备200将存储在高速缓存232中的IP地址识别为URL的解析IP地址。在步骤1530,在一些实施例中,设备200响应于客户机的DNS请求将来自高速缓存232的识别的IP地址提供为URL的解析DNS地址。在其他实施例中并在对URL请求的情况下,在步骤1530’,设备200将对URL的请求传输到具有IP地址的服务器,该IP地址是在高速缓存232中被识别的用于URL的。
方法1500的实施例可以对DNS高速缓存信息和DNS请求进行在此所述的取出、预取、刷新或预刷新技术中的任何之一。在一个实施例中,在步骤1535中,拦截装置可以根据结合图6A和6B所述的系统和方法进行DNS高速缓存信息1580的并行再生效技术。在另一实施例中,在步骤1540,拦截装置根据结合图7A-7D所述的系统和方法对DNS信息进行推测性QoS请求/响应技术。在一些实施例中,在步骤1545,拦截装置根据结合图8A和8B所述的系统和方法对DNS请求进行堆栈定向预取技术。在一个实施例中,在步骤1550,拦截装置根据结合图9A和9B所述的系统和方法对DNS请求1580进行刷新技术。在一些实施例中,在步骤1555,拦截装置根据结合图13A和13B所述的系统和方法对DNS高速缓存信息进行动态刷新启发技术。在又一实施例中,在步骤1560,拦截装置根据结合图14A和14B所述的系统和方法响应于刷新请求对DNS高速缓存信息1580进行高速缓存满期技术。
进一步详细地说,在步骤1505,诸如设备200的装置拦截从一个装置到另一装置例如客户机和服务器之间的的任何类型和形式的通信。在一个实施例中,设备200从客户机或客户机的浏览器拦截请求以便打开与服务器的传输层连接。在另一实施例中,设备200从服务器拦截对URL的请求。在一些实施例中,装置拦截DNS请求或将域名解析成IP地址的请求。
在步骤1510,装置从分组识别该请求的目的IP地址。在一个实施例中,设备200从分组1575的网络或IP层识别该请求的目的IP地址。在另一实施例中,设备200从分组1575的传输层识别目的IP地址。在一些实施例中,装置拦截打开传输层连接的请求并从该连接请求识别目的IP地址。在又一实施例中,装置从分组1575的应用层协议或随后的分组1575识别URL或与目的IP地址相关的域名。在一些实施例中,网络优化引擎250或其一部分,例如HTTP加速器234,在用户模式下或在网络堆栈的应用层操作并利用应用编程接口(API)调用通过网络堆栈的较低层,例如网络或传输层,来获取目的IP地址识别。
在步骤1515,设备200将来自拦截分组1575的所识别目的IP地址与URL相关联。在一个实施例中,设备200不对URL进行任何域名解析,而是利用来自拦截分组1575的识别的目的IP地址作为URL的解析IP地址。在一些实施例中,设备200将目的IP地址指定为URL的解析DNS地址。在另一实施例中,设备200将所识别的目的IP地址1580存储在高速缓存232中。在一个实施例中,设备200将所识别的IP地址存储在与URL相关的高速缓存232中。在一些实施例中,设备200将所识别的IP地址存储在与域名相关的高速缓存中,例如通过部分URL所识别的任何域名。
在一些情况下,诸如设备200的高速缓存或拦截装置使用被高速缓存DNS信息1580响应DNS请求。在步骤1520,设备200拦截客户机的DNS请求以解析URL的DNS地址。在一个实施例中,设备200拦截从客户机到服务器的请求以便将通过URL识别的域名解析成IP地址。在一些实施例中,设备200接收来自客户机的请求以便将URL的域名解析成IP地址。例如,客户机102或客户机102的浏览器可以构造为利用设备200作为代理。在另一示例中,客户机102或客户机102的浏览器可以构造为利用设备200作为DNS服务器或域名服务。
在步骤1525,在一个实施例中,设备200将存储在高速缓存232中IP地址识别为用于DNS请求的被解析IP地址。在一些实施例中,设备200识别在步骤1510确定并在步骤1515存储为用于DNS请求的域名的被解析IP地址的目的IP地址。在步骤1530,在一些实施例中,设备200响应于客户机的DNS请求将来自高速缓存232的所识别IP地址用作URL的被解析DNS地址。在一个实施例中,设备200传输对识别在步骤1510确定的目的IP地址的客户机的DNS请求的响应。
在其他情况下,高速缓存或拦截装置,例如设备200,利用被高速缓存的DNS信息1580处理来自服务器的对URL的请求。在步骤1520,设备200从服务器拦截对URL的请求,在一个实施例中,设备200拦截从客户机到服务器的请求以便获取通过URL识别的内容或对象。在一个实施例中,客户机102在不将通过URL识别的域名解析为IP地址的情况下传输对URL的请求。例如,在一些实施例中,设备200拦截传输到代理的客户机请求。在其他实施例中,设备200用作代理并接收客户机的请求。例如,客户机102或客户机102的浏览器可以被构造为使用设备200作为代理。在又一实施例中,客户机102传输对URL的请求,对于URL来说客户机102已经将由URL识别的域名解析为IP地址。例如,客户机102通过以由客户机102解析的目的IP地址建立的传输层连接传输对URL的请求。在这些实施例的一些中,设备200通过传输层连接拦截对URL的请求,其中设备200为代理或多个代理。
在其他实施例和对URL请求的情况下,在步骤1530’,设备200将对URL的请求传输到具有IP地址的服务器,该IP地址在用于URL的高速缓存232中被识别。在步骤1525,在一个实施例中,如果高速缓存232作为用于URL请求的被解析IP地址,则设备200识别存储在DNS信息1580中的IP地址。在一些实施例中,设备200识别在步骤1510确定并在步骤1515存储为用于URL请求的目的IP地址的目的IP地址。在步骤1530’,在一些实施例中,设备200转发所拦截的请求到被高速缓存DNS信息1580的IP地址。在一个实施例中,设备200转发所拦截的URL请求到通过对URL的请求的分组1575识别的目的IP地址。
在一些实施例中,在步骤1535中,拦截装置,例如设备200或客户机102,根据如结合图6B所述的方法600进行DNS被高速缓存信息1580的并行再生效技术。在这些实施例中,拦截装置用来自DNS被高速缓存信息1580的IP地址响应DNS请求,例如步骤1530所述,并产生和传输更新高速缓存232中DNS信息的请求。在一个实施例中,装置产生并传输请求到DNS服务器106以解析域名。例如,域名与URL的域名对应,其中装置在步骤1530对其提供来自高速缓存232的DNS信息。在一些实施例中,装置产生并传输DNS请求以便将域名解析成并行、同时并存、基本并行或同时的IP地址,以便从高速缓存232提供DNS信息。装置接收对DNS请求的响应并更新DNS被高速缓存信息1580。在一些实施例中,用于被解析域名的IP地址已改变,而在其他实施例中,用于被解析域名的IP地址没有改变。
在其他实施例中,在步骤1540,拦截装置,例如设备200或客户机102,根据如结合图7B和7D所述的方法700和/或750进行DNS被高速缓存信息1580的推测性请求,例如预取或预刷新。在这些实施例中,装置拦截传输到客户机102的页面。装置识别页面的一个或多个URL并产生DNS请求以便将通过URL识别的域名解析成IP地址。装置编码所产生的具有推测性QoS优先级的DNS请求并根据这个分配的优先级传输所产生的DNS请求。通过这种方式,装置传输推测性DNS请求并接收不满足非推测性请求的响应。一旦接收到响应,装置就将被解析域名的IP地址存储在高速缓存232中以便提供被高速缓存的DNS信息1580。如果装置拦截了解析所拦截URL域名的客户机请求或者装置拦截了对URL的请求,则装置可以利用被高速缓存的DNS信息1580响应或处理如上所述的请求。
在另一实施例中,在步骤1545,拦截装置,例如设备200或客户机102,使用结合图8B的方法800所述的任何堆栈定向预取技术。例如,在一些实施例中,拦截装置拦截识别URL的一个或多个页面并将页面一LIFO方式存储到堆栈上。一旦确定预取DNS信息,装置从堆栈弹出最后存储的URL并产生DNS请求以解析由页面或页面的URL识别的域。装置传输DNS请求到任何类型和形式的域名解析服务,例如DNS服务器106。根据该响应,装置在高速缓存232中存储被解析域名的IP地址以提供被高速缓存的DNS信息1580。在一个实施例中,装置利用方法800的堆栈定向技术和方法700和/或750的推测性请求和响应技术产生并传输DNS请求。
在一些实施例中,在步骤1550,拦截装置,例如设备200或客户机102,使用结合方法900和图9B所述的任何刷新技术。例如,在一个实施例中,装置拦截通过装置通信的页面,例如从服务器传输到客户机的页面。装置解析页面的URL并确定用于由URL识别的域名的IP地址位于高速缓存232中。在用户请求页面的被识别URL之前,装置对高速缓存中232的域名的IP地址的状态或更新产生请求并将所产生的请求传输到域名服务,例如DNS服务器106。装置从表示DNS信息状态或提供用于域名的第二或新IP地址的服务器接收响应。基于该响应,装置验证或更新存储在高速缓存232中的DNS信息1580。
在一个实施例中,在步骤1555,拦截装置,例如设备200或客户机102,使用结合方法1300和图13B所述的任何动态刷新启发技术。使用这些技术,装置动态地考虑链接(链接)、高速缓存装置和/或服务器的操作和性能条件,以确定是否检查存储在高速缓存中的DNS信息的状态或从DNS服务或服务器获取更新的DNS解析信息。例如,装置可以拦截DNS请求或对URL的请求。装置检测连接或服务器的操作条件是否在预定阈值内。响应于该检测,装置确定是否将请求传输到服务器以获取高速缓存中DNS信息的状态或更新的备份。如果所检测的一个或多个操作条件超出一个或多个预定阈值,则装置不产生或传输获取或更新DNS信息的请求。例如,代替装置可以使用被高速缓存的DNS信息来提供客户机请求。如果所检测的一个或多个操作条件在一个或多个预定阈值内,则装置对状态或更新的DNS信息产生请求并将所产生的请求传输到DNS服务,例如服务器。基于所接收的响应,装置更新存储在高速缓存中的DNS信息。
在又一实施例中,在步骤1560,拦截装置,例如设备200或客户机102,使用结合方法1400和图14B所述的响应于刷新请求的任何高速缓存满期技术。例如,在一些实施例中,客户机102产生刷新或重新加载识别URL的页面的请求。装置在高速缓存中存储与URL的域名对应的DNS信息。被高速缓存的DNS信息可以具有第一高速缓存期满周期。装置检测一个或多个刷新URL的请求并响应于该检测而确定对被高速缓存的DNS信息建立第二期满周期。例如,基于对通过刷新请求检测的URL的用户需求,高速缓存装置可以缩短DNS信息的满期周期以提高高速缓存中刷新信息的频率。在一些实施例中,高速缓存装置响应于刷新请求的数量、刷新请求的频率和/或发送和/或接收与被高速缓存对象相关的刷新请求的用户、客户机、服务器或浏览器的数量来调整被高速缓存的DNS信息的期满周期。
浏览器的实施和部署
上述任何技术、系统和方法都可以部署在浏览器中或用于浏览器。在一些实施例中,网络优化引擎250的任何部分都可以建立在浏览器中。例如,在一个实施例中,浏览器可以被设计、构造或配置为使用在此所述的任何技术。在另一实施例中,浏览器被定制或实施为包括这些技术中的一个或全部。在其他实施例中,网络优化引擎250的任何部分可以实施为到浏览器的任何类型和形式的加载项或部件,例如Active X控件。在一些实施例中,网络优化引擎250的任何部分可以实施或部署为脚本,例如Visual Basic或Java脚本。在其他实施例中,网络优化引擎的任何部分可以提供或提供到浏览器作为浏览器可执行指令,例如通过web页面或HTTP内容。
在一个实施例中,浏览器实施、部署、使用或提供如结合图4A-4F所述的多层次高速缓存。在另一实施例中,浏览器实施、部署、使用或提供结合图5A和5B所述的安全和可靠性代理技术任何之一。在一些实施例中,浏览器实施、部署、使用或提供如结合图6A和6B所述的高速缓存对象的并行再生效技术。在其他实施例中,浏览器实施、部署、使用或提供如结合图7A-7D所述的用于高速缓存对象的QoS预刷新和预取技术。在又一实施例中,浏览器实施、部署、使用或提供如结合图8A和8B所述的堆栈定向方法以便预取对象到高速缓存。在一个实施例中,浏览器实施、部署、使用或提供如结合图9A-9B所述的在用户请求对象之前预刷新高速缓存中的对象。在其他实施例中,浏览器实施、部署、使用或提供如结合图10A-10B所述的通过请求来自服务器的对象的首部信息确定预取对象。在另一实施例中,浏览器实施、部署、使用或提供如结合图10C所述的用于更新高速缓存中对象的首部信息的技术。
在又一实施例中,浏览器实施、部署、使用或提供如结合图11A-11D所述的将不可高速缓存内容用作压缩历史的技术。在一些实施例中,浏览器实施、部署、使用或提供如结合图12A-12B所述的使用非HTTP网络文件传输作为压缩历史的技术。在一个实施例中,浏览器实施、部署、使用或提供如结合图13A-13B所述的用于基于装置的操作条件或连接的状态确定是否预取/预刷新对象的技术。在其他实施例中,浏览器实施、部署、使用或提供如结合图14A-14C所述的响应于对对象的刷新请求来确定被高速缓存对象的满期的技术。在又一实施例中,浏览器实施、部署、使用或提供如结合图15A-15C所述的用于拦截高速缓存并更新域名解析的技术。

Claims (443)

1.一种基于对象大小利用多存储层次将对象存储在高速缓存中并将存储到高速缓存的较小对象的数量保持在预定阈值内的方法,该方法包括步骤:
(a)对高速缓存建立存储装置大小以便存储被高速缓存的对象,该高速缓存利用存储装置第一部分存储小于或等于第一阈值对象大小的对象并利用存储装置第二部分存储大于该第一阈值对象大小的对象;
(b)识别高速缓存允许存储到该存储装置第一部分的对象数量;
(c)接收用于高速缓存的对象;
(d)基于对象大小确定将对象存储在该存储装置第一部分或该存储装置的第二部分中的一个中;以及
(e)将高速缓存允许存储到该存储装置第一部分的对象数量保持在预定阈值以下。
2.根据权利要求1的方法,包括确定对象的大小小于或等于该第一阈值对象大小并将该对象存储在该存储装置第一部分。
3.根据权利要求1的方法,包括确定对象的大小大于该第一阈值对象大小并将该对象存储在该存储装置第二部分。
4.根据权利要求1的方法,包括确定存储到存储装置第一部分的对象数量已经达到预定阈值。
5.根据权利要求4的方法,包括根据确定存储到存储装置第一部分的对象数量已经达到预定阈值不将所接收的对象存储到高速缓存中。
6.根据权利要求4的方法,包括根据确定存储到存储装置第一部分的对象数量已经达到预定阈值将先前高速缓存的对象从高速缓存去除,并将所接收的对象存储到高速缓存中。
7.根据权利要求1的方法,包括建立第二预定大小的存储装置第二部分用于存储大于第一阈值对象大小的对象。
8.根据权利要求1的方法,包括识别第二阈值对象大小用于在存储装置第一部分中存储对象。
9.根据权利要求8的方法,包括接收第二对象用于高速缓存,并响应于确定该第二对象的大小大于第二阈值对象大小且小于第一阈值对象大小而将第二对象存储到存储装置第一部分中。
10.根据权利要求8的方法,包括接收第二对象用于高速缓存,并响应于确定该第二对象的大小小于第二阈值对象大小而不将第二对象存储到高速缓存中。
11.根据权利要求1的方法,包括建立由高速缓存使用的存储器的大小,用于索引存储到高速缓存的存储装置的对象。
12.根据权利要求11的方法,包括响应于由高速缓存使用的存储装置的大小改变而保持由高速缓存使用的存储器的大小用于索引对象。
13.一种基于对象大小利用多存储层次将对象存储在高速缓存中并将大于对象阈值大小的对象存储到由高速缓存使用的一部分存储装置的方法,该方法包括步骤:
(a)为由高速缓存使用的存储装置的第一部分建立预定大小用于存储大于第一阈值对象大小的对象,该高速缓存将小于第一阈值对象大小的对象存储到由高速缓存使用的存储装置的剩余部分;
(b)接收用于高速缓存的对象;
(c)确定该对象的大小大于第一阈值对象大小;以及
(e)响应于该确定而将该对象存储在存储装置的第一部分中。
14.根据权利要求13的方法,包括将高速缓存允许存储到存储装置剩余部分的对象数量保持在预定阈值以下。
15.根据权利要求14的方法,包括确定存储到存储装置剩余部分的对象数量已经达到该预定阈值且不将小于第一阈值对象大小的第二接收对象存储到该存储装置的剩余部分。
16.根据权利要求13的方法,包括接收第二对象,并确定第二对象的大小小于该第一阈值对象大小。
17.根据权利要求16的方法,包括如果空间可用于存储该第二对象,则将该第二对象存储到由高速缓存使用的该存储装置剩余部分。
18.根据权利要求16的方法,包括确定由高速缓存使用的存储装置的剩余部分不具有可用于存储该第二对象的空间。
19.根据权利要求18的方法,包括不将该第二对象存储到高速缓存中。
20.根据权利要求18的方法,包括从由高速缓存使用的存储装置的剩余部分去除先前被高速缓存的对象并将该第二对象存储到存储装置的剩余部分中。
21.根据权利要求13的方法,包括为由高速缓存使用的存储装置的剩余部分建立第二预定大小以存储小于该第一阈值对象大小的对象。
22.根据权利要求13的方法,包括确定由高速缓存使用的存储器第一部分的可用空间为处于或接近该预定大小之一,并通过将空间从存储装置的剩余部分分配到存储装置的第一部分来增大该存储装置第一部分的预定大小。
23.根据权利要求13的方法,包括建立由高速缓存使用的存储器的大小用于保持对存储到存储装置的对象的索引。
24.根据权利要求23的方法,包括响应于由高速缓存使用的存储装置第一部分的大小的改变而保持由高速缓存使用的存储器的大小用于索引对象。
25.一种基于对象大小利用多存储层次管理存储在高速缓存中的对象的大小的方法,该方法在改变由高速缓存使用的用于存储由对象索引索引的对象的存储装置的大小的同时维护用于保持对象索引的由高速缓存使用的存储器的大小,该方法包括步骤:
(a)建立用于保持对存储到存储装置的对象的索引的由高速缓存使用的存储器的大小,该存储装置具有存储装置大小,该高速缓存使用所建立的该存储装置的第一部分用于存储小于或等于第一阈值对象大小的对象并使用所建立的该存储装置的第二部分用于存储大于该第一阈值对象大小的对象;
(b)识别该高速缓存允许存储到该存储装置第一部分的对象数量;
(c)改变由高速缓存使用的用于存储对象的存储装置的大小同时保持用于存储对对象的索引的高速缓存的存储器的大小;以及
(d)响应于由高速缓存使用的存储装置大小的改变而将高速缓存允许存储到存储装置第一部分的对象数量保持在预定阈值以下。
26.根据权利要求25的方法,其中步骤(c)包括增大或减小由高速缓存使用的用于存储对象的存储装置的大小之一。
27.根据权利要求26的方法,包括改变提供由高速缓存使用的存储装置的存储装置设备的大小。
28.根据权利要求26的方法,包括保持提供由高速缓存使用的存储装置的存储装置设备的大小。
29.根据权利要求26的方法,包括通过添加存储装置设备用于由高速缓存使用而增加存储装置的大小。
30.根据权利要求26的方法,包括通过去除由高速缓存使用的存储装置设备来减小存储装置的大小。
31.根据权利要求25的方法,其中步骤(c)包括用户设置由高速缓存使用的存储装置的大小。
32.根据权利要求25的方法,包括增大存储到存储装置第二部分的第二对象数量同时保持用于存储对对象的索引的高速缓存的存储器的大小。
33.根据权利要求25的方法,包括响应于由高速缓存使用的存储装置大小的改变而保持高速缓存允许存储到存储装置第一部分的对象数量相同。
34.根据权利要求25的方法,包括响应于改变由高速缓存使用的存储装置的大小而调整高速缓存允许存储到存储装置第一部分的对象数量。
35.根据权利要求25的方法,包括相对于改变由高速缓存使用的存储装置的大小的量调整高速缓存允许存储到磁盘第一部分的对象数量。
36.根据权利要求25的方法,包括与改变由高速缓存使用的存储装置大小的量成比例地调整高速缓存允许存储到存储装置第一部分的对象数量。
37.根据权利要求25的方法,包括将高速缓存允许存储到存储装置第一部分的对象数量增大到该预定阈值或其附近的一个量。
38.根据权利要求25的方法,包括为高速缓存允许存储到存储装置第二部分的对象建立第二阈值对象大小,该第二阈值对象大小大于该第一阈值对象大小。
39.根据权利要求38的方法,其中高速缓存包括为存储大于第二阈值对象大小的对象而建立存储装置的第三部分。
40.根据权利要求38的方法,包括响应于由高速缓存使用的存储装置大小的改变而调整第二阈值对象大小。
41.根据权利要求25的方法,包括建立高速缓存允许存储到存储装置的第二部分的第二对象数量。
42.根据权利要求41的方法,包括响应于由高速缓存使用的存储装置大小的改变而调整高速缓存允许存储到存储装置第二部分的第二对象数量。
43.根据权利要求41的方法,包括响应于由高速缓存使用的存储装置大小的改变而将高速缓存允许存储到存储装置第二部分的第二对象数量保持在第二预定阈值内。
44.一种基于对象大小利用多存储层次管理存储在高速缓存中的对象大小的方法,该方法在保持用于存储由对象索引索引的对象的由高速缓存使用的存储装置大小的同时改变用于保持对象索引的由高速缓存使用的存储器大小,该方法包括步骤:
(a)建立用于保持对存储到存储装置的对象的索引的由高速缓存使用的存储器大小,该存储装置具有存储装置大小,该高速缓存使用该存储装置的第一部分用于存储小于或等于第一阈值对象大小的对象并使用该存储装置的第二部分用于存储大于该第一阈值对象大小的对象;
(b)识别高速缓存允许存储到存储装置第一部分的对象数量;
(c)保持用于存储对象的由高速缓存使用的存储装置大小的同时改变用于保持对象索引的由高速缓存使用的存储器大小;以及
(d)响应于由高速缓存使用的存储器大小的改变而将高速缓存允许存储到存储装置的第一部分的对象数量保持在预定阈值以下。
45.根据权利要求44的方法,其中步骤(c)包括增大或减小由高速缓存使用的存储器大小之一。
46.根据权利要求44的方法,包括改变提供由高速缓存使用的存储器的存储器元件的大小。
47.根据权利要求44的方法,包括保持提供由高速缓存使用的存储器的存储器元件的大小。
48.根据权利要求44的方法,包括通过添加存储器元件用于由高速缓存使用来增大存储器大小。
49.根据权利要求44的方法,包括通过去除由高速缓存使用的存储器元件来减小存储器大小。
50.根据权利要求44的方法,其中步骤(c)包括用户设定由高速缓存使用的存储器大小。
51.根据权利要求44的方法,包括在保持用于存储对象的高速缓存的存储器大小的同时调整存储到存储装置的第一部分的对象数量。
52.根据权利要求44的方法,包括响应于由高速缓存使用的存储器大小的改变保持高速缓存允许存储在存储装置的第一部分的对象数量相同。
53.根据权利要求44的方法,包括相对于由高速缓存使用的存储器大小的改变量调整高速缓存允许存储到存储装置的第一部分的对象数量。
54.根据权利要求44的方法,包括将高速缓存允许存储到存储装置的第一部分的对象数量增大到该预定阈值的量或其附近之一。
55.根据权利要求44的方法,包括为高速缓存允许存储到存储装置第二部分的对象建立第二阈值对象大小,该第二阈值对象大小大于该第一阈值对象大小。
56.根据权利要求55的方法,其中该高速缓存包括建立用于存储大于该第二阈值对象大小的对象的存储装置的第三部分。
57.根据权利要求55的方法,包括响应于由高速缓存使用的存储器大小的改变而调整第二阈值对象大小。
58.根据权利要求57的方法,包括建立高速缓存允许存储到存储装置第二部分的第二对象数量。
59.根据权利要求58的方法,包括响应于由高速缓存使用的存储器大小的改变而调整高速缓存允许存储到存储装置第二部分的第二对象数量。
60.根据权利要求58的方法,包括响应于由高速缓存使用的存储器大小的改变而将高速缓存允许存储到存储装置第二部分的第二对象数量保持在第二预定阈值内。
61.一种基于对象大小利用多存储层次管理存储在高速缓存中的对象大小的方法,该方法分配由高速缓存使用的一部分存储装置用于存储较大对象,该方法包括步骤:
(a)建立用于保持对存储到存储装置的对象的索引的由高速缓存使用的存储器大小,该存储装置具有存储装置大小;
(b)建立高速缓存的存储装置的第一预定大小的第一部分,用于存储大于第一阈值对象大小的对象,该高速缓存使用高速缓存的存储装置第二部分存储小于该第一阈值对象大小的对象;
(c)改变由高速缓存使用的存储器大小或存储装置大小之一;以及
(d)响应于由高速缓存使用的存储器大小或存储装置大小之一的改变而保持高速缓存的存储装置第一部分的第一预定大小。
62.根据权利要求61的方法,其中步骤(c)包括增大或减小用于存储对象的由高速缓存使用的存储装置大小之一。
63.根据权利要求61的方法,其中步骤(c)包括增大或减小用于索引对象的由高速缓存使用的存储器大小之一。
64.根据权利要求61的方法,包括识别高速缓存允许存储到存储装置第一部分的对象数量。
65.根据权利要求64的方法,包括响应于由高速缓存使用的存储器大小或存储装置大小之一的改变而保持高速缓存允许存储到存储装置第一部分的对象数量。
66.根据权利要求61的方法,包括响应于由高速缓存使用的存储器大小或存储装置大小之一的改变而调整该第一阈值对象大小。
67.根据权利要求61的方法,包括在保持存储装置第一部分的第一预定大小的同时调整高速缓存允许存储到存储装置第二部分的对象数量。
68.根据权利要求61的方法,包括响应于由高速缓存使用的存储器大小或存储装置大小之一的改变而调整高速缓存允许存储到存储装置第一部分的对象数量。
69.根据权利要求61的方法,包括相对于由高速缓存使用的存储器大小或存储装置大小之一的改变量来调整高速缓存允许存储到磁盘第二部分的对象数量。
70.根据权利要求61的方法,包括建立用于高速缓存允许存储到存储装置第二部分的对象的第二阈值对象大小,该第二阈值对象大小小于该第一阈值对象大小。
71.根据权利要求70的方法,其中高速缓存包括建立用于存储小于该第二阈值对象大小的对象的存储装置的第三部分。
72.根据权利要求71的方法,包括响应于由高速缓存使用的存储器大小或存储装置大小之一的改变而调整该第二阈值对象大小。
73.一种为用于通过客户机和服务器之间的传输层连接进行通信的会话供应被高速缓存的对象提供安全性或可靠性的方法,该方法包括步骤:
(a)由装置,通过在客户机到服务器之间的传输层连接进行通信的会话来接收对对象的请求;
(b)由该装置,确定该对象存储在高速缓存中;
(c)由该装置,转发该请求到该服务器;
(d)由该装置,延迟从该高速缓存提供该对象直到从该服务器接收响应;以及
(e)由该装置,基于从该服务器接收的该响应确定从该高速缓存提供该对象。
74.根据权利要求73的方法,其中步骤(e)包括由该装置从所接收的响应确定服务器将提供该对象到该客户机。
75.根据权利要求73的方法,其中步骤(e)包括由该装置从所接收的响应确定该服务器授权该客户机或该客户机的用户之一接收该对象。
76.根据权利要求73的方法,其中步骤(e)包括由该装置从所接收的响应确定该服务器是可用于或者能够提供该对象到该客户机之一。
77.根据权利要求73的方法,其中步骤(e)包括由该装置确定该服务器正在传输该对象到该客户机。
78.根据权利要求73的方法,其中步骤(d)包括由该装置延迟从该高速缓存提供该对象直到确定该服务器已经将该对象传输到该客户机至少一次为止。
79.根据权利要求73的方法,其中步骤(e)包括由该装置,从所接收的响应确定该服务器不会提供该对象到该客户机,并且响应于该确定,不从该高速缓存提供对象。
80.根据权利要求79的方法,包括由该装置,从所接收的响应确定该服务器未授权客户机或客户机的用户之一接收该对象,并且响应于该确定,不从该高速缓存提供该对象。
81.根据权利要求79的方法,包括由该装置,从所接收的响应确定该服务器要求客户机的用户之一的验证,并且响应于该确定,不从该高速缓存提供该对象。
82.根据权利要求73的方法,其中步骤(e)包括由该装置,从所接收的响应确定该服务器不可用或者不能提供该对象到该客户机,并且响应于该确定,不从高速缓存提供对象。
83.根据权利要求73的方法,其中该装置包括对客户机和该服务器透明的代理。
84.根据权利要求73的方法,其中该装置包括客户机或设备之一。
85.一种用于为通过客户机和服务器之间的传输层连接进行通信的会话供应被高速缓存的对象提供安全性或可靠性的设备,该设备包括:
用于通过在客户机和服务器之间的传输层连接上进行通信的会话接收对对象的请求的装置;
用于确定该对象存储在高速缓存中的装置;
用于转发该请求到该服务器的装置;
用于延迟从该高速缓存提供该对象直到从该服务器接收到响应的装置;以及
用于基于从该服务器接收的该响应确定从该高速缓存提供该对象的装置。
86.根据权利要求85的设备,其中该设备从所接收的响应确定该服务器将提供该对象到该客户机。
87.根据权利要求85的设备,其中该设备从所接收的响应确定该服务器授权该客户机或该客户机的用户之一接收该对象。
88.根据权利要求85的设备,其中该设备从所接收的响应确定该服务器可用于或能够提供该对象到该客户机之一。
89.根据权利要求85的设备,其中该设备确定该服务器正在传输该对象到该客户机。
90.根据权利要求85的设备,其中该设备延迟从该高速缓存提供该对象直到确定该服务器已经将该对象传输到该客户机至少一次。
91.根据权利要求85的设备,其中该设备从所接收的响应确定该服务器不会提供该对象到该客户机,并且响应于该确定,不从该高速缓存提供该对象。
92.根据权利要求91的设备,其中该设备从所接收的响应确定该服务器未授权该客户机或该客户机的用户之一接收该对象,并且响应于该确定,不从该高速缓存提供该对象。
93.根据权利要求92的设备,其中该设备从所接收的响应确定该服务器要求该客户机用户之一的验证,并且响应于该确定,不从该高速缓存提供该对象。
94.根据权利要求85的设备,其中该设备从所接收的响应确定该服务器不可用于或者不能提供该对象到该客户机之一,并且响应于该确定,不从该高速缓存提供该对象。
95.根据权利要求85的设备,其中该设备包括对该客户机和该服务器透明的代理。
96.一种为代理客户机和服务器之间的连接提供安全性或可靠性的方法,该方法包括步骤:
(a)由该装置,将从客户机接收的传输层连接请求转发到服务器;
(b)由该装置,延迟将传输层连接接受为到代理的连接,直到从该服务器接收对客户机的该传输层连接请求的响应;
(c)由该装置,从该服务器的该响应识别该服务器接受了该传输层连接;以及
(d)由该装置,响应于识别服务器接受该传输层连接确定代理该传输层连接。
97.根据权利要求96的方法,其中步骤(a)包括由该装置,接收客户机的传输控制协议连接请求的SYN分组,并且将所拦截的SYN分组转发到该服务器。
98.根据权利要求96的方法,其中步骤(c)包括由该装置,接收SYN-ACK分组作为从该服务器到该客户机传输控制协议连接请求的响应。
99.根据权利要求96的方法,其中该装置被构造为在该传输层连接上进行一个或多个加速技术。
100.根据权利要求98的方法,包括由该装置,响应于步骤(d)的确定在该传输层连接上进行加速技术。
101.根据权利要求96的方法,包括由该装置,识别该服务器不接受该传输层连接请求,并且由该装置,确定不接受该传输层连接作为到代理的连接。
102.根据权利要求96的方法,包括由该装置,识别该服务器为不可用于或者不能建立传输层连接之一,并且由该设备确定不代理该传输层连接。
103.根据权利要求102的方法,包括由该装置,延迟接受该传输层连接直到接收到该服务器为可用于或者能够建立传输层连接之一的指示。
104.根据权利要求96的方法,包括由该装置,识别该服务器不授权该客户机建立与该服务器的传输层连接,并且由该设备确定不接受该传输层连接作为到要代理的连接。
105.根据权利要求96的方法,包括由该装置,识别该服务器要求认证以建立与该服务器的传输层连接,并且由该设备延迟接受该传输层连接作为到代理的连接,直到从服务器接收到该客户机的用户被验证的指示。
106.根据权利要求96的方法,包括由该装置延迟代理该客户机和该服务器之间的传输层连接,直到该服务器成功传输该对象到该客户机。
107.根据权利要求96的方法,其中该装置包括对该客户机和该服务器透明的代理。
108.根据权利要求96的方法,其中该装置包括客户机或设备之一。
109.一种为代理客户机和服务器之间的连接提供安全性或可靠性的设备,该设备包括:
用于将从客户机接收的传输层连接请求转发到服务器的装置;
用于延迟接受该传输层连接作为连接代理直到从该服务器接收到对客户机的该传输层连接请求的响应的装置;
用于从该服务器的响应识别该服务器接受该传输层连接的装置;以及
用于响应于识别服务器接受该传输层连接而确定代理该传输层连接的装置。
110.根据权利要求109的设备,其中该设备接收客户机的传输控制协议连接请求的SYN分组,并转发所拦截的SYN分组到该服务器。
111.根据权利要求110的设备,其中该设备接收SYN-ACK分组作为对客户机传输控制协议连接请求的来自服务器的响应。
112.根据权利要求109的设备,其中该设备被构造为在传输层连接上进行一个或多个加速技术。
113.根据权利要求112的设备,其中该设备响应于该确定在该传输层连接上进行加速技术。
114.根据权利要求109的设备,其中该设备识别该服务器不接受该传输层连接请求,并由该设备确定不接受该传输层连接作为要代理的连接。
115.根据权利要求109的设备,其中该设备识别该服务器为不可用于或者不能建立传输层连接之一,并且由该设备确定不代理该传输层连接。
116.根据权利要求43的设备,其中该设备延迟接受与该客户机的传输层连接作为要代理的连接直到接收到该服务器为可用于或者能够建立传输层连接之一的指示。
117.根据权利要求109的设备,其中该设备识别该服务器不授权该客户机建立与该服务器的传输层连接,并且由该设备确定不接受该传输层连接作为要代理的连接。
118.根据权利要求109的设备,其中该设备识别该服务器要求验证以便建立与该服务器的传输层连接,并且由该设备延迟接受该传输层连接作为要代理的连接直到从该服务器接收到客户机的用户被验证的指示。
119.根据权利要求109的设备,其中该设备延迟代理该客户机和该服务器之间的传输层连接直到该服务器成功转发一对象到该客户机。
120.一种用于在提供对象到请求方的同时使存储在高速缓存中的对象再生效的方法,该方法包括步骤:
(a)从请求方接收对对象的请求;
(b)确定该对象存在于高速缓存中;
(c)响应于该请求,响应该确定将被高速缓存对象传输到请求方;以及
(d)响应于该确定,将请求传输到远程对象服务器以确定该对象的状态。
121.根据权利要求120的方法,其中步骤(c)和(d)基本同时发生。
122.根据权利要求120的方法,其中步骤(c)和(d)并行发生。
123.根据权利要求120的方法,其中步骤(d)发生在步骤(c)之前。
124.根据权利要求120的方法,包括在从该远程对象服务器接收响应之前将该被高速缓存对象传输到该请求方。
125.根据权利要求120的方法,其中步骤(d)包括响应于该确定,传输对取回该对象的条件性请求到远程对象服务器。
126.根据权利要求125的方法,包括接收表示该对象未改变的对该条件性请求的响应。
127.根据权利要求125的方法,包括响应于该条件性请求从该远程对象服务器接收该对象的更新版本。
128.根据权利要求127的方法,包括将该对象的更新版本存储在本地高速缓存中。
129.根据权利要求120的方法,其中步骤(a)包括通过网络从请求方接收对对象的请求。
130.根据权利要求120的方法,其中步骤(b)包括确定(i)该对象存在于本地高速缓存中以及(ii)与该对象相关的状态标识符表示该对象是有效的。
131.根据权利要求120的方法,其中步骤(c)包括通过网络,响应于该确定将被请求的对象从高速缓存传输到请求方。
132.根据权利要求120的方法,其中步骤(d)包括响应于该确定将请求传输到该远程对象服务器以便取回该对象的更新版本。
133.一种在提供对象到请求方的同时使存储在高速缓存中的对象再生效的系统,该系统包括:
(a)与请求方、远程对象服务器和存储对象的本地高速缓存通信的高速缓存管理器,该高速缓存管理器从该请求方接收对对象的第一请求;
(b)其中,响应于将对象定位在该本地高速缓存中,高速缓存管理器响应于该第一请求将该对象传输到该请求方,并且响应于将该对象定位在本地高速缓存中,传输第二请求以便从远程对象服务器获取该对象的状态。
134.根据权利要求133的系统,其中该高速缓存管理器包括软件或硬件之一。
135.根据权利要求133的系统,其中该本地高速缓存包括随机存取存储器或磁盘存储装置之一。
136.根据权利要求133的系统,其中该远程对象服务器包括web服务器。
137.根据权利要求133的系统,其中该高速缓存管理通过网络与该请求方通信。
138.根据权利要求133的系统,其中该高速缓存管理器传输该对象到请求方并将第二请求基本同时传输到该远程对象服务器。
139.根据权利要求133的系统,其中该高速缓存管理器将该对象传输到请求方并将该第二请求并行地传输到该远程对象服务器。
140.根据权利要求133的系统,其中高速缓存管理器在从该远程对象服务器接收响应之前将被高速缓存对象传输到该请求方。
141.根据权利要求133的系统,其中该高速缓存管理器响应于该确定将取回对象的条件性请求传输到该远程对象服务器。
142.根据权利要求141的系统,其中该高速缓存管理器接收表示该对象尚未改变的对该条件性请求的响应。
143.根据权利要求141的系统,其中该高速缓存管理器响应于该条件性请求从该远程对象服务器接收该对象的更新版本。
144.根据权利要求143的系统,其中该高速缓存管理器将该对象的更新版本存储在该本地高速缓存中。
145.在一种网络环境中,该网络环境包括用作请求对象的客户机和响应于客户机请求的对象服务器之间的代理的网络设备,一种在提供对象到客户机的同时使被该设备高速缓存的对象再生效的方法,该方法包括:
(a)通过设备,从远程对象服务器拦截来自客户机的对对象的请求;
(b)通过该设备,确定该对象存在于该设备的高速缓存中;
(c)响应于该请求,通过该设备响应该确定将被高速缓存对象传输到客户机;以及
(d)通过该设备响应于该确定传输该请求以便从远程对象服务器获取该对象的状态。
146.根据权利要求145的方法,其中该设备包括透明代理。
147.根据权利要求145的方法,其中步骤(c)和(d)基本同时发生。
148.根据权利要求145的方法,其中步骤(c)和(d)并行发生。
149.根据权利要求145的方法,其中步骤(d)发生在步骤(c)之前。
150.根据权利要求145的方法,包括在从该远程对象服务器接收响应之前通过该设备将该被高速缓存对象传输到该客户机。
151.根据权利要求145的方法,其中步骤(d)包括响应于该确定,通过该设备传输取回该对象的条件性请求到远程对象服务器。
152.根据权利要求151的方法,包括通过该设备接收表示该对象未改变的对该条件性请求的响应。
153.根据权利要求152的方法,包括通过该设备接收该对象的更新版本。
154.根据权利要求153的方法,包括通过该设备将该对象的更新版本存储在高速缓存中。
155.根据权利要求151的方法,其中步骤(b)包括通过该设备确定(i)该对象存在于本地高速缓存元件中以及(ii)与该对象相关的状态标识符表示该对象是有效的。
156.在包括用作请求对象的客户机和响应于客户机请求的对象服务器之间的代理的网络设备的网络环境中,一种在提供对象到客户机的同时使由该设备高速缓存的对象再生效的设备,该设备包括:
(a)分组处理引擎,其从服务器拦截来自客户机的对对象的第一请求;
(b)与该分组处理引擎通信的高速缓存管理器,该高速缓存管理器响应于该分组处理引擎而确定该对象存储在该设备的高速缓存中;
(c)其中,响应于对象在高速缓存中的定位,该设备响应于该第一请求将该对象传输到客户机,并且响应于该对象在该高速缓存中的定位,将第二请求传输到服务器以便获取该对象的状态。
157.根据权利要求156的设备,其中该高速缓存管理器包括软件或硬件之一。
158.根据权利要求156的设备,其中该高速缓存包括随机存取存储器或磁盘存储装置之一。
159.根据权利要求156的设备,其中该设备传输该对象到该客户机并基本同时将第二请求传输到服务器。
160.根据权利要求156的设备,其中该设备将该对象传输到客户机并将该第二请求并行地传输到该服务器。
161.根据权利要求156的设备,其中该设备在从该服务器接收对第二请求的响应之前将被高速缓存对象传输到该客户机。
162.根据权利要求156的设备,其中该设备响应于该确定将取回对象的条件性请求传输到该服务器。
163.根据权利要求162的设备,其中该设备接收表示该对象还未改变的对该条件性请求的响应。
164.根据权利要求163的设备,其中该高速缓存管理器响应于该条件性请求从该服务器接收该对象的更新版本。
165.根据权利要求163的设备,其中该高速缓存管理器将该对象的更新版本存储在该本地高速缓存中。
166.一种用于基于对识别被高速缓存对象的页面的用户请求而刷新被高速缓存对象的方法,该方法包括:
(a)由装置,通过网络接收页面,该页面识别对象;
(b)由该装置,将该页面转发到请求该页面的用户;
(c)由该装置,确定该对象存储在高速缓存中,以及
(d)由该装置,在用户从该页面请求对象之前,将对对象状态的请求转发到远程对象服务器。
167.根据权利要求166的方法,其中步骤(d)包括响应于该确定由该装置将取回该对象的条件性请求传输到该远程对象服务器。
168.根据权利要求166的方法,包括由该装置,响应于该请求,接收来自该远程对象服务器的表示该对象有效的指示。
169.根据权利要求166的方法,包括由该装置,响应于该请求,从该远程对象服务器接收该对象的更新版本。
170.根据权利要求166的方法,其中步骤(c)包括由该装置确定该对象的期限已经期满。
171.根据权利要求166的方法,其中步骤(c)包括由该装置确定该对象是旧的。
172.根据权利要求166的方法,由该装置确定远程对象服务器不可用于提供对象,且响应于该确定不从该高速缓存提供该对象。
173.根据权利要求166的方法,由该装置确定该远程对象服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。
174.根据权利要求166的方法,其中步骤(c)包括确定该对象存在于该高速缓存中且与该对象相关的状态标识符表示该对象是有效的。
175.根据权利要求173的方法,其中步骤(d)包括响应于该确定不由该装置将请求传输到该远程对象服务器。
176.根据权利要求166的方法,其中步骤(c)包括确定该对象的大小在预定阈值以下且响应于该确定将对对象状态的请求传输到该远程对象服务器。
177.根据权利要求166的方法,包括由该装置识别一个或多个级的具有对象的页面,确定处于该一个或多个级的每一个对象位于该高速缓存中,并响应于该确定将对对象状态的请求传输到该远程对象服务器。
178.根据权利要求177的方法,包括在用户从该页面的该一个或多个级请求级之前由该装置传输该请求。
179.根据权利要求166的方法,包括由该装置将对该远程对象服务器的请求识别为推测性请求。
180.根据权利要求166的方法,其中该装置包括客户机或服务器之一。
181.根据权利要求166的方法,其中该装置包括拦截并转发客户机和服务器之间通信的设备。
182.一种基于用户对识别对象的页面的请求而刷新被高速缓存对象的装置,该装置包括:
用于通过网络接收页面的装置,该页面识别对象;
用于将该页面转发到请求该页面的用户的装置;
用于确定该对象存储在高速缓存中的装置;以及
用于在用户从该页面请求对象之前将对该对象状态的请求传输到远程对象服务器的装置。
183.根据权利要求182的装置,其中该装置响应于该确定将取回该对象的条件性请求传输到该远程对象服务器。
184.根据权利要求182的装置,其中该装置响应于该请求从该远程对象服务器接收表示该对象有效的指示。
185.根据权利要求182的装置,其中该装置响应于该请求从该远程对象服务器接收该对象的更新版本。
186.根据权利要求182的装置,其中该装置确定该对象的期限已经期满。
187.根据权利要求182的装置,其中该装置确定该对象是旧的。
188.根据权利要求182的装置,其中该装置确定该远程对象服务器不可用于提供该对象,且响应于该确定不从该高速缓存提供该对象。
189.根据权利要求182的装置,其中该装置确定该远程对象服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。
190.根据权利要求182的装置,其中该装置包括确定该对象存在于该高速缓存中并且与该对象相关的状态标识符表示该对象是有效的。
191.根据权利要求190的装置,其中该装置响应于该确定不将该请求传输到该远程对象服务器。
192.根据权利要求182的装置,其中该装置确定该对象的大小在预定阈值以下且响应于该确定将对对象状态的请求传输到该远程对象服务器。
193.根据权利要求182的装置,其中该装置识别一个或多个级的具有对象的页面,确定处于该一个或多个级的每一个的对象位于该高速缓存中,并响应于该确定将对对象状态的请求传输到该远程对象服务器。
194.根据权利要求182的装置,其中该装置在用户从该页面的该一个或多个级请求级之前传输该请求。
195.根据权利要求182的装置,其中该装置将对该远程对象服务器的请求识别为推测性请求。
196.根据权利要求182的装置,其中该装置包括客户机或服务器之一。
197.根据权利要求182的装置,其中该装置拦截并转发客户机和服务器之间的通信。
198.在包括用作请求页面的客户机和响应于客户机请求的服务器之间的代理的网络设备的网络环境中,一种用于刷新由该设备高速缓存的对象的方法,该方法包括:
(a)由该设备,响应于来自客户机用户的请求接收由服务器传输到客户机的页面,该页面识别对象;
(b)由该设备,转发所拦截的页面到该客户机;
(c)通过该设备的高速缓存管理器,确定该对象存储在该设备的高速缓存中;以及
(d)由该设备,在客户机的用户从该页面请求该对象之前将对该对象状态的请求传输到该服务器。
199.根据权利要求198的方法,包括由该设备,响应于该确定,将取回该对象的条件性请求传输到该服务器。
200.根据权利要求198的方法,包括由该设备,响应于该请求,从该远程对象服务器接收该对象有效的指示。
201.根据权利要求198的方法,包括由该设备,响应于该请求,从该远程对象服务器接收该对象的更新版本。
202.根据权利要求198的方法,包括通过该高速缓存管理器确定该对象的期限已经期满。
203.根据权利要求198的方法,包括由该高速缓存管理器确定该对象是旧的。
204.根据权利要求198的方法,包括由该设备确定该服务器不可用于提供该对象,且响应于该确定不从该高速缓存提供该对象。
205.根据权利要求198的方法,包括由该设备确定该服务器不允许用户访问该对象,且响应于该确定不从该高速缓存提供该对象。
206.根据权利要求198的方法,包括由该高速缓存管理器确定该对象存在于该高速缓存中并且与该对象相关的状态标识符指示该对象是有效的。
207.根据权利要求206的方法,包括响应于该确定该设备不将该请求传输到该远程对象服务器。
208.根据权利要求198的方法,包括通过该高速缓存管理器,确定高速缓存中对象的大小在预定阈值以下且响应于该确定由该设备将对对象状态的请求传输到该远程对象服务器。
209.根据权利要求198的方法,包括由该设备识别一个或多个级的具有对象的页面,由该高速缓存管理器确定处于该一个或多个级的每一个的对象位于该高速缓存中,并响应于该确定由该设备将对对象状态的请求传输到该服务器。
210.根据权利要求198的方法,包括在用户从该页面的该一个或多个级请求级之前由该设备传输该请求。
211.根据权利要求198的方法,包括由该设备将到该服务器的请求识别为推测性请求。
212.一种用于通过从远程对象服务器取对象的首部信息由装置确定是否预取从页面识别的对象的方法,该方法包括:
(a)由装置,接收包括对象标识符的页面;
(b)由该装置,传输由该装置产生的请求以便从远程对象服务器获取该对象的首部信息;
(c)由该装置,响应于所产生的请求,接收用于该对象的首部信息;以及
(d)由该装置,响应于所接收的首部信息,确定是否从该远程对象服务器预取该对象。
213.根据权利要求212的方法,其中步骤(d)包括由该装置,响应于所接收的信息,确定将该对象存储在高速缓存中。
214.根据权利要求212的方法,包括由该装置从该页面识别对象的标识符,并确定该对象未存储在高速缓存中。
215.根据权利要求212的方法,包括由该装置将该页面转发到用户、客户机或浏览器之一。
216.根据权利要求212的方法,其中步骤(b)、步骤(c)或步骤(d)之一在用户请求来自页面的对象之前进行。
217.根据权利要求212的方法,其中步骤(a)包括拦截包括识别对象的超链接的页面。
218.根据权利要求212的方法,其中步骤(b)包括由该装置传输HTTPHEAD命令到由与页面的对象相关的统一资源定位符识别的远程对象服务器。
219.根据权利要求212的方法,其中步骤(c)包括响应于所产生的请求接收该对象的首部信息,该首部信息识别该对象有效的最大时间量。
220.根据权利要求212的方法,其中步骤(c)包括响应于所产生的请求,接收该对象的首部信息,该首部信息识别该对象被最后修改的日期。
221.根据权利要求212的方法,其中步骤(d)包括响应于所接收的首部信息,确定将已经存储在高速缓存中的对象识别为有效。
222.根据权利要求212的方法,其中步骤(d)包括响应于所接收的首部信息,确定修改已经存储在高速缓冲中的对象为有效的时间周期。
223.根据权利要求212的方法,由该装置,响应于所接收的首部信息传输从该远程对象服务器获取该对象的请求。
224.根据权利要求223的方法,包括由该装置将从该远程对象服务器接收的对象存储到高速缓存中。
225.根据权利要求212的方法,其中步骤(d)包括响应于所接收的首部信息,确定修改已经存储在高速缓存中的对象是有效的时间周期。
226.根据权利要求212的方法,其中该装置包括客户机或设备之一,其用于拦截并转发客户机和服务器之间的通信。
227.一种用于通过从远程对象服务器取对象的首部信息确定是否预取从所拦截的页面识别的对象的装置,该装置包括:
用于接收包括对象识别符的页面的装置;
用于传输由该装置产生的请求以便从远程对象服务器获取对象的首部信息的装置;
用于响应于所产生的请求接收对象的首部的装置;以及
用于响应于所接收的首部信息确定是否从该远程对象服务器预取该对象的装置。
228.根据权利要求227的装置,其中该装置响应于所接收的信息确定将该对象存储在高速缓存中。
229.根据权利要求227的装置,其中该装置从该页面识别对象的标识符,并确定该对象未存储在高速缓存中。
230.根据权利要求227的装置,其中该装置将该页面转发到用户、客户机或浏览器之一。
231.根据权利要求227的装置,其中该装置在用户请求对象之前传输所产生的请求到该远程对象服务器。
232.根据权利要求227的装置,包括用于接收包括识别对象的超链接的装置。
233.根据权利要求227的装置,其中该装置传输HTTP HEAD命令到由与所拦截页面的对象相关的统一资源定位符识别的远程对象服务器。
234.根据权利要求227的装置,其中响应于所产生的请求,该装置接收该对象的首部信息,该首部信息识别该对象有效的最大时间量。
235.根据权利要求227的装置,其中响应于所产生的请求,该装置接收该对象的首部信息,该首部信息识别该对象被最后修改的日期。
236.根据权利要求227的装置,其中响应于所接收的首部信息,该装置确定将已经存储在高速缓存中的对象识别为是有效的。
237.根据权利要求227的装置,其中响应于所接收的首部信息,该装置确定修改已经存储在高速缓存中的对象为有效的时间周期。
238.根据权利要求227的装置,其中响应于所接收的首部信息该装置传输从该远程对象服务器获取该对象的请求。
239.根据权利要求238的装置,其中该装置将从该远程对象服务器接收的对象存储到高速缓存中。
240.根据权利要求227的装置,其中响应于所接收的首部信息,该装置确定修改已经存储在高速缓存中的对象为有效的时间周期。
241.根据权利要求227的装置,其中该装置包括客户机或设备之一,拦截并转发客户机和服务器之间的通信。
242.一种用于通过装置从远程对象服务器预取对象的首部信息的方法,该方法包括:
(a)由装置,接收包括对象的标识符的页面;
(b)由该装置,确定由该页面识别的对象首部存储在高速缓存中;
(c)由该装置响应于该确定,在用于请求来自该页面的对象之前产生对来自远程对象服务器的对象首部的请求。
243.根据权利要求242的方法,包括由该装置,响应于所产生的请求,接收对象的首部信息。
244.根据权利要求243的方法,包括由该装置,基于所接收的首部信息更新被高速缓存的首部信息。
245.根据权利要求242的方法,包括由该装置,从请求方接收对对象首部信息的请求。
246.根据权利要求245的方法,包括由该装置,将存储在该高速缓存中的该首部信息传输到该请求方。
247.根据权利要求245的方法,其中该请求包括HTTP HEAD命令。
248.根据权利要求245的方法,其中该请求包括使用“if-mdified-since”的HTTP HEAD命令。
249.根据权利要求248的方法,包括由该装置确定该请求的对象尚未被修变,以及用存储在高速缓存中的首部信息对请求作出响应。
250.根据权利要求245的方法,包括由该装置,确定该请求的对象已被修改并响应于该确定,转发该请求到服务器。
251.根据权利要求250的方法,包由该装置,从该请求接收该对象。
252.根据权利要求251的方法,包括由该装置,用从服务器接收的对象对请求作出响应。
253.根据权利要求251的方法,包括由该装置,将该对象存储到该高速缓存。
254.一种用于通过装置预取来自远程对象服务器的对象的首部信息的装置,该装置包括:
用于接收包括对象识别符的页面的装置;
用于确定由该页面识别的对象的首部存储在高速缓存中的装置;以及
用于响应于该确定在用户请求来自该页面的对象之前对来自远程对象服务器的对象的首部产生请求的装置。
255.根据权利要求254的装置,包括响应于所产生的请求,由该装置接收对象首部信息的装置。
256.根据权利要求255的装置,包括用于基于所接收的首部信息更新被高速缓存首部信息的装置装置。
257.根据权利要求254的装置,包括用于从请求方接收对对象首部信息的请求的装置。
258.根据权利要求257的装置,包括将存储在该高速缓存中的该首部信息传输到该请求方。
259.根据权利要求257的装置,其中该请求包括HTTP HEAD命令。
260.根据权利要求257的装置,其中该请求包括使用“if-mdified-since”的HTTP HEAD命令。
261.根据权利要求260的装置,包括用于确定该请求的对象还未改变,并用存储在高速缓存中的首部信息的响应该请求装置。
262.根据权利要求257的装置,包括用于确定请求的对象已经改变并响应于该确定转发该请求到服务器的装置。
263.根据权利要求262的装置,包括用于从该请求接收该对象的装置。
264.根据权利要求263的装置,包括用于用从服务器接收的对象响应该请求的装置。
265.根据权利要求263的装置,包括用于将该对象存储到该高速缓存的装置。
266.根据权利要求254的装置,其中该装置是客户机或设备之一,其拦截并转发客户机和服务器之间的通信。
267.一种预取不可高速缓存内容以存储在压缩历史中以改进随后传输的具有不可高速缓存内容的页面的压缩的方法,该方法包括步骤:
(a)由装置,接收由服务器传输到客户机的第一页面,该第一页面识别不可高速缓存对象;
(b)在用户请求来自该第一页面的不可高速缓存对象之前,由该装置,产生对由该页面识别的不可高速缓存对象的请求;
(c)由该装置,将所产生的请求传输到该服务器;以及
(d)由该装置将从该服务器接收的不可高速缓存对象存储到第一压缩历史。
268.根据权利要求267的方法,其中步骤(a)包括由该装置,接收通过用户的第一会话传输的该第一页面。
269.根据权利要求268的方法,其中该第一页面包括用于用户的页面个性化版本。
270.根据权利要求267的方法,其中该不可高速缓存对象是由该服务器动态生成的。
271.根据权利要求267的方法,包括由该装置,接收由该服务器传输到该客户机的第二页面,该第二页面包括不可高速缓存内容。
272.根据权利要求271的方法,包括由该服务器通过用户的第一会话或第二会话之一传输该第二页面。
273.根据权利要求272的方法,其中该第二页面包括用于用户的页面个性化版本。
274.根据权利要求271的方法,包括由该装置,确定第二页面的一部分与存储在压缩历史中的部分不可高速缓存对象相匹配。
275.根据权利要求274的方法,包括响应于该确定由该装置,利用与该不可高速缓存对象的匹配部分压缩该第二页面。
276.根据权利要求275的方法,包括由该装置,传输被压缩的第二页面到该客户机。
277.根据权利要求276的方法,通过第二装置接收被压缩的第二页面,并利用与存储在第二压缩历史中的第一页面的匹配的不可高速缓存对象解压该被压缩的第二页面。
278.根据权利要求267的方法,包括通过第二装置接收由该装置转发的第一页面。
279.根据权利要求278的方法,包括通过第二装置传输由该第二装置产生的请求以便从服务器获取由该第一页面识别的不可高速缓存对象。
280.根据权利要求279的方法,包括通过该第二装置将响应于所产生的请求从该服务器接收的不可高速缓存对象存储到第二压缩历史。
281.根据权利要求267的方法,包括由该装置,通过多个用户会话接收识别多个不可高速缓存对象的多个页面,传输由该装置产生的多个请求以便从一个或多个服务器获取不可高速缓存对象,并将响应于该请求而接收的多个不可高速缓存对象存储到第一压缩历史。
282.根据权利要求281的方法,包括由该装置接收第三页面,并确定第三页面的一部分与存储在第一压缩历史中的多个不可高速缓存对象的一个或多个部分相匹配。
283.根据权利要求267的方法,其中该压缩历史的一部分存储在存储器或磁盘存储装置之一中。
284.根据权利要求267的方法,包括由该装置将至少部分第一压缩历史传输到第二装置以存储在第二压缩历史中。
285.根据权利要求267的方法,其中该装置包括客户机或设备之一。
286.一种通过网络文件传输预取内容以用作用于压缩超文本协议(HTTP)通信的压缩历史的方法,该方法包括步骤:
(a)在用户通过HTTP请求请求一个或多个文件的文件之前,执行从第一装置到第二装置的一个或多个文件的非HTTP网络文件传输;
(b)通过设备拦截该非HTTP网络文件传输的分组;以及
(c)由该设备,将来自所拦截分组的一个或多个文件的内容存储到压缩历史。
287.根据权利要求286的方法,包括由该设备,接收响应于HTTP请求通过HTTP协议由服务器传输到客户机的页面。
288.根据权利要求287的方法,由该设备确定该页面的一部分与存储在第一压缩历史中的一个或多个文件的至少一部分内容相匹配。
289.根据权利要求288的方法,包括由该设备,根据该确定压缩该页面。
290.根据权利要求289的方法,包括由该设备将被压缩页面传输到该客户机。
291.根据权利要求290的方法,包括通过该客户机或第二设备之一,拦截被压缩页面,并利用来自存储在第二压缩历史中的网络文件传输的一个或多个文件解压该被压缩页面。
292.根据权利要求287的方法,其中该页面包括来自网络文件传输的一个或多个文件的文件。
293.根据权利要求286的方法,包括由设备管理员开始执行网络文件传输以便预加载设备的压缩历史。
294.根据权利要求286的方法,其中该网络文件传输包括远程文件备份。
295.根据权利要求286的方法,其中该分组包括远程备份协议或文件传输协议之一。
296.根据权利要求286的方法,包括由该设备将所拦截的网络分组转发到第二装置。
297.根据权利要求286的方法,包括通过该第二装置废除来自网络文件传输的该一个或多个文件。
298.根据权利要求286的方法,通过第二设备拦截被转发的网络分组,并将来自所拦截分组的该一个或多个文件的内容存储到第二压缩历史。
299.根据权利要求286的方法,包括通过该设备开始执行网络文件传输。
300.根据权利要求299的方法,包括由该设备响应于策略引擎的策略开始执行网络文件传输。
301.一种基于到远程对象服务器的连接的操作特性动态地确定是否检查被高速缓存对象的状态的方法,该方法包括步骤:
(a)通过装置,接收通过传输层连接从服务器传输到请求方的对象,该装置将该对象存储在高速缓存中;
(b)由该装置,检测到该服务器的该传输层连接的操作特性是否在预定阈值内;以及
(c)响应于该检查由该装置,确定是否将请求传输到该服务器以获取该对象的状态。
302.根据权利要求301的方法,其中步骤(a)包括由该装置,转发该对象到该请求方。
303.根据权利要求301的方法,其中步骤(b)包括由该装置,检测通过该传输层连接到该服务器的可用带宽不在该预定阈值内。
304.根据权利要求304的方法,其中步骤(c)包括响应于该检测由该装置,确定不将该请求传输到该服务器。
305.根据权利要求301的方法,其中步骤(b)包括由该装置检测到服务器的传输层连接的速度不在预定阈值内。
306.根据权利要求305的方法,其中步骤(c)包括响应于该检测由该装置,确定不将该请求传输到该服务器。
307.根据权利要求301的方法,其中步骤(b)包括由该装置,检测到服务器的该传输层连接的往返时间不在预定阈值内。
308.根据权利要求307的方法,其中步骤(c)包括响应于该检测由该装置,确定不将该请求传输到该服务器。
309.根据权利要求301的方法,其中步骤(b)包括由该装置,检测服务器之一通过该传输层连接是不可用的或者该传输层连接是不可操作的。
310.根据权利要求301的方法,其中步骤(c)包括响应于该检测由该装置,确定不将该请求传输到该服务器。
311.根据权利要求301的方法,其中步骤(b)包括由该装置,检测到服务器的该传输层连接的操作特性在用于刷新高速缓存中对象的预定阈值内。
312.根据权利要求311的方法,其中步骤(c)包括响应于该检测由该装置传输该请求到该服务器以获得对象的状态。
313.根据权利要求312的方法,包括由该装置,在用户请求来自该页面的对象之前传输该请求到该服务器。
314.根据权利要求312的方法,包括由该装置将对对象的条件性请求传输到服务器。
315.根据权利要求312的方法,包括由该装置,从该服务器接收该对象的更新版本,并将该对象存储在该高速缓存中。
316.根据权利要求312的方法,包括由该装置,接收表示高速缓存中对象为旧的对象状态,并响应于该状态,将对对象的第二请求传输到该服务器。
317.根据权利要求301的方法,其中步骤(b)包括由该装置,检测到该服务器的传输层连接具有大于预定带宽阈值的可用带宽,且其中步骤(c)包括由该装置响应于该检测将该请求传输到该服务器。
318.根据权利要求301的方法,其中该装置包括客户机或设备之一,其拦截或转发客户机和服务器之间的通信。
319.在包括用作请求页面的客户机和响应于客户机请求的服务器之间代理的网络设备的网络环境中,一种用于基于到服务器的连接的操作特性动态地确定是否检查被高速缓存对象的状态的设备,该设备包括:
用于拦截通过传输层连接从服务器传输到客户机的对象并将该对象存储在高速缓存中的装置;
用于检查到服务器的传输层连接的操作特性是否在预定阈值内的装置;以及
用于响应于该检测确定是否将请求传输到该服务器以获取该对象状态的装置。
320.根据权利要求319的设备,其中该设备转发该对象到该客户机。
321.根据权利要求319的设备,包括用于检测通过到该服务器的传输层连接的可用带宽不在该预定阈值内的装置。
322.根据权利要求321的设备,包括用于响应于该检测确定不将该请求传输到该服务器的装置。
323.根据权利要求319的设备,包括用于检测到该服务器的传输层连接的速度不在该预定阈值内的装置。
324.根据权利要求323的设备,包括用于响应于该检测确定不将该请求传输到该服务器的装置。
325.根据权利要求319的设备,包括用于检测到该服务器的传输层连接的往返时间不在该预定阈值内的装置。
326.根据权利要求325的设备,包括用于响应于该检测确定不将该请求传输到该服务器的装置。
327.根据权利要求319的设备,包括用于检测该服务器通过该传输层连接是不可用的或者该传输层连接是不可操作的之一的装置。
328.根据权利要求327的设备,包括用于响应于该检测确定不将该请求传输到该服务器的装置。
329.根据权利要求319的设备,包括用于检测到该服务器的传输层连接的操作特性在用于刷新高速缓存中对象的预定阈值内的装置。
330.根据权利要求329的设备,包括用于响应于该检测确定将该请求传输到该服务器以获得对象的状态的装置。
331.根据权利要求331的设备,包括用于在用户请求来自该页面的对象之前将该请求传输到该服务器的装置。
332.根据权利要求332的设备,其中该设备将对对象的条件性请求传输到该服务器。
333.根据权利要求332的设备,包括用于从该服务器接收对象的更新版本并将该对象存储在该高速缓存中的高速缓存管理器。
334.根据权利要求332的设备,包括用于接收表示高速缓存中的对象为旧的对象状态,并响应于该状态将对对象的第二请求传输到该服务器的装置。
335.根据权利要求319的设备,包括用于检测到该服务器的该传输层连接具有大于预定带宽阈值的可用带宽,并响应于该检测将该请求传输到该服务器的装置。
336.一种用于响应于一个或多个请求而更新被高速缓存对象期满周期以便刷新页面上的对象的方法,该方法包括步骤:
(a)由装置,拦截刷新识别对象的页面的请求,该装置在高速缓存中存储具有期满周期的对象;
(b)响应于该请求由该装置,确定用于被高速缓存对象的第二期满周期;以及
(c)由该装置,将该第二期满周期建立为高速缓存中被高速缓存对象的期满周期。
337.根据权利要求336的方法,其中步骤(b)包括响应于该请求由该装置设置短语该期满周期的第二期满周期。
338.根据权利要求336的方法,其中步骤(a)包括由该装置,拦截刷新页面的请求,该请求通过选择由浏览器应用提供的刷新按钮而产生。
339.根据权利要求336的方法,其中步骤(a)包括由该装置,拦截刷新页面的请求,该请求通过用户选择浏览器应用的按钮来产生。
340.根据权利要求336的方法,其中由该装置,拦截多个刷新页面的请求。
341.根据权利要求336的方法,其中响应于该多个请求由该装置,确定减小被高速缓存对象的期满周期一预定阈值。
342.根据权利要求336的方法,其中步骤(a)包括由该装置在预定时间阈值之后拦截刷新页面的请求。
343.根据权利要求342的方法,包括由该装置,在将该页面转发到请求方之后超过预定时间拦截刷新页面的请求。
344.根据权利要求342的方法,包括由该装置,在接收刷新页面的先前请求之后超过预定时间拦截刷新页面的请求。
345.根据权利要求336的方法,其中步骤(b)包括由该装置设置长于该期满周期的第二期满周期。
346.根据权利要求336的方法,其中该装置包括客户机、服务器或拦截并转发客户机和服务器之间的通信的设备之一。
347.一种用于响应于一个或多个刷新页面上对象的请求而更新被高速缓存对象的期满周期的装置,该装置包括:
用于拦截刷新识别对象的页面的请求的装置,该对象存储在高速缓存中具有期满周期;
用于响应于该请求为该被高速缓存对象确定第二期满周期的装置;以及
用于将该第二期满周期建立为高速缓存中被高速缓存对象的期满周期的装置。
348.根据权利要求347的装置,其中该装置响应于该请求设置短于该期满周期的该第二期满周期。
349.根据权利要求347的装置,其中该刷新页面的请求包括通过选择由浏览器应用提供的刷新按钮而产生的请求。
350.根据权利要求347的装置,其中该刷新页面的请求通过用户选择浏览器应用的按钮而产生。
351.根据权利要求347的装置,其中该装置拦截多个刷新页面的请求。
352.根据权利要求347的装置,其中该装置响应于该多个请求减小被高速缓存对象的期满周期预定阈值。
353.根据权利要求347的装置,其中该装置在预定时间阈值之后拦截刷新页面的请求。
354.根据权利要求353的装置,其中该刷新页面的请求在将该页面转发到请求方之后超过预定时间由装置接收。
355.根据权利要求353的装置,其中该刷新页面的请求在拦截刷新该页面的先前请求之后超过预定时间由装置接收。
356.根据权利要求353的装置,包括用于设置长于该期满周期的第二期满周期的装置。
357.根据权利要求347的装置,包括客户机、服务器或拦截并转发客户机和服务器之间的通信的设备之一。
358.在具有用作请求页面的客户机和响应于客户机请求的服务器之间代理的设备的网络环境中,一种用于利用识别为请求目的地的互联网协议地址解析由统一资源定位符识别的主机名地址的方法,该方法包括步骤:
(a)通过设备,从客户机接收请求分组,该请求分组通过应用协议层请求页面的统一资源定位符;
(b)由该设备,从该请求分组识别该请求的目的地的互联网协议地址;
(c)由该设备,将该目的地的互联网协议地址与由该统一资源定位符识别的主机名相关联;
(d)由该设备,在高速缓存中将识别互联网协议地址的条目存储为主机名的地址;
(e)由该设备,接收客户机的用于解析主机名的域名服务器(DNS)请求或对识别主机名的统一资源定位符的客户机第二请求之一;以及
(f)由该设备,将高速缓存中的条目识别为主机名的解析地址。
359.根据权利要求358的方法,其中步骤(c)包括该设备不查询用于解析主机名地址的DNS服务器。
360.根据权利要求358的方法,包括由该客户机,在传输该请求分组之前,解析由该客户机请求的统一资源定位符识别的主机名的互联网协议地址。
361.根据权利要求360的方法,其中步骤(a)包括由该客户机,通过该请求分组传输一请求以便打开到由主机名的互联网协议地址识别的目的地的传输层连接。
362.根据权利要求358的方法,其中步骤(b)包括由该设备,从该请求分组的首部的字段提取该目的地的互联网协议地址。
363.根据权利要求358的方法,其中步骤(b)包括由该设备,从该请求分组的网络层或传输层之一识别该互联网协议地址。
364.根据权利要求358的方法,包括由该设备用高速缓存中的条目对客户机的DNS请求作出响应。
365.根据权利要求358的方法,包括由该设备,利用高速缓存中提供主机名解析地址的条目识别第二请求的被高速缓存的URL。
366.在具有用作请求页面的客户机和响应客户机请求的服务器之间代理的设备的网络环境中,一种用于由设备更新主机名的被高速缓存的域名服务器(DNS)地址的方法,该方法包括步骤:
(a)由设备,拦截客户机的用于解析主机名的域名服务器(DNS)请求或对识别主机名的统一资源定位符的客户机请求之一;
(b)由该设备,将主机名的被解析DNS地址存储在高速缓存中;
(c)由该设备,拦截来自客户机的对页面的第二请求;
(d)由该设备,转发该页面到该客户机;
(e)由该设备,确定所转发的页面的统一资源定位符识别主机名;以及
(f)由该设备响应于该确定,传输由该设备产生的请求以便通过服务器解析主机名的地址。
367.根据权利要求367的方法,其中步骤(b)包括由该设备将DNS解析请求传输到DNS服务器,并接收主机名的地址解析。
368.根据权利要求368的方法,包括由该设备将主机名的地址解析存储在高速缓存中。
369.根据权利要求367的方法,其中步骤(f)包括由该设备,在用户请求来自页面的统一资源定位符之前传输该请求。
370.根据权利要求367的方法,其中步骤(f)包括由该设备,在客户机请求由该页面的统一资源定位符识别的主机名的DNS解析之前传输该请求。
371.根据权利要求367的方法,其中步骤(e)包括由该设备,确定该主机名的地址位于高速缓存中。
372.根据权利要求367的方法,包括由该设备,为主机名的被高速缓存的DNS地址在高速缓存中建立期满周期。
373.根据权利要求372的方法,其中步骤(e)包括由该设备确定用于被高速缓存的DNS地址的期满周期已经期满。
374.根据权利要求372的方法,其中步骤(e)包括由该设备,确定用于被高速缓存的DNS地址的期满周期的剩余时间在预定阈值内。
375.根据权利要求367的方法,包括由该设备产生作为推测性请求的请求。
376.根据权利要求375的方法,包括由该设备,以低于非推测性请求的传输优先级传输所产生的请求。
377.更加权利要求367的方法,包括由该设备,响应于接收第二请求,将第二请求转发到由统一资源定位符识别的主机名的被高速缓存DNS地址并将第三请求传输到DNS服务器以便获取存储在高速缓存中的主机名的DNS地址的更新解析。
378.根据权利要求377的方法,包括由该设备将第二请求转发到主机名的被高速缓存DNS地址,将第三请求基本同时或彼此并行地转发到DNS服务器。
379.一种用作请求页面的客户机和响应客户机请求的服务器之间的代理的设备,该设备更新主机名的被高速缓存域名服务器(DNS)地址,该设备包括:
用于拦截客户机的用于解析主机名的域名服务器(DNS)请求或对识别主机名的统一资源定位符的客户机请求之一的装置;
用于将主机名的解析的DNS地址存储在高速缓存中的高速缓存管理器;
用于拦截来自客户机的对页面的第二请求的装置;
用于将该页面转发到该客户机的装置;以及
用于确定所转发页面的统一资源定位符识别主机名的装置;以及
用于响应于该确定而传输由该设备产生的请求以便通过服务器解析主机名地址的装置。
380.根据权利要求379的设备,其中该设备将DNS解析请求传输到DNS服务器,并接收主机名的地址解析。
381.根据权利要求380的设备,其中该高速缓存管理器将主机名的地址解析存储在高速缓存中。
382.根据权利要求380的设备,其中该设备在用户请求来自页面的统一资源定位符之前传输该请求。
383.根据权利要求380的设备,其中该设备在客户机请求由页面的统一资源定位符识别的主机名的DNS解析之前传输该请求。
384.根据权利要求380的设备,其中该高速缓存管理器确定用于主机名的地址位于高速缓存中。
385.根据权利要求380的设备,其中该高速缓存管理器在高速缓存中为主机名的被高速缓存地址建立期满周期。
386.根据权利要求380的设备,其中该高速缓存管理器确定用于被高速缓存地址的期满周期已经期满。
387.根据权利要求380的设备,其中该高速缓存管理器确定用于被高速缓存地址的期满周期的剩余时间在预定阈值内。
388.根据权利要求380的设备,包括用于产生作为推测性请求的请求的装置。
389.根据权利要求388的设备,其中该设备以低于非推测性请求的传输优先级传输所产生的请求。
390.根据权利要求388的设备,其中该设备响应于接收第二请求将该第二请求转发到由统一资源定位符识别的主机名的被高速缓存地址,并将第三请求传输到DNS服务器以便获取存储在高速缓存中的主机名的地址的更新解析。
391.根据权利要求390的设备,其中该设备将第二请求转发到主机名的被高速缓存地址,并基本同时或彼此并行地将第三请求转发到DNS服务器。
392.一种用于利用识别为请求的目的地的互联网协议地址通过中介解析由统一资源定位符识别的主机名的地址的方法,该方法包括步骤:
(a)由中介,接收来自客户机的经由应用协议层请求页面的统一资源定位符的请求分组;
(b)由该中介,从该请求分组识别该请求的目的地互联网协议地址;
(c)由该中介,将该目的地的互联网协议地址与由该统一资源定位符识别的主机名相关联;
(d)由该中介,在高速缓存中存储将该互联网协议地址识别为主机名地址的条目;
(e)由该中介,接收客户机的用于解析主机名的域名服务器(DNS)请求或对识别主机名的统一资源定位符的客户机第二请求之一;以及
(f)由该中介,将高速缓存中的该条目识别为主机名的解析地址。
393.根据权利要求392的方法,其中步骤(c)包括该中介不查询用于解析主机名地址的DNS服务器。
394.根据权利要求392的方法,包括通过该客户机,在传输该请求分组之前,解析由该客户机请求的统一资源定位符识别的主机名的互联网协议地址。
395.根据权利要求394的方法,其中步骤(a)包括由该客户机,通过该请求分组传输一请求以便打开到由主机名的互联网地址识别的目的地的传输层连接。
396.根据权利要求392的方法,其中步骤(b)包括通过该中介,从该请求分组的首部的字段提取该目的地的互联网协议地址。
397.根据权利要求392的方法,其中步骤(b)包括通过该中介,从该请求分组的网络层或传输层之一识别该互联网协议地址。
398.根据权利要求392的方法,包括通过该中介用高速缓存中的条目对客户机的DNS请求作出响应。
399.根据权利要求392的方法,包括通过该中介,利用高速缓存中提供主机名解析地址的条目识别第二请求的被高速缓存的URL。
400.根据权利要求392的方法,其中该中介包括客户机代理或设备之一。
401.一种用于利用空闲的网络带宽推测性预取对象的方法,该方法包括:
(a)通过网络由装置接收识别对象的通信;
(b)由该装置,产生对对象的到对象服务器的请求,该请求被识别为推测性请求;
(c)由该装置,确定空闲网络带宽的可用性以便从对象服务器获取对象;以及
(d)响应于确定空闲网络带宽的可用性,由该装置,根据传输速率将所产生的请求分组传输到对象服务器以便将来自推测性请求的带宽利用(usage)保持在预定水平内。
402.根据权利要求401的方法,由该装置将该通信转发到请求方。
403.根据权利要求401的方法,其中步骤(d)包括在用户请求由该通信识别的对象之前传输所产生的请求分组。
404.根据权利要求401的方法,其中步骤(b)包括在用户请求由该通信识别的对象之前产生请求分组。
405.根据权利要求401的方法,包括由该装置,响应于所传输的请求分组接收对象。
406.根据权利要求405的方法,包括由该装置将所接收的对象存储在高速缓存中。
407.根据权利要求401的方法,其中步骤(a)包括接收包括识别对象的超链接的页面。
408.根据权利要求401的方法,包通过将传输层或互联网协议层首部选项之一的字段编为到预定值而由该装置将所产生的请求分组识别为推测性请求。
409.根据权利要求401的方法,包括通过将应用层协议选项的值编码为预定值而由该装置将所产生的请求分组识别为推测性请求。
410.根据权利要求401的方法,包括通过将互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)之一的值设置为预定值而由该装置将所产生的请求分组识别为推测性请求。
411.根据权利要求401的方法,包括通过将识别该请求的连接状态表中的条目制为推测性的而由该装置将所产生的请求分组识别为推测性请求。
412.根据权利要求401的方法,包括由该装置,将所产生的请求分组识别为比对对象的非推测性请求低的传输优先级。
413.根据权利要求401的方法,其中该装置包括客户机、服务器或客户机和服务器之间的设备中的一个。
414.一种用于利用空闲网络带宽推测性预取对象的系统,该系统包括:
用于拦截通过网络传输的通信的装置,该通信包括对象的标识符;
用于对所识别的对象产生到对象服务器的请求分组的装置,该请求被识别为推测性请求;
用于确定空闲网络带宽可用性以便从对象服务器获取对象的装置;以及
用于响应于确定空闲网络带宽的可用性根据传输速率将所产生的请求分组传输到对象服务器以将来自推测性请求的带宽利用(usage)保持在预定水平内的装置。
415.根据权利要求414的系统,其中该系统将该通信转发到请求方。
416.根据权利要求414的系统,其中该系统在用户请求由该页面识别的对象之前传输所产生的请求分组。
417.根据权利要求414的系统,其中该系统在用户请求由该页面识别的对象之前产生请求分组。
418.根据权利要求414的系统,其中该对象响应于所传输的请求分组。
419.根据权利要求418的系统,其中该系统将所接收的对象存储在高速缓存中。
420.根据权利要求415的系统,其中该页面包括识别对象的超链接。
421.根据权利要求415的系统,其中该系统通过将传输层或互联网协议层首部选项之一的字段编码为预定值而将所产生的请求分组识别为推测性请求。
422.根据权利要求415的系统,其中该系统通过将应用层协议选项的值编码为预定值而将所产生的请求分组识别为推测性请求。
423.根据权利要求415的系统,其中该系统通过将互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)之一的值设置为预定值而将所产生的请求分组识别为推测性请求。
424.根据权利要求415的系统,其中该系统通过将识别该请求的连接状态表中的条目制为推测性的而将所产生的请求分组识别为推测性请求。
425.根据权利要求415的系统,其中该系统将所产生的请求分组识别为比对对象的非推测性请求低的传输优先级。
426.一种利用空闲网络带宽通过多个装置推测性预取对象的方法,该方法包括:
(a)通过第一装置接收从服务器传输到客户机的通信,该通信包括对象的识别符,该第一设备转发该通信到请求方;
(b)通过该第一装置,将对由该通信识别的对象的请求传输到服务器,该第一装置产生该请求并将该请求识别为推测性的;
(c)由第二装置,将来自第一装置的该请求识别为推测性请求;
(d)由该第二装置,确定空闲网络带宽的可用性以便从服务器获取对象;以及
(e)响应于确定空闲网络带宽的可用性由该第二装置,根据传输速率传输该请求以便将来自推测性请求的带宽利用(usage)保持在预定水平内。
427.根据权利要求426的方法,其中步骤(b)或步骤(e)之一包括在用户请求由该通信识别的对象之前传输所产生的请求。
428.根据权利要求426的方法,其中步骤(b)包括在用户请求由该通信识别的对象之前产生该请求。
429.根据权利要求426的方法,包括通过该第二装置,响应于所传输的请求来接收对象。
430.根据权利要求429的方法,包括通过该第二装置,将所接收的对象存储在高速缓存中。
431.根据权利要求430的方法,包括通过该第二装置,将该对象传输到第一装置。
432.根据权利要求431的方法,包括通过该第一装置,将所接收的对象存储在高速缓存中。
433.根据权利要求426的方法,其中步骤(a)包括通过该第一装置,接收包括识别该对象的超链接的页面。
434.根据权利要求426的方法,包括通过将传输层或互联网协议层首部选项之一的字段编码为预定值,通过该第一装置将所产生的请求识别为推测性请求。
435.根据权利要求426的方法,包括通过将应用层协议选项的值编码为预定值,通过该第一装置将所产生的请求识别为推测性请求。
436.根据权利要求426的方法,包括通过将互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)之一的值编码为预定值,通过该第一装置将所产生的请求识别为推测性请求。
437.根据权利要求426的方法,包括通过识别应用层协议选项的编码值包括预定值,由该第二装置识别所产生的请求是推测性请求。
438.根据权利要求426的方法,包括通过识别互联网协议(IP)帧的字段中的服务类型(TOS)或DiffServ Codepoint(DSCP)之一的编码值包括预定值,由该第二装置识别所产生的请求是推测性请求。
439.根据权利要求426的方法,包括通过将识别该请求的连接状态表中的条目识别为推测性,由该第二装置识别所产生的请求是推测性请求。
440.根据权利要求426的方法,包括由第一装置或第二装置之一,以低于非推测性对象请求的传输优先级传输该请求。
441.根据权利要求426的方法,其中该第一装置包括客户机或设备之一。
442.根据权利要求426的方法,其中该第二装置包括设备。
443.根据权利要求426的方法,包括由第一装置或第二装置之一,以低于非推测性对象请求的传输优先级传输该请求。
CN200880015868.1A 2007-03-12 2008-03-12 用于高速缓存操作的系统和方法 Expired - Fee Related CN101682621B (zh)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US11/685,134 US8504775B2 (en) 2007-03-12 2007-03-12 Systems and methods of prefreshening cached objects based on user's current web page
US11/685,136 US7809818B2 (en) 2007-03-12 2007-03-12 Systems and method of using HTTP head command for prefetching
US11/685,137 2007-03-12
US11/685,137 US20080228864A1 (en) 2007-03-12 2007-03-12 Systems and methods for prefetching non-cacheable content for compression history
US11/685,142 2007-03-12
US11/685,131 2007-03-12
US11/685,136 2007-03-12
US11/685,142 US7720936B2 (en) 2007-03-12 2007-03-12 Systems and methods of freshening and prefreshening a DNS cache
US11/685,131 US8103783B2 (en) 2007-03-12 2007-03-12 Systems and methods of providing security and reliability to proxy caches
US11/685,134 2007-03-12
US11/685,132 US7783757B2 (en) 2007-03-12 2007-03-12 Systems and methods of revalidating cached objects in parallel with request for object
US11/685,139 2007-03-12
US11/685,132 2007-03-12
US11/685,130 2007-03-12
US11/685,141 2007-03-12
US11/685,133 2007-03-12
US11/685,139 US8037126B2 (en) 2007-03-12 2007-03-12 Systems and methods of dynamically checking freshness of cached objects based on link status
US11/685,133 US7584294B2 (en) 2007-03-12 2007-03-12 Systems and methods for prefetching objects for caching using QOS
US11/685,141 US8701010B2 (en) 2007-03-12 2007-03-12 Systems and methods of using the refresh button to determine freshness policy
US11/685,130 US8074028B2 (en) 2007-03-12 2007-03-12 Systems and methods of providing a multi-tier cache
PCT/US2008/056672 WO2008112770A2 (en) 2007-03-12 2008-03-12 Systems and methods for cache operations

Publications (2)

Publication Number Publication Date
CN101682621A true CN101682621A (zh) 2010-03-24
CN101682621B CN101682621B (zh) 2014-07-09

Family

ID=39760367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880015868.1A Expired - Fee Related CN101682621B (zh) 2007-03-12 2008-03-12 用于高速缓存操作的系统和方法

Country Status (6)

Country Link
EP (1) EP2122992B1 (zh)
CN (1) CN101682621B (zh)
AU (1) AU2008225151B2 (zh)
CA (1) CA2680316A1 (zh)
IL (1) IL200816A0 (zh)
WO (1) WO2008112770A2 (zh)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102026290A (zh) * 2010-12-16 2011-04-20 华为终端有限公司 一种无线移动网关及该无线移动网关响应用户访问的方法
CN102223510A (zh) * 2011-06-03 2011-10-19 杭州华三通信技术有限公司 缓存调度方法和装置
CN102469167A (zh) * 2010-11-01 2012-05-23 中国移动通信集团北京有限公司 域名查询的实现方法和系统
CN102855334A (zh) * 2012-09-29 2013-01-02 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN102902787A (zh) * 2012-09-29 2013-01-30 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN103125108A (zh) * 2010-09-28 2013-05-29 高通股份有限公司 建立发射控制协议连接的系统和方法
CN103139609A (zh) * 2013-02-01 2013-06-05 深圳市深信服电子科技有限公司 对远程应用视频播放进行优化的方法和装置
CN103227827A (zh) * 2013-04-24 2013-07-31 北京小米科技有限责任公司 请求资源的方法和装置
CN103368867A (zh) * 2012-03-26 2013-10-23 国际商业机器公司 高速缓存经网络与辅助站点通信的对象的方法和系统
CN103392321A (zh) * 2010-12-29 2013-11-13 思杰系统有限公司 用于基于策略集成横向部署的wan优化设备的系统和方法
CN103631727A (zh) * 2012-08-27 2014-03-12 阿里巴巴集团控股有限公司 用于缓存服务器的缓存管理方法及缓存管理系统
CN103765423A (zh) * 2011-08-03 2014-04-30 亚马逊技术有限公司 收集与本地存储的数据文件相关联的事务数据
CN104111829A (zh) * 2014-06-25 2014-10-22 小米科技有限责任公司 数据存储方法及装置
CN104737127A (zh) * 2012-08-16 2015-06-24 数据加速器有限公司 延迟虚拟化数据加速器
CN104852988A (zh) * 2015-05-29 2015-08-19 杭州华三通信技术有限公司 一种报文转发方法和装置
CN103155524B (zh) * 2010-08-05 2016-06-29 思杰系统有限公司 用于在多核系统中的多个核之间共享iip地址的系统和方法
CN106130791A (zh) * 2016-08-12 2016-11-16 飞思达技术(北京)有限公司 基于服务质量的缓存设备服务能力遍历测试系统及方法
CN106161664A (zh) * 2015-04-15 2016-11-23 阿里巴巴集团控股有限公司 域名解析方法及装置、数据传输方法及装置
CN107069778A (zh) * 2017-01-21 2017-08-18 河北郎尊电力科技有限公司 配电网三相负荷自动调节装置及其控制方法
CN107104892A (zh) * 2016-02-19 2017-08-29 深圳市福云明网络科技有限公司 网络加速的方法和装置
CN107615260A (zh) * 2015-10-22 2018-01-19 甲骨文国际公司 用于在事务处理环境中提供分布式高速缓存的系统和方法
CN108196515A (zh) * 2017-12-21 2018-06-22 中国电子信息产业集团有限公司第六研究所 跨平台实时数据处理方法和装置
CN108259208A (zh) * 2016-12-29 2018-07-06 华为技术有限公司 一种检测报文染色位冲突的方法和设备
CN109308280A (zh) * 2017-07-26 2019-02-05 杭州华为数字技术有限公司 数据处理方法和相关设备
CN109508302A (zh) * 2017-09-14 2019-03-22 华为技术有限公司 一种内容填充方法和存储器
CN109922083A (zh) * 2019-04-10 2019-06-21 武汉金盛方圆网络科技发展有限公司 一种网络协议流量控制系统
CN110443360A (zh) * 2017-06-16 2019-11-12 上海兆芯集成电路有限公司 用于操作处理器的方法
CN110858238A (zh) * 2018-08-08 2020-03-03 阿里巴巴集团控股有限公司 一种数据处理的方法和装置
CN111831699A (zh) * 2020-09-21 2020-10-27 北京新唐思创教育科技有限公司 数据缓存方法、电子设备及计算机可读介质
CN111859225A (zh) * 2020-07-31 2020-10-30 中国工商银行股份有限公司 程序文件的访问方法、装置、计算设备和介质
CN113204311A (zh) * 2020-01-31 2021-08-03 西部数据技术公司 NVMe SGL位存储桶传输
CN113439428A (zh) * 2018-12-26 2021-09-24 思杰系统有限公司 操作具有dns高速缓存的装置的系统和方法
CN114124887A (zh) * 2021-11-29 2022-03-01 牙木科技股份有限公司 Dns服务器的视图查询方法、dns服务器及可读存储介质

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102196506B (zh) * 2010-03-15 2013-12-04 华为技术有限公司 网络资源访问控制方法、系统及装置
CN101895550B (zh) * 2010-07-16 2012-12-26 刘季伟 一种应用于互联网网站的兼容动静态内容的缓冲加速方法
US9253278B2 (en) 2012-01-30 2016-02-02 International Business Machines Corporation Using entity tags (ETags) in a hierarchical HTTP proxy cache to reduce network traffic
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US9055118B2 (en) 2012-07-13 2015-06-09 International Business Machines Corporation Edge caching using HTTP headers
US20140337464A1 (en) * 2013-05-10 2014-11-13 Alcatel-Lucent Canada Inc. System and method for inline http notification
CN104361005B (zh) * 2014-10-11 2017-10-31 北京中搜网络技术股份有限公司 一种垂直搜索引擎中对信息单元的调度方法
CN110134650B (zh) 2019-04-28 2022-03-25 深圳市腾讯网域计算机网络有限公司 一种文件加载方法、装置、设备及存储介质
CN110912835B (zh) * 2019-11-08 2023-04-07 腾讯科技(深圳)有限公司 业务分流方法、装置及系统
CN111259994B (zh) * 2020-05-07 2020-07-17 上海飞旗网络技术股份有限公司 一种基于时序特征学习的数据流分类方法及装置
CN113746920B (zh) * 2021-09-03 2023-11-28 北京知道创宇信息技术股份有限公司 一种数据转发方法、装置、电子设备及计算机可读存储介质
WO2023076090A1 (en) * 2021-10-26 2023-05-04 Palo Alto Networks, Inc. Predictive dns cache to improve security and performance

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016535A (en) * 1995-10-11 2000-01-18 Citrix Systems, Inc. Method for dynamically and efficiently caching objects by subdividing cache memory blocks into equally-sized sub-blocks
US6347342B1 (en) * 1996-07-15 2002-02-12 Next Software, Inc. Method and apparatus for dynamically brokering object messages among object models
WO1999003047A1 (en) * 1997-07-11 1999-01-21 Earle Machardy Content hosting environment system and cache mechanism
WO2001090912A1 (en) * 2000-05-25 2001-11-29 Qmgn, Inc. Enhanced downloading from a computer network and profiling of a user of a computer network
IL153841A0 (en) * 2000-07-10 2003-07-31 Viven Ltd Broadcast content over cellular telephones
US20040128346A1 (en) * 2001-07-16 2004-07-01 Shmuel Melamed Bandwidth savings and qos improvement for www sites by catching static and dynamic content on a distributed network of caches
EP1343296B1 (en) * 2002-02-25 2011-05-04 Broadcom Corporation System, method and computer program product for selectively caching domain name system information on a network gateway
US8650266B2 (en) * 2002-03-26 2014-02-11 At&T Intellectual Property Ii, L.P. Cache validation using smart source selection in a data network
US7389330B2 (en) * 2002-09-11 2008-06-17 Hughes Network Systems, Llc System and method for pre-fetching content in a proxy architecture
WO2004028089A1 (ja) * 2002-09-20 2004-04-01 Matsushita Electric Industrial Co., Ltd. 複数のデータ通信ネットワークを接続する 中間ネットワーク要素におけるアクセス制御
US7359395B2 (en) * 2003-06-16 2008-04-15 Packeteer, Inc. Pre-fetch communication systems and methods
US7444371B2 (en) * 2004-03-11 2008-10-28 At&T Intellectual Property Ii, L.P. Method and apparatus for limiting reuse of domain name system response information
US7464124B2 (en) * 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060248285A1 (en) * 2005-04-29 2006-11-02 Petev Petio G Cache coherence protocol
US20060294223A1 (en) * 2005-06-24 2006-12-28 Microsoft Corporation Pre-fetching and DNS resolution of hyperlinked content

Cited By (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103155524B (zh) * 2010-08-05 2016-06-29 思杰系统有限公司 用于在多核系统中的多个核之间共享iip地址的系统和方法
CN103125108A (zh) * 2010-09-28 2013-05-29 高通股份有限公司 建立发射控制协议连接的系统和方法
CN103125108B (zh) * 2010-09-28 2015-10-07 高通股份有限公司 建立发射控制协议连接的系统和方法
CN102469167B (zh) * 2010-11-01 2015-07-01 中国移动通信集团北京有限公司 域名查询的实现方法和系统
CN102469167A (zh) * 2010-11-01 2012-05-23 中国移动通信集团北京有限公司 域名查询的实现方法和系统
CN102026290A (zh) * 2010-12-16 2011-04-20 华为终端有限公司 一种无线移动网关及该无线移动网关响应用户访问的方法
CN102026290B (zh) * 2010-12-16 2013-11-06 华为终端有限公司 一种无线移动网关及该无线移动网关响应用户访问的方法
CN103392321A (zh) * 2010-12-29 2013-11-13 思杰系统有限公司 用于基于策略集成横向部署的wan优化设备的系统和方法
CN102223510A (zh) * 2011-06-03 2011-10-19 杭州华三通信技术有限公司 缓存调度方法和装置
CN103765423A (zh) * 2011-08-03 2014-04-30 亚马逊技术有限公司 收集与本地存储的数据文件相关联的事务数据
CN103368867A (zh) * 2012-03-26 2013-10-23 国际商业机器公司 高速缓存经网络与辅助站点通信的对象的方法和系统
CN104737127A (zh) * 2012-08-16 2015-06-24 数据加速器有限公司 延迟虚拟化数据加速器
CN103631727A (zh) * 2012-08-27 2014-03-12 阿里巴巴集团控股有限公司 用于缓存服务器的缓存管理方法及缓存管理系统
CN103631727B (zh) * 2012-08-27 2017-03-01 阿里巴巴集团控股有限公司 用于缓存服务器的缓存管理方法及缓存管理系统
CN102902787A (zh) * 2012-09-29 2013-01-30 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN102902787B (zh) * 2012-09-29 2015-11-25 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN102855334A (zh) * 2012-09-29 2013-01-02 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN102855334B (zh) * 2012-09-29 2016-07-06 北京奇虎科技有限公司 一种浏览器及其获取dns解析数据的方法
CN103139609A (zh) * 2013-02-01 2013-06-05 深圳市深信服电子科技有限公司 对远程应用视频播放进行优化的方法和装置
CN103139609B (zh) * 2013-02-01 2016-07-06 深圳市深信服电子科技有限公司 对远程应用视频播放进行优化的方法和装置
CN103227827A (zh) * 2013-04-24 2013-07-31 北京小米科技有限责任公司 请求资源的方法和装置
CN103227827B (zh) * 2013-04-24 2016-02-24 小米科技有限责任公司 请求资源的方法和装置
CN104111829A (zh) * 2014-06-25 2014-10-22 小米科技有限责任公司 数据存储方法及装置
CN106161664A (zh) * 2015-04-15 2016-11-23 阿里巴巴集团控股有限公司 域名解析方法及装置、数据传输方法及装置
CN104852988A (zh) * 2015-05-29 2015-08-19 杭州华三通信技术有限公司 一种报文转发方法和装置
US11050840B2 (en) 2015-10-22 2021-06-29 Oracle International Corporation System and method for utilizing a distributed in-memory data grid to implement typed buffer caching services for a transactional processing environment
CN107615260A (zh) * 2015-10-22 2018-01-19 甲骨文国际公司 用于在事务处理环境中提供分布式高速缓存的系统和方法
CN107104892A (zh) * 2016-02-19 2017-08-29 深圳市福云明网络科技有限公司 网络加速的方法和装置
CN106130791A (zh) * 2016-08-12 2016-11-16 飞思达技术(北京)有限公司 基于服务质量的缓存设备服务能力遍历测试系统及方法
CN108259208A (zh) * 2016-12-29 2018-07-06 华为技术有限公司 一种检测报文染色位冲突的方法和设备
CN108259208B (zh) * 2016-12-29 2021-03-30 华为技术有限公司 一种检测报文染色位冲突的方法和设备
CN107069778B (zh) * 2017-01-21 2019-11-05 河北郎尊电力科技有限公司 配电网三相负荷自动调节装置及其控制方法
CN107069778A (zh) * 2017-01-21 2017-08-18 河北郎尊电力科技有限公司 配电网三相负荷自动调节装置及其控制方法
CN110443360A (zh) * 2017-06-16 2019-11-12 上海兆芯集成电路有限公司 用于操作处理器的方法
CN109308280A (zh) * 2017-07-26 2019-02-05 杭州华为数字技术有限公司 数据处理方法和相关设备
CN109508302A (zh) * 2017-09-14 2019-03-22 华为技术有限公司 一种内容填充方法和存储器
CN109508302B (zh) * 2017-09-14 2023-04-18 华为技术有限公司 一种内容填充方法和存储器
CN108196515A (zh) * 2017-12-21 2018-06-22 中国电子信息产业集团有限公司第六研究所 跨平台实时数据处理方法和装置
CN110858238A (zh) * 2018-08-08 2020-03-03 阿里巴巴集团控股有限公司 一种数据处理的方法和装置
CN110858238B (zh) * 2018-08-08 2023-08-22 阿里巴巴集团控股有限公司 一种数据处理的方法和装置
CN113439428A (zh) * 2018-12-26 2021-09-24 思杰系统有限公司 操作具有dns高速缓存的装置的系统和方法
CN109922083A (zh) * 2019-04-10 2019-06-21 武汉金盛方圆网络科技发展有限公司 一种网络协议流量控制系统
CN113204311A (zh) * 2020-01-31 2021-08-03 西部数据技术公司 NVMe SGL位存储桶传输
CN111859225A (zh) * 2020-07-31 2020-10-30 中国工商银行股份有限公司 程序文件的访问方法、装置、计算设备和介质
CN111859225B (zh) * 2020-07-31 2023-08-22 中国工商银行股份有限公司 程序文件的访问方法、装置、计算设备和介质
CN111831699B (zh) * 2020-09-21 2021-01-08 北京新唐思创教育科技有限公司 数据缓存方法、电子设备及计算机可读介质
CN111831699A (zh) * 2020-09-21 2020-10-27 北京新唐思创教育科技有限公司 数据缓存方法、电子设备及计算机可读介质
CN114124887A (zh) * 2021-11-29 2022-03-01 牙木科技股份有限公司 Dns服务器的视图查询方法、dns服务器及可读存储介质
CN114124887B (zh) * 2021-11-29 2023-09-05 牙木科技股份有限公司 Dns服务器的视图查询方法、dns服务器及可读存储介质

Also Published As

Publication number Publication date
CA2680316A1 (en) 2008-09-18
AU2008225151B2 (en) 2012-06-28
EP2122992B1 (en) 2017-07-26
CN101682621B (zh) 2014-07-09
IL200816A0 (en) 2010-05-17
WO2008112770A2 (en) 2008-09-18
AU2008225151A1 (en) 2008-09-18
EP2122992A2 (en) 2009-11-25
WO2008112770A3 (en) 2009-07-30

Similar Documents

Publication Publication Date Title
CN101682621B (zh) 用于高速缓存操作的系统和方法
US10911520B2 (en) Systems and methods of using the refresh button to determine freshness policy
US8364785B2 (en) Systems and methods for domain name resolution interception caching
US8037126B2 (en) Systems and methods of dynamically checking freshness of cached objects based on link status
US7584294B2 (en) Systems and methods for prefetching objects for caching using QOS
US7809818B2 (en) Systems and method of using HTTP head command for prefetching
US7783757B2 (en) Systems and methods of revalidating cached objects in parallel with request for object
US8103783B2 (en) Systems and methods of providing security and reliability to proxy caches
US8504775B2 (en) Systems and methods of prefreshening cached objects based on user's current web page
US8074028B2 (en) Systems and methods of providing a multi-tier cache
CN101711468B (zh) 用于在tcp拥塞控制中提供服务质量优先的系统和方法
CN101682565B (zh) 用于通过代理进行动态带宽控制的系统和方法
US20080228864A1 (en) Systems and methods for prefetching non-cacheable content for compression history
CN102405631B (zh) 用于中间设备压缩通过远程显示协议传递的数据的系统和方法
CN103516725A (zh) 用于使用压缩历史来改进网络性能的系统和方法
CN104486032A (zh) 用于提供基于代理的服务质量的系统和方法
CN103988483A (zh) 用于网络加速器的动态适应的系统和方法
CN103518358A (zh) 为单个流ICA提供QoS的系统和方法
AU2012227245A1 (en) Systems and methods for cache operations

Legal Events

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

Granted publication date: 20140709

CF01 Termination of patent right due to non-payment of annual fee