專利名稱:在網(wǎng)絡中對動態(tài)產(chǎn)生的對象執(zhí)行緩存的系統(tǒng)和方法
技術領域:
本發(fā)明總體上涉及在網(wǎng)絡中緩存數(shù)據(jù)。具體地,本發(fā)明涉及在網(wǎng)絡中對動態(tài)產(chǎn)生 的對象執(zhí)行緩存的設備、系統(tǒng)和方法。
背景技術:
網(wǎng)絡通信量的持續(xù)發(fā)展速度使得承載該通信量的基礎設施變得緊張。已經(jīng)提出了 允許網(wǎng)絡運營商處理該日益嚴重的問題的各種解決方案,其中包括緩存技術的開發(fā)。使用 常規(guī)緩存,可以重新使用靜態(tài)內(nèi)容并將該靜態(tài)內(nèi)容提供給多個客戶端而不會加重服務器基 礎設施的負荷。另外,緩沖存儲器允許靜態(tài)內(nèi)容更接近終端用戶來存儲,因此改進了響應時 間并同時減少服務器基礎設施的負荷。降低的響應時間和減少的服務器基礎設施的負荷減 少了該基礎設施的帶寬和處理需求。然而,經(jīng)過網(wǎng)絡傳送的日益增加的內(nèi)容量是動態(tài)產(chǎn)生的,其中包括由企業(yè)計算解 決方案和復雜因特網(wǎng)應用產(chǎn)生的較大百分比的網(wǎng)絡通信量。動態(tài)產(chǎn)生的內(nèi)容是當請求對象 時服務器產(chǎn)生的內(nèi)容,并通常是基于從客戶端接收的輸入。因此,它經(jīng)常改變通過時間和對 于產(chǎn)生系統(tǒng)進行的輸入。動態(tài)內(nèi)容的常規(guī)示例包括由客戶端進行的股票行情表請求或數(shù)據(jù) 庫搜索。在每個實例中,在接收到特定客戶請求后實時產(chǎn)生響應對象。對緩存動態(tài)產(chǎn)生的內(nèi)容的挑戰(zhàn)是多方面的。例如,緩存動態(tài)產(chǎn)生的內(nèi)容沒有通常 公認的標準或規(guī)范。因為對于指定是否緩存動態(tài)產(chǎn)生的對象沒有標準,所以該對象一般被 看作是不可緩存的。另一挑戰(zhàn)在于確定動態(tài)產(chǎn)生的對象的“新鮮”度的有效性,這是因為用 于產(chǎn)生該對象的潛在數(shù)據(jù)的改變是無規(guī)律并不可預測的。除了上述困難之外,對動態(tài)產(chǎn)生的內(nèi)容的請求一般也比對靜態(tài)內(nèi)容的請求更復 雜。動態(tài)請求經(jīng)常包含需要由目標應用處理或解析的信息字符串以識別將由緩存器使用的 可應用參數(shù)用于識別與該請求有關的合適對象。然而,這些參數(shù)很少由客戶端以邏輯或相 容的順序放在請求中。為了確定該請求識別大量動態(tài)產(chǎn)生的對象中的哪一個,每個該請求 必須被標準化(即,以非任意順序放置參數(shù))。而且,利用動態(tài)產(chǎn)生的內(nèi)容使一個請求與動態(tài)產(chǎn)生的對象匹配成為更復雜的任 務,這是因為由應用所執(zhí)行的特定處理需要被復制或另外通過有根據(jù)的推測來預料。該復制或推測對于確定由緩存器所存儲的對象是否適于提供給特定的即將到來的請求是很有 必要的。該復雜性是由于應用本身復雜性而引起,也是因為響應內(nèi)容可以是請求內(nèi)容以及 諸如用戶身份(該用戶身份在請求中可能出現(xiàn)或可能不出現(xiàn))、時間、用戶數(shù)據(jù)庫的當前狀 態(tài)之類的特定其他外部變量,和無數(shù)其它因素的函數(shù)??傮w上,緩存最初圍繞緩存靜態(tài)對象而開發(fā)。當因特網(wǎng)和應用變得越來越取決于 傳送動態(tài)產(chǎn)生的內(nèi)容時,需要一種解決方案,該解決方案將緩存的優(yōu)勢擴展到動態(tài)內(nèi)容,并 且解決了這樣的內(nèi)容對于常規(guī)緩存技術所提出的各種挑戰(zhàn)。
發(fā)明內(nèi)容
本發(fā)明的解決方案提高了緩沖存儲器存儲和提供動態(tài)產(chǎn)生的數(shù)據(jù)的能力。本發(fā)明 也使緩存器能夠有效處理各種不同的應用請求類型,因此增加應用性能并消除了用于保持 從緩存器提供的數(shù)據(jù)的新鮮度的管理復雜性。本發(fā)明除了結合以不復制最初產(chǎn)生對象的應 用服務器所執(zhí)行的處理的方式理解和處理數(shù)據(jù)的能力之外,通過使用試探法提供了緩存動 態(tài)內(nèi)容的有效方法以有效地預測該應用服務器的性能。本發(fā)明的這些技術又增加了動態(tài)緩 存的使用,并因此有助于改進網(wǎng)絡和潛在的應用基礎設施的性能。在一個實施例中,本發(fā)明涉及一種在緩存器中緩存和維持動態(tài)產(chǎn)生的對象的方法 和系統(tǒng)。本發(fā)明的技術包括在緩存器接收無效命令以無效對象,諸如之前從始發(fā)服務器 (originating server)提供并存儲在緩存器中的動態(tài)產(chǎn)生的對象。從始發(fā)服務器中所述 動態(tài)產(chǎn)生的對象沒有被識別為可緩存的。緩存器接收的無效命令識別緩存的動態(tài)產(chǎn)生的對 象。響應無效命令,緩存器將緩存的動態(tài)產(chǎn)生對象標記為無效,并從緩存器刷新該對象。在另一實施例中,本發(fā)明也提供了用于使用對象決定因素(object determinant) 識別緩存的動態(tài)產(chǎn)生對象的技術。緩存器可以截取客戶端和服務器之間的通信,并解析通 信以識別對象決定因素。對象決定因素能識別之前提供并存儲在緩存器中的對象。緩存器 根據(jù)對象決定因素確定在始發(fā)服務器由對象決定因素所識別的對象中變化是否已發(fā)生或 將發(fā)生。如果變化已發(fā)生或?qū)l(fā)生,緩存器將由對象決定因素所識別的對象在緩存器中標 記為無效。一旦將對象標記為無效,緩存器刷新無效對象并從始發(fā)服務器檢索對象。本發(fā)明的另一些實施例應用上述方法至動態(tài)產(chǎn)生的對象組。例如,先前提供的動 態(tài)產(chǎn)生的對象組是在緩存器中形成的。對象組與至少一個對象決定因素有關。組的記錄被 保持在緩存器中并與對象決定因素有關。如果由緩沖器截取的通信所識別的對象決定因素 表明在始發(fā)服務器上組的一個或多個對象中變化已發(fā)生或?qū)l(fā)生,則將之前提供的對象的 組標記為無效。一方面,本發(fā)明涉及一種對動態(tài)產(chǎn)生的對象進行緩存的方法,該動態(tài)產(chǎn)生的對象 沒有被識別為可緩存。該方法包括在緩存器中存儲動態(tài)產(chǎn)生的對象,該動態(tài)產(chǎn)生的對象沒 有被識別為可緩存,從始發(fā)服務器提供所述動態(tài)產(chǎn)生的對象;由所述緩存器接收一個請求 以無效所述緩存的動態(tài)產(chǎn)生的對象。響應所述請求,所述緩存器將所述緩存的動態(tài)產(chǎn)生的 對象標記為無效??梢栽谑及l(fā)服務器和客戶端之間進行通信的任何設備(例如,裝置、網(wǎng)絡 設備或計算設備)上操作該緩存器。在某些實施例中,本發(fā)明的方法包括由所述始發(fā)服務器請求無效所述緩存的動態(tài) 產(chǎn)生的對象。在其他實施例中,響應所述始發(fā)服務器中動態(tài)產(chǎn)生對象的改變,所述始發(fā)服務器自動請求無效所述緩存的動態(tài)產(chǎn)生的對象。在另一實施例中,客戶端與始發(fā)服務器進行 通信以接收動態(tài)產(chǎn)生的對象,并且客戶端請求無效所述緩存的動態(tài)產(chǎn)生的對象。在又另一 實施例中,外部管理控制器請求無效所述緩存的動態(tài)產(chǎn)生的對象。在一個實施例中,本發(fā)明的方法包括從所述緩存器刷新被標記為無效的所述緩存 的動態(tài)產(chǎn)生的對象。在另一實施例中,在所述緩存動態(tài)產(chǎn)生對象的例如十毫秒或更少時間 的很短時間內(nèi)緩存器接收無效請求。在一些實施例,響應于很短的期限(expiry)屆滿,例 如緩存對象的10毫秒或更少的期限,所述緩存器無效緩存的動態(tài)產(chǎn)生的對象。另一方面,本發(fā)明涉及一種對動態(tài)產(chǎn)生的對象組進行緩存的方法。在一些實施例 中,該對象組具有沒有被識別為可緩存的至少一個對象。該方法包括在緩存器中識別從始 發(fā)服務器之前提供的動態(tài)產(chǎn)生的對象組。所述緩存器將所述組和對象決定因素相關聯(lián)。本 發(fā)明還包括由所述緩存器截取一個通信,所述通信識別組的對象決定因素以及表示在始發(fā) 服務器上對所述組的對象之一的變化將要發(fā)生或已經(jīng)發(fā)生。在一個實施例中,本發(fā)明的方 法包括響應于截取所述通信或識別對象決定因素,由所述緩存器將所述動態(tài)產(chǎn)生的對象組 標記為無效。而且,在本發(fā)明的某些實施例中,緩存器從所述緩存器刷新被標記為無效的對象 組。在其他實施例中,所述動態(tài)產(chǎn)生的對象組是預先指定的。在其他實施例中,本發(fā)明自動 識別所述動態(tài)產(chǎn)生的對象組并根據(jù)一個規(guī)則使所述對象決定因素和所述組相關聯(lián)。一方面,本發(fā)明涉及用于維持動態(tài)產(chǎn)生的對象的緩存器的另一種方法。本發(fā)明的 方法包括由緩存器截取客戶端和始發(fā)服務器之間的通信,例如客戶端向始發(fā)服務器請求動 態(tài)產(chǎn)生的對象。動態(tài)產(chǎn)生的對象之前已由始發(fā)服務器提供并存儲在緩存器中。該方法在表 示所述始發(fā)服務器上動態(tài)產(chǎn)生對象的變化已發(fā)生或?qū)l(fā)生的通信中由緩存器識別對象決 定因素,并由所述緩存器將所述緩存的動態(tài)產(chǎn)生的對象標記為無效。然后,該方法從始發(fā)服 務器獲得所請求的動態(tài)產(chǎn)生的對象。在本發(fā)明的一個實施例中,緩存器刷新無效的動態(tài)產(chǎn)生的對象。在另一實施例中, 緩存器使動態(tài)產(chǎn)生的對象和從始發(fā)服務器之前提供的動態(tài)產(chǎn)生的對象組相關聯(lián),將該組和 對象決定因素相關聯(lián),并響應請求將所述動態(tài)產(chǎn)生的對象組標記為無效。在某些實施例中, 所述動態(tài)產(chǎn)生的對象沒有被識別為可緩存的。在其他實施例中,緩存器刷新被標記為無效 的所述動態(tài)產(chǎn)生的對象組。動態(tài)產(chǎn)生的對象組可以是預指定的或另外根據(jù)一個規(guī)則通過對 象決定因素而被自動識別的。在本方法的某些實施例中,客戶端在通信中嵌入對象決定因素作為預定字符串。 在其他實施例中,緩存器根據(jù)與動態(tài)產(chǎn)生對象相關的預定啟發(fā)式規(guī)則識別對象決定因素。 在一個實施例中,緩存器從通信的如下元素之一中選擇對象決定因素1)USERID,2)IP地 址,3) TCP端口,4) HTTP報頭,5)自定義HTTP報頭,6)客戶URL, 7) cookie報頭,8) URL查 詢字符串和9)P0ST主體。緩存器也根據(jù)用戶配置的無效策略從通信中提取對象決定因素。在另一實施例中,本發(fā)明的方法包括維持緩存器中的一個表以使對象決定因素和 緩存器中存儲的一個或多個對象或?qū)ο蠼M相關聯(lián)。在某些實施例中,本方法包括由智能 統(tǒng)計引擎檢查來自客戶端的通信以識別動態(tài)產(chǎn)生的對象集以與緩存器中的組相關聯(lián)。緩 存器可以將存儲在緩存器中的對象與內(nèi)容組相關聯(lián)。該內(nèi)容組由具有作為索引的具體數(shù) (incarnation number)的散列表來表示。在其他實施例中,緩存器對通過請求所識別的動態(tài)產(chǎn)生的對象執(zhí)行散列算法以確定動態(tài)產(chǎn)生對象的變化。在某些方面,本發(fā)明涉及一種對動態(tài)產(chǎn)生的對象進行緩存的系統(tǒng),該動態(tài)產(chǎn)生的 對象沒有被識別為可緩存,該系統(tǒng)包括用于在緩存器中存儲動態(tài)產(chǎn)生的對象的裝置,該動 態(tài)產(chǎn)生的對象沒有被識別為可緩存,從始發(fā)服務器提供所述動態(tài)產(chǎn)生的對象;以及用于由 所述緩存器接收一個請求以無效所述緩存的動態(tài)產(chǎn)生的對象的裝置。該系統(tǒng)也包括用于響 應所述請求,由所述緩存器將所述緩存的動態(tài)產(chǎn)生的對象標記為無效的裝置。在其他方面,本發(fā)明涉及一種對諸如動態(tài)產(chǎn)生對象之類的對象組進行緩存的系 統(tǒng)。在某些實施例中,該動態(tài)產(chǎn)生的對象具有沒有被識別為可緩存的至少一個對象。該系 統(tǒng)包括用于在緩存器中識別從始發(fā)服務器之前提供的動態(tài)產(chǎn)生的對象組的裝置,所述動態(tài) 產(chǎn)生的對象中的至少一個沒有被識別為可緩存;以及用于由緩存器將組和對象決定因素相 關聯(lián)的裝置。該系統(tǒng)也包括用于由所述緩存器截取一個通信的裝置,所述通信識別組的對 象決定因素以及表示在始發(fā)服務器上對所述組的對象之一的變化將要發(fā)生或已經(jīng)發(fā)生。一方面,本發(fā)明涉及一種用于維持動態(tài)產(chǎn)生的對象的緩存器的系統(tǒng)。該系統(tǒng)包括 用于由緩存器截取客戶端和始發(fā)服務器之間的通信的裝置。該系統(tǒng)也包括用于在表示所述 始發(fā)服務器上動態(tài)產(chǎn)生對象的變化已發(fā)生或?qū)l(fā)生的通信中由緩存器識別對象決定因素 的裝置;以及用于由緩存器將緩存的動態(tài)產(chǎn)生對象標記為無效的裝置。在某些實施例中,系 統(tǒng)也包括用于從始發(fā)服務器獲得動態(tài)產(chǎn)生的對象的裝置。另一方面,本發(fā)明涉及一種用于提供緩存器中存儲的動態(tài)產(chǎn)生對象的顆粒度無效 的方法和系統(tǒng)。本發(fā)明的技術結合了將緩存器所存儲的對象的屆滿(expiration)時間配 置為微小的顆粒度時間間隔的能力,諸如由分組處理引擎的分組處理計時器提供的時間間 隔的顆粒度(granularity)。因此,本發(fā)明可以緩存期限時間小到非常小時間間隔的對象。 該特性被稱為“無效顆粒度”(invalidation granularity)。通過在期限時間中提供該微 小的顆粒度,本發(fā)明的緩存器可以緩存并提供頻繁變化的對象,經(jīng)常甚至是一秒內(nèi)改變數(shù) 次的對象。一種技術是調(diào)節(jié)(leverage)本發(fā)明的設備所用的分組處理計時器,這樣能夠以 毫秒級的時間增量操作以允許無效或期限顆粒度低至10ms。當本發(fā)明的集成緩存器響應分 組處理引擎的分組處理計時器而執(zhí)行緩存操作時,對象的無效可以在以毫秒級的時間段內(nèi) 發(fā)生,并具有以分組處理計時器所提供的時間間隔級別的期限(諸如IOms)的對象?!矫妫景l(fā)明涉及一種響應分組處理計時器的信號而無效緩存器中緩存的動態(tài) 產(chǎn)生對象的方法。該方法可以在設備的分組處理引擎中執(zhí)行,其中分組處理引擎處理具有 至少一個動態(tài)產(chǎn)生對象的網(wǎng)絡分組并在緩存器中存儲動態(tài)產(chǎn)生的對象。該方法包括從分組 處理計時器接收第一信號以處理網(wǎng)絡分組;響應于所述信號處理網(wǎng)絡分組;以及向緩存器 傳送第二信號,所述第二信號表示所緩存的動態(tài)產(chǎn)生對象是無效的。在一個實施例中,第二 信號提供無效命令以無效緩存的動態(tài)產(chǎn)生對象。在另一實施例中,第二信號提供緩存的動 態(tài)產(chǎn)生對象的期限屆滿。在某些實施例中,在處理網(wǎng)絡分組期間傳送第二信號,而在其他實施例中,一旦完 成網(wǎng)絡分組的處理就傳送第二信號。在本發(fā)明的一個實施例中,分組處理計時器以一或多 微秒的時間增量操作。分組處理計時器以一個時間增量操作以在10毫秒或更短的期限時 間無效緩存器中所存儲的對象。該方法包括由緩存器將緩存的動態(tài)產(chǎn)生對象標記為無效。 在一個實施例中,該方法包括從始發(fā)服務器傳送包括動態(tài)產(chǎn)生對象的網(wǎng)絡分組。
具有分組處理引擎的設備包括任何如下設備1)電橋、2)路由器、3)轉換器,以及 4)SSL VPN設備。在某些實施例中,緩存器、分組處理引擎或分組處理計時器在設備的內(nèi)核 空間內(nèi)操作。在某些實施例中,該方法包括通過分組處理計時器為緩存的動態(tài)產(chǎn)生對象的 期限提供時間間隔為等于或小于一個持續(xù)時間的時間以從始發(fā)服務器動態(tài)產(chǎn)生并提供動 態(tài)產(chǎn)生的對象。當該動態(tài)產(chǎn)生的對象從始發(fā)服務器提供時,該動態(tài)產(chǎn)生的對象被識別為不 可緩存的。另一方面,本發(fā)明涉及一種響應分組處理計時器的信號而無效緩存的動態(tài)產(chǎn)生對 象的設備。該設備處理具有至少一個動態(tài)產(chǎn)生對象的網(wǎng)絡分組并在緩存器中存儲該動態(tài)產(chǎn) 生的對象。該設備包括產(chǎn)生第一信號的分組處理計時器,以及與分組處理計時器進行通信 的分組處理引擎。分組處理引擎響應接收到分組處理計時器的第一信號而處理網(wǎng)絡分組。 該設備也包括與分組處理引擎進行通信并具有在存儲元件中緩存的動態(tài)產(chǎn)生對象的緩存 器。該緩存器從分組處理引擎接收第二信號,該第二信號表示緩存的動態(tài)產(chǎn)生對象是無效 的。在一個實施例中,第二信號包括無效命令以無效緩存的動態(tài)產(chǎn)生對象。在另一實施例 中,第二信號包括緩存的動態(tài)產(chǎn)生對象的期限屆滿。在本發(fā)明的設備的一個實施例中,在由分組處理引擎處理網(wǎng)絡分組期間分組處理 引擎向緩存器傳送第二信號。在另一實施例中,一旦完成網(wǎng)絡分組的處理,分組處理引擎就 向緩存器傳送第二信號。在某些實施例中,分組處理計時器以一或多個毫秒的時間間隔操 作。在一個實施例中,分組處理計時器以一個時間間隔操作以向緩存器觸發(fā)第二信號用于 在10毫秒或更少的第一時間間隔無效緩存的對象。本發(fā)明的設備包括如下設備之一 1)電橋、2)路由器、3)轉換器,以及4) SSL VPN 設備。緩存器、分組處理引擎或分組處理計時器可以在設備的內(nèi)核空間內(nèi)操作。在某些實 施例中,分組處理計時器為緩存的動態(tài)產(chǎn)生對象的期限提供時間間隔小于或等于一個持續(xù) 時間以從始發(fā)服務器動態(tài)產(chǎn)生并提供動態(tài)產(chǎn)生的對象。從始發(fā)服務器中,該動態(tài)產(chǎn)生的對 象沒有被識別為可緩存的。始發(fā)服務器可以傳送具有動態(tài)產(chǎn)生的對象的網(wǎng)絡分組。另一方面,本發(fā)明涉及一種提供稱為閃速緩存的技術的方法和系統(tǒng),用于響應來 自多個客戶端對于諸如動態(tài)產(chǎn)生對象之類的對象的請求。本發(fā)明的該技術使用緩沖器中存 儲的動態(tài)產(chǎn)生對象以向客戶端傳送,例如響應來自客戶端的請求,也響應來自其他客戶端 對動態(tài)產(chǎn)生對象的另外請求并將對象保存在緩存器中。使用該技術,本發(fā)明能夠增加對于 極快改變對象的緩存命中率,諸如不能被另外緩存的動態(tài)產(chǎn)生的對象。一方面,本發(fā)明涉及一種用于響應來自多個客戶端對于動態(tài)產(chǎn)生對象的請求的方 法。該方法包括由設備從始發(fā)服務器接收第一客戶端對于動態(tài)產(chǎn)生對象的第一請求的響 應。該響應包括動態(tài)產(chǎn)生的對象。該方法也包括由設備請求分組處理引擎以傳送響應到第 一客戶端。該響應保持在緩沖器中同時等待傳送。該方法進一步包括在完成將所述響應傳 送到第一客戶端之前,由設備從第二客戶端接收對于動態(tài)產(chǎn)生對象的第二請求,以及由設 備請求分組處理引擎以將緩沖器中保持的對于第一客戶端的響應的動態(tài)產(chǎn)生對象傳送到 第二客戶端。在一個實施例中,本發(fā)明的方法包括由分組處理引擎將響應傳送到第一客戶端。 在另一實施例中,該方法包括響應第二請求,由分組處理引擎將動態(tài)產(chǎn)生的對象傳送到第 二客戶端。在某些實施例中,該方法包括在將響應傳送到第一客戶端或第二客戶端之一后,由分組處理引擎從緩沖器中移除響應。在某些實施例中,本發(fā)明所用的緩沖器包括TCP/IP 緩沖器或所述設備的TCP/IP堆棧的一部分。該設備包括單個TCP/IP堆棧用于向第一客戶 端和第二客戶端傳送,并且緩沖器與單個TCP/IP堆棧相關聯(lián)。在本發(fā)明的某些實施例中,該方法包括由設備從多個客戶端接收對于動態(tài)產(chǎn)生對 象的多個請求,以及由設備請求以將緩沖器中保持的對于第一客戶端的響應的動態(tài)產(chǎn)生對 象傳送到多個客戶端。在一個實施例中,分組處理引擎根據(jù)與第一客戶端到網(wǎng)絡的連接相 關的一個或多個特性而保持對第一客戶端的響應。在另一實施例中,設備排隊第二請求,而 不是將第二請求傳送到始發(fā)服務器。在一個實施例中,該設備使用緩沖器中保持的第一請 求的響應而響應第二請求。在某些實施例中,本發(fā)明的方法在向第一客戶端和第二客戶端傳送動態(tài)產(chǎn)生的對 象之后從緩沖器移除動態(tài)產(chǎn)生的對象。在一個實施例中,例如當從始發(fā)服務器提供該動態(tài) 產(chǎn)生的對象時,該動態(tài)產(chǎn)生的對象被識別為不可緩存的。在該方法的其他實施例中,所述設 備通過與第二請求相關的對象決定因素確定第二請求是用于第一請求的動態(tài)產(chǎn)生的對象。在某些實施例中,設備可以是在第一客戶端和始發(fā)服務器之間進行通信的裝置、 網(wǎng)絡設備或計算設備之一。在其他實施例中,設備包括與分組處理引擎進行通信的緩存器。 在一個實施例中,該方法包括由緩存器請求分組處理引擎以向第二客戶端傳送對第一客戶 端的響應或第一客戶端的動態(tài)產(chǎn)生對象。另一方面,本發(fā)明涉及一種用于對請求進行響應的系統(tǒng),所述請求是來自多個客 戶端針對動態(tài)產(chǎn)生的對象。該系統(tǒng)包括一個設備,用于從始發(fā)服務器接收第一客戶端對于 動態(tài)產(chǎn)生對象的第一請求的響應,該響應包括動態(tài)產(chǎn)生的對象。該設備包括用于保持等待 從該設備傳送的一個或多個網(wǎng)絡分組的緩存器。該設備還包括從所述設備接收請求以向 第一客戶端傳送響應的分組處理引擎,緩沖器保持包括響應的一個或多個網(wǎng)絡分組。在完 成將響應傳送到第一客戶端之前,所述設備從第二客戶端接收對于動態(tài)產(chǎn)生對象的第二請 求,并請求分組處理引擎以將緩沖器中保持的響應的動態(tài)產(chǎn)生對象傳送到第二客戶端。在本發(fā)明系統(tǒng)的一個實施例中,分組處理引擎將響應從緩沖器傳送到第一客戶 端。在另一實施例中,其中響應第二請求,分組處理引擎將動態(tài)產(chǎn)生的對象從緩沖器傳送到 第二客戶端。在本系統(tǒng)的某些實施例中,在將響應傳送到第一客戶端或第二客戶端之一后, 分組處理引擎從緩沖器中移除響應。另外,在其他實施例中,緩沖器是TCP/IP緩沖器或另 外是設備的TCP/IP堆棧的一部分。在某些實施例中,設備包括單個TCP/IP堆棧用于向第 一客戶端和第二客戶端傳送,緩沖器與單個TCP/IP堆棧相關聯(lián)。在本發(fā)明的另一實施例中,所述設備從多個客戶端接收對于動態(tài)產(chǎn)生對象的多個 請求,以及其中設備請求分組處理引擎以將緩沖器中保持的對于第一客戶端的響應的動態(tài) 產(chǎn)生對象傳送到多個客戶端。在一個實施例中,分組處理引擎根據(jù)與第一客戶端到網(wǎng)絡的 連接相關的一個或多個特性而保持對第一客戶端的響應。在另一實施例中,設備排隊第二 請求,而不是將第二請求傳送到始發(fā)服務器。在某些實施例中,設備排隊第二請求并使用緩 沖器中保持的對于第一客戶端的響應來響應第二請求。在其他實施例中,在向第一客戶端 和第二客戶端傳送動態(tài)產(chǎn)生的對象之后分組處理引擎從緩沖器移除動態(tài)產(chǎn)生的對象。在一 個實施例中,動態(tài)產(chǎn)生的對象例如通過始發(fā)服務器被識別為不可緩存的。在本發(fā)明的另一實施例中,所述設備通過與第二請求相關的對象決定因素確定第二請求是用于第一請求的動態(tài)產(chǎn)生的對象。在某些實施例中,所述設備是在第一客戶端和 始發(fā)服務器之間進行通信的裝置、網(wǎng)絡設備或計算設備。所述設備也具有與分組處理引擎 進行通信的緩存器。另外,緩存器請求分組處理引擎以向第二客戶端傳送對第一客戶端的 響應或第一客戶端的動態(tài)產(chǎn)生對象。另一方面,本發(fā)明涉及一種處理如下情況的“閃速群”技術,其中在該情況中在服 務器正處理并返回對第一請求者的響應對象期間緩存器接收對于相同對象的另外請求,例 如幾乎同時的請求。一旦由緩沖器響應所有該幾乎同時的請求,則從緩沖器刷新對象,而不 需要另外期限時間或無效操作。本發(fā)明的該技術能在極短的時間量內(nèi)緩存和提供對于對象 的數(shù)據(jù),所述對象另外被認為是不可緩存的。該方法在向大量并發(fā)用戶提供快速變化的數(shù) 據(jù)的應用中產(chǎn)生巨大的改進,所述應用諸如實時股票報價或快速變化的新聞報道?!矫妫景l(fā)明涉及一種在網(wǎng)絡設備中用于對請求進行響應的方法,所述請求是 來自多個客戶端針對動態(tài)產(chǎn)生的對象教導一種響應來自多個客戶端對于動態(tài)產(chǎn)生對象的 請求的方法。該方法包括從第一客戶端接收對于來自始發(fā)服務器的動態(tài)產(chǎn)生對象的第一請 求;以及向始發(fā)服務器傳送第一請求。在響應第一客戶端的第一請求之前,該方法包括從第 二客戶端接收對于動態(tài)產(chǎn)生的對象的第二請求。該方法進一步包括從始發(fā)服務器接收對于 第一請求的響應,該響應具有動態(tài)產(chǎn)生的對象,并響應第一請求向第一客戶端傳送動態(tài)產(chǎn) 生的對象,以及響應第二請求向第二客戶端傳送動態(tài)產(chǎn)生的對象。在本發(fā)明的一個實施例中,該方法包括從多個客戶端接收對于動態(tài)產(chǎn)生的對象的 多個請求,以及響應每個客戶端的請求,向多個客戶端傳送動態(tài)產(chǎn)生的對象。在某些實施例 中,該方法包括在完成將動態(tài)產(chǎn)生的對象傳送到第二客戶端之前,從第三客戶端接收對于 動態(tài)產(chǎn)生對象的第三請求,以及響應第三請求,向第三客戶端傳送動態(tài)產(chǎn)生的對象。在另一實施例中,本發(fā)明的方法幾乎同時接收第一請求和第二請求。在一個實施 例中,該方法排隊第二請求而不是將第二請求傳送到始發(fā)服務器。在某些實施例中,該方法 在向第一客戶端和第二客戶端傳送動態(tài)產(chǎn)生的對象之后,從緩存器中刷新該動態(tài)產(chǎn)生的對 象。在一個實施例中,例如當從始發(fā)服務器提供該動態(tài)產(chǎn)生的對象時,該動態(tài)產(chǎn)生的對象被 識別為不可緩存的。該方法包括通過與第二請求相關的對象決定因素確定第二請求是用于 第一請求的動態(tài)產(chǎn)生的對象。在另一實施例中,該方法修改響應以包括實體標簽報頭或緩 存控制報頭并將修改的響應傳送到第一客戶端或第二客戶端。另一方面,本發(fā)明涉及一種用于對請求進行響應的網(wǎng)絡設備,所述請求是來自多 個客戶端針對動態(tài)產(chǎn)生的對象。該網(wǎng)絡設備包括用于從第一客戶端接收對于來自始發(fā)服務 器的動態(tài)產(chǎn)生對象的第一請求的裝置;用于向始發(fā)服務器傳送第一請求的裝置。該網(wǎng)絡設 備還包括一個裝置,用于在響應第一客戶端的第一請求之前,從第二客戶端接收對于動態(tài) 產(chǎn)生對象的第二請求;以及用于從始發(fā)服務器接收對于第一請求的響應,該響應包括動態(tài) 產(chǎn)生的對象。該系統(tǒng)還包括用于響應第一請求向第一客戶端傳送動態(tài)產(chǎn)生的對象,并響應 第二請求向第二客戶端傳送動態(tài)產(chǎn)生的對象的裝置。。在本發(fā)明的一個實施例中,該網(wǎng)絡設備進一步包括用于從多個客戶端接收對于動 態(tài)產(chǎn)生對象的多個請求,以及響應每個客戶端的請求,向多個客戶端傳送動態(tài)產(chǎn)生對象的 裝置。在另一實施例中,該網(wǎng)絡設備包括用于在完成將動態(tài)產(chǎn)生的對象傳送到第二客戶端 之前,從第三客戶端接收對于動態(tài)產(chǎn)生對象的第三請求,以及用于響應第三請求,向第三客戶端傳送動態(tài)產(chǎn)生的對象的裝置。在其他實施例中,該網(wǎng)絡設備具有幾乎同時接收第一請 求和第二請求的裝置。在某些實施例中,例如該網(wǎng)絡設備排隊第二請求,而不是將第二請求 傳送到服務器。在一個實施例中,本發(fā)明的網(wǎng)絡設備在向第一客戶端和第二客戶端傳送動態(tài)產(chǎn)生 的對象之后,從緩存器中刷新該動態(tài)產(chǎn)生的對象。在某些實施例中,該動態(tài)產(chǎn)生的對象被識 別為不可緩存的。在其他實施例中,該網(wǎng)絡設備包括用于通過與第二請求相關的對象決定 因素確定第二請求是用于第一請求的動態(tài)產(chǎn)生的對象的裝置。在另一實施例中,該網(wǎng)絡設 備包括用于修改響應以包括實體標簽報頭或緩存控制報頭之一并將修改的響應傳送到第 一客戶端或第二客戶端之一的裝置。該網(wǎng)絡設備可以是在客戶端和始發(fā)服務器之間進行通 信的裝置或計算設備。另一方面,本發(fā)明涉及一種由緩存器修改來自服務器的響應以將響應中到客戶端 的動態(tài)產(chǎn)生對象識別為可緩存的方法和系統(tǒng),該服務器沒有將動態(tài)產(chǎn)生的對象識別為可緩 存的。在某些實施例中,諸如處理對對象的HTTP請求和響應的實施例,本發(fā)明的技術在響 應中插入實體標簽或“etag”以對對象提供緩存控制,假定沒有來自始發(fā)服務器的實體標簽 和/或緩存控制信息。本發(fā)明的該技術通過在向客戶端的響應中插入諸如對象的實體標簽 和緩存控制信息之類的信息以響應于客戶端使緩存器能夠檢查在隨后請求中的命中而增 加緩存器命中率。一方面,本發(fā)明涉及一種使用實體標簽來緩存沒被標識為可緩存的動態(tài)產(chǎn)生對象 的方法,該方法包括由緩存器接收客戶端對于來自始發(fā)服務器的動態(tài)產(chǎn)生對象的請求的響 應。該動態(tài)產(chǎn)生對象被識別為不可緩存的。該方法包括由緩存器對于緩存器中保存的動態(tài) 產(chǎn)生對象產(chǎn)生實體標簽并修改響應以包括產(chǎn)生的實體標簽。該方法進一步包括由緩存器向 客戶端傳送識別動態(tài)產(chǎn)生對象為可緩存的經(jīng)過修改的響應。在本發(fā)明的方法的一個實施例中,從始發(fā)服務器接收的響應不包括實體標簽。在 某些實施例中,緩存器修改響應以識別客戶端緩存動態(tài)產(chǎn)生對象的持續(xù)期間。在其他實施 例中,緩存器修改響應以向客戶端指出存儲響應并在檢查動態(tài)產(chǎn)生對象是否改變之后向緩 存器或始發(fā)服務器之一提供響應。在一個實施例中,來自始發(fā)服務器的響應不具有動態(tài)產(chǎn) 生對象的緩存控制信息,并且緩存器修改傳送到客戶端的響應以包括緩存控制信息。在某些實施例中,本發(fā)明的方法也包括由緩存器為實體標簽產(chǎn)生數(shù)字。緩存器可 以將所產(chǎn)生的實體標簽和動態(tài)產(chǎn)生的對象一起存儲。在另一實施例中,緩存器可以將緩存 控制信息和動態(tài)產(chǎn)生的對象一起存儲。在一個實施例中,緩存器提供具有所產(chǎn)生的實體標 簽和緩存控制信息的緩存的動態(tài)產(chǎn)生對象。在本發(fā)明的某些實施例中,緩存器在裝置、網(wǎng)絡設備或計算設備上操作。在其他實 施例中,請求或響應包括超文本標記語言(HTML)。在另一實施例中,緩存器修改響應以包 括識別所產(chǎn)生的實體的etag報頭,而在另一實施例中,緩存器修改響應以包括緩存控制報 頭。在某些實施例中,該方法包括由緩存器從客戶端接收具有If-None-Match報頭的第二 請求,并響應第二請求,將與If-None-Match報頭相關的etag值與在緩存器中和動態(tài)產(chǎn)生 對象一起保存的實體標簽相比較。在另一實施例中,如果etag值匹配實體標簽,則緩存器 向客戶端傳送對于第二請求來說沒有修改的響應;而在另一實施例中,如果etag值不匹配 實體標簽,則緩存器向客戶端傳送具有第二實體標簽的更新的動態(tài)產(chǎn)生對象。
在下文的附圖和說明中闡述了本發(fā)明的各個實施例的細節(jié)。
這里包含的并且形成說明書的一部分的相應附解了本發(fā)明,并且與說明書一 起,進一步用來解釋本發(fā)明的原理并且能使相關領域的技術人員實現(xiàn)并且使用本發(fā)明。圖1是示出了其中可以實施本發(fā)明的實施例的示例網(wǎng)絡環(huán)境的框圖; 圖2是示出根據(jù)本發(fā)明實施例執(zhí)行集成緩存的裝置的示例結構的框圖3A是用于使設備操作與分組處理和分組處理計時器相集成的本發(fā)明方法實施例中 采取的步驟的流程圖3B是用于根據(jù)圖3A實施無效顆粒度技術的本發(fā)明的方法實施例中采用的步驟的流 程圖4A是在使用無效命令以無效陳舊對象(stale object)的本發(fā)明的方法實施例中采 用的步驟的流程圖4B是在包括無效對象組的本發(fā)明的方法實施例中采用的步驟的流程圖; 圖4C是在其中為了對象決定因素解析客戶端請求的本發(fā)明的方法實施例中采用的步 驟的流程圖4D是在包括使用對象決定因素而無效對象組的本發(fā)明的方法實施例中采用的步驟 的流程圖5是在提供閃速緩存技術的本發(fā)明的方法實施例中采用的步驟的流程圖; 圖6是在提供閃速群控制技術的本發(fā)明的方法實施例中采用的步驟的流程圖; 圖7A和7B是在為對象提供實體標簽和緩存控制的本發(fā)明的方法實施例中采用的步驟 的流程圖8A和8B是用于實施本發(fā)明的示例性實施例的計算設備的實施例的框圖。從下文結合附圖所陳述的詳細描述中本發(fā)明的特征和優(yōu)勢將變得更加明顯,其中 等同的參考特征表示對應的元件。在附圖中,相似的附圖標記一般表示等同的、功能類似的 和/或結構類似的元件。
具體實施例方式A.示例網(wǎng)絡環(huán)境
圖1示出了其中可以實施本發(fā)明的實施例的示例網(wǎng)絡環(huán)境100。如圖1所示,示例網(wǎng)絡 環(huán)境100包括多個客戶端10加-10211,多個服務器106a-106n,以及也被稱為緩存裝置、設備 或緩存器的裝置104。服務器106a-106n創(chuàng)始并管理諸如對象數(shù)據(jù)庫或關系數(shù)據(jù)庫之類的 數(shù)據(jù)庫,該數(shù)據(jù)庫向客戶端102a-102n提供請求內(nèi)容。為此,服務器106a-106n在此經(jīng)常被 稱為“始發(fā)服務器”,這是因為它們通常,但不必然,始發(fā)形成請求內(nèi)容的對象。每個客戶端 102a-102n和服務器106a-106n可以是任何類型和形式的計算設備,諸如下文結合圖8A和 8B更詳細描述的計算設備800。例如,任何客戶端102a-102n可以是移動計算設備,諸如電 信設備,例如蜂窩電話或個人數(shù)字助理,或除了任何類型的桌上型計算機之外的膝上型計 算機或筆記本式計算機。每個客戶端102a-102n經(jīng)由公用數(shù)據(jù)通信網(wǎng)絡108而可通信地耦合到裝置104,而裝置104經(jīng)由專用數(shù)據(jù)通信網(wǎng)絡110而可通信地耦合到服務器106a-106n。在一個實施例 中,公用數(shù)據(jù)通信網(wǎng)絡108包括因特網(wǎng)以及專用數(shù)據(jù)通信網(wǎng)絡110包括企業(yè)網(wǎng)。公用數(shù)據(jù) 通信網(wǎng)絡108和專用數(shù)據(jù)通信網(wǎng)絡110可以是任何類型和形式的網(wǎng)絡、公用的、專用的或其 他的,以及在某些情況下,可以是相同網(wǎng)絡。雖然圖1示出了客戶端102a_102n和服務器106a_106n之間的網(wǎng)絡108和110,但 客戶端102a-10&i和服務器106a-106n可以在相同網(wǎng)絡108或110上。網(wǎng)絡108和110可 以是相同類型的網(wǎng)絡或不同類型的網(wǎng)絡。網(wǎng)絡108和/或網(wǎng)絡110可以是諸如公司內(nèi)部網(wǎng) 或城域網(wǎng)(MAN)之類的局域網(wǎng)(LAN)或諸如因特網(wǎng)或萬維網(wǎng)之類的廣域網(wǎng)(WAN)。網(wǎng)絡108 和/或110可以是任何類型和/或形式的網(wǎng)絡并且可以包括任何如下網(wǎng)絡點對點網(wǎng)絡、廣 播網(wǎng)、廣域網(wǎng)、局域網(wǎng)、電信網(wǎng)、數(shù)據(jù)通信網(wǎng)、計算機網(wǎng)、ATM (異步傳輸模式)網(wǎng)、SONET (同步 光纖網(wǎng))網(wǎng)、SDH (同步數(shù)字系列)網(wǎng)、無線網(wǎng)和有線網(wǎng)。網(wǎng)絡108和/或110的拓撲結構可 以是總線、星形或環(huán)形網(wǎng)絡拓撲結構。網(wǎng)絡108和/或110和網(wǎng)絡拓撲結構可以是本領域 的普通技術人員已知的能夠支持本文描述的本發(fā)明操作的任何網(wǎng)絡或網(wǎng)絡拓撲結構。如圖1所示,裝置104被示為在公用數(shù)據(jù)通信網(wǎng)108和專用數(shù)據(jù)通信網(wǎng)110之間。 在其他實施例中,裝置104可以位于公用數(shù)據(jù)通信網(wǎng)108或?qū)S脭?shù)據(jù)通信網(wǎng)110之上。在 其他實施例中,裝置104可以是在與客戶端102a-102n相同或不同的網(wǎng)絡108、110上任何 單個客戶端102a-102n或任何單個服務器106a-106n的組成部分。因此,裝置104可以位 于在客戶端102a-102n和服務器106a-106n之間的網(wǎng)絡或網(wǎng)絡通信路徑中的任何點上。根據(jù)本發(fā)明實施例,裝置104包括緩存管理邏輯并且還包括或訪問它用于實施 緩沖存儲器的存儲介質(zhì)。利用這些特性,裝置104監(jiān)視客戶端102a-102n對任何服務器 106a-106n所做出的對象請求。響應于這些對象請求,從服務器106a-106n返回的對象被 裝置104存儲在緩沖存儲器中。從任何客戶端102a-102n對相同對象的隨后請求由裝置 104截取,該裝置104試圖從緩存器發(fā)送對象而不是將請求傳遞到服務器106a-106n。這提 供了雙重優(yōu)勢,即減少響應來自客戶端10加-10211的請求所需時間以及減少了支持服務器 106a-106n的基礎設施上的負荷??傊?,圖1所示的網(wǎng)絡環(huán)境100只通過示例形式示出而不是限制性的。根據(jù)這里 提供的教導,本領域技術人員將容易理解的是,本發(fā)明可以在其中一個或多個網(wǎng)絡的節(jié)點 之間傳送對象請求和響應的任何網(wǎng)絡環(huán)境中實施。B.示例裝置或設備結構
如這里更詳細的描述,在本發(fā)明的實施例中,裝置104使操作系統(tǒng)的內(nèi)核層上的緩存 功能與一個或多個其他處理任務相集成,該其他處理任務包括(但不限制于)解密、解壓縮、 或認證和/或授權。這樣的實施在于2005年6月四日提交的題目為“Method and Device for Performing Integrated Caching in a Data Communication Network,,的申請?zhí)枮?11/169,002的共同擁有的同時待定美國專利申請中示出,其在此被引入以供參考。這里根 據(jù)圖2描述該示例結構,但本發(fā)明并不限于此,并且其他結構也可以用于實施這里所述的 本發(fā)明的操作。圖2示出了裝置104的示例結構200。如上所述,結構200僅通過示例的形式示出 而不是限制性的。如圖2所示,示例結構200包括硬件層206和劃分為用戶空間202和內(nèi) 核空間204的軟件層。
硬件層206提供硬件元件,在該硬件元件上執(zhí)行在內(nèi)核空間204和用戶空間202 內(nèi)的程序和服務。硬件層206也提供允許內(nèi)核空間204和用戶空間202內(nèi)的程序和服務相 對于裝置104內(nèi)部地和外部地傳送數(shù)據(jù)的結構和元件。如圖2所示,硬件層206包括用于 執(zhí)行軟件程序和服務的處理單元262、用于存儲軟件和數(shù)據(jù)的存儲器沈4、用于經(jīng)過網(wǎng)絡傳 送和接收數(shù)據(jù)的網(wǎng)絡端口 266、以及用于執(zhí)行與處理經(jīng)過網(wǎng)絡傳送和接收的數(shù)據(jù)的安全套 接層相關的功能的加密處理器260。在某些實施例中,中央處理單元262可以在單個處理器 中執(zhí)行加密處理器260的功能。另外,硬件層206可以包括對于每個處理單元沈2的多個 處理器和加密處理器沈0。雖然裝置104的硬件層206 —般使用加密處理器260來示出,但 是處理器260可以是用于執(zhí)行與諸如安全套接層(SSL)或傳輸層安全(TLS)協(xié)議之類的任 何加密協(xié)議相關的功能的處理器。在某些實施例中,處理器260可以是通用處理器(GPP), 而在其他實施例中,處理器260可以具有可執(zhí)行指令以執(zhí)行任何安全相關協(xié)議的處理。雖然使用圖2中的特定元件示出了裝置104的硬件層206,但是裝置104的硬件 部分或元件可以包括計算設備的任何類型或形式的元件、硬件或軟件,諸如這里進一步結 合圖8A和8B示出和討論的計算設備800。在某些實施例中,裝置104可以包括服務器、網(wǎng) 關、路由器、轉換器、電橋或其他類型的計算或網(wǎng)絡設備,并且具有與之相關的任何硬件和/ 或軟件元件。裝置104的操作系統(tǒng)分配、管理可用系統(tǒng)存儲器或另外將可用系統(tǒng)存儲器隔離為 內(nèi)核空間204和用戶空間204。在示例軟件結構200中,操作系統(tǒng)可以是任何類型和/或形 式的Unix操作系統(tǒng),但本發(fā)明并不限制于此。因此,裝置104可以運行任何操作系統(tǒng),諸如 任何版本的Microsoft Windows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、任何版本 的Macintosh計算機的Mac OS ,任何嵌入式操作系統(tǒng)、任何網(wǎng)絡操作系統(tǒng)、任何實時操作 系統(tǒng)、任何開源操作系統(tǒng)、任何私有操作系統(tǒng)、用于移動計算設備或網(wǎng)絡設備的任何操作系 統(tǒng)、或者能夠在裝置104上運行并執(zhí)行這里所述操作的任何其他操作系統(tǒng)。保留內(nèi)核空間204用于運行內(nèi)核230,包括任何設備驅(qū)動器、內(nèi)核擴展或其他涉及 內(nèi)核的軟件。如本領域技術人員所知,內(nèi)核230是操作系統(tǒng)的核心,并且提供對資源和裝置 104的相關硬件元件的訪問、控制和管理。根據(jù)本發(fā)明實施例,內(nèi)核空間204也包括協(xié)同緩 存管理器232工作的多個網(wǎng)絡服務或處理,經(jīng)常被稱為集成緩存器,它的優(yōu)勢在這里將進 一步詳細的描述。另外,內(nèi)核230的實施例將取決于設備104安裝、配置或另外使用的操作 系統(tǒng)的實施方式。在一個實施例中,設備104包括一個網(wǎng)絡堆棧沈7,諸如基于TCP/IP的堆棧,用于 與客戶端102a-l(^b和/或服務器106a-106n進行通信。在一個實施例中,網(wǎng)絡堆棧267 用于與諸如網(wǎng)絡108的第一網(wǎng)絡和第二網(wǎng)絡110進行通信。在某些實施例中,設備104終 止諸如客戶端10h-102n的TCP連接的第一傳輸層連接,并建立由客戶端102a-102n使用 的到服務器106a-106n的第二傳輸層連接,例如在裝置104和服務器106a-106n上終止第 二傳輸層連接??梢越柚趩蝹€網(wǎng)絡堆棧267建立第一和第二傳輸層連接。在其他實施例 中,設備104包括多個網(wǎng)絡堆棧,例如267和267’,以及在一個網(wǎng)絡堆棧267上建立或終止 第一傳輸層連接,以及在第二網(wǎng)絡堆棧267’上建立或終止第二傳輸層連接。例如,一個網(wǎng) 絡堆??梢杂糜诮邮蘸蛡魉偷谝痪W(wǎng)絡上的網(wǎng)絡分組,以及另一網(wǎng)絡堆棧用于接收和傳送第 二網(wǎng)絡上的網(wǎng)絡分組。在一個實施例中,網(wǎng)絡堆棧267包括用于排隊一個或多個網(wǎng)絡分組以由裝置104傳送的緩沖器M3。如圖2所示,內(nèi)核空間204包括緩存管理器232、高速層2_7集成分組引擎M0、加 密引擎234、策略引擎236和多協(xié)議壓縮邏輯238。在內(nèi)核空間204或內(nèi)核模式中而不是用 戶空間202內(nèi)運行這些元件或處理232、M0、234、236和238單獨或結合地改進這些元件中 的每個的性能。內(nèi)核操作表示這些元件或處理232、M0、234、236和238在設備104的操作 系統(tǒng)的內(nèi)核地址空間內(nèi)運行。例如,通過將加密和解密操作移至內(nèi)核而以內(nèi)核模式運行加 密引擎234改進加密性能,因此減少以內(nèi)核模式的存儲器空間或內(nèi)核線程和以用戶模式的 存儲器空間或線程之間轉換的次數(shù)。例如,以內(nèi)核模式獲取的數(shù)據(jù)不需要傳遞或拷貝到以 用戶模式運行的處理或線程,諸如從內(nèi)核級數(shù)據(jù)結構到用戶級數(shù)據(jù)結構。另一方面,也減少 了內(nèi)核模式和用戶模式之間的上下文切換(context switch)的數(shù)量。另外,可以在內(nèi)核 空間204內(nèi)更有效地執(zhí)行任何元件或處理232、M0、235、236和238之間的同步或通信。在某些實施例中,元件232、M0、234、236和238的任何部分可以在內(nèi)核空間204 內(nèi)運行或操作,而這些元件232、M0、234、236和238的其他部分可以在用戶空間202中 運行或操作。在一個實施例中,本發(fā)明使用內(nèi)核級數(shù)據(jù)結構,該內(nèi)核級數(shù)據(jù)結構提供訪問 一個或多個網(wǎng)絡分組的任何部分,例如,包括來自客戶端10加-10211的請求或來自服務器 106a-106n的響應的網(wǎng)絡分組。在某些實施例中,由分組引擎240經(jīng)由到網(wǎng)絡堆棧267的傳 輸層驅(qū)動器接口或濾波器而獲取內(nèi)核級數(shù)據(jù)結構。內(nèi)核級數(shù)據(jù)結構包括經(jīng)由涉及網(wǎng)絡堆棧 267的內(nèi)核空間204、由網(wǎng)絡堆棧267接收或傳送的網(wǎng)絡業(yè)務或分組可訪問的任何接口和/ 或數(shù)據(jù)。在其他實施例中,可以由元件或處理232、M0、234、236和238中的任何一個使用 該內(nèi)核級數(shù)據(jù)結構以執(zhí)行元件或處理的所需操作。在一個實施例中,當使用內(nèi)核級數(shù)據(jù)結 構時元件232、M0、234、236和238以內(nèi)核模式204運行,而在另一實施例中,當使用內(nèi)核級 數(shù)據(jù)結構時元件232、M0、234、236和238以用戶模式運行。在某些實施例中,內(nèi)核級數(shù)據(jù) 結構能被拷貝或傳遞到第二內(nèi)核級數(shù)據(jù)結構或任何所需的用戶級數(shù)據(jù)結構。緩存管理器232包括軟件、硬件或軟件和硬件的任何組合以提供對任何類型和形 式的內(nèi)容的緩存訪問、控制和管理,諸如由始發(fā)服務器106a-106n提供的對象或動態(tài)產(chǎn)生 的對象。由緩存管理器232處理并存儲的數(shù)據(jù)、對象或內(nèi)容包括任何格式的數(shù)據(jù),諸如標記 語言,或者借助于任何協(xié)議傳送的數(shù)據(jù)。在某些實施例中,緩存管理器232復制其他地方存 儲的原始數(shù)據(jù)或之前計算、產(chǎn)生或傳送的數(shù)據(jù),其中相對于讀取緩沖存儲器元件而言原始 數(shù)據(jù)需要更長的訪問時間以提取、計算或另外獲取。一旦在緩沖存儲器元件中存儲數(shù)據(jù),則 通過訪問緩存的拷貝而不是再提取或再計算原始數(shù)據(jù)而獲得將來的使用,因此減少了訪問 時間。在某些實施例中,緩沖存儲器元件可以包括設備104的存儲器264中的數(shù)據(jù)對象。在 其他實施例中,緩沖存儲器元件可以包括具有比存儲器264更快訪問時間的存儲器。在另 一實施例中,緩沖存儲器元件包括任何類型和形式的設備104的存儲元件,諸如硬盤的一 部分。在某些實施例中,處理單元262可以提供緩沖存儲器以供本發(fā)明的緩存管理器232 使用。在其他實施例中,緩存管理器232使用存儲器、儲存器或處理單元的任何部分或組合 用于緩存數(shù)據(jù)、對象和其他內(nèi)容。而且,本發(fā)明的緩存管理器232包括任何邏輯、功能、規(guī)則或操作以執(zhí)行這里所述 本發(fā)明的技術的任何實施例。例如,緩存管理器232包括邏輯或功能以根據(jù)無效時間段的 屆滿或一旦從客戶端102a-102n或服務器106a-106n接收無效命令就無效對象。在某些實施例中,緩存管理器232可以像在內(nèi)核空間204中執(zhí)行的程序、服務、處理或任務一樣操作, 而在其他實施例中,可以像用戶空間202中執(zhí)行的程序、服務、處理或任務一樣操作。在一 個實施例中,緩存管理器232的第一部分在用戶空間202內(nèi)執(zhí)行而第二部分在內(nèi)核空間204 內(nèi)執(zhí)行。在某些實施例中,緩存管理器232可以包括任何類型的通用處理器(GPP)、或諸如 現(xiàn)場可編程門陣列(FPGA)、可編程邏輯設備(PLD)或特定用途集成電路(ASIC)之類的任何 其他類型的集成電路。策略引擎236包括例如智能統(tǒng)計引擎或一個(或多個)其他可編程應用。在一個實 施例中,策略引擎236提供配置機制以允許用戶識別、指定、定義或配置緩存策略。在某些 實施例中,策略引擎236也訪問存儲器以支持諸如查詢表或散列表之類的數(shù)據(jù)結構以啟用 用戶選擇的緩存策略決定。在其他實施例中,策略引擎236包括任何邏輯、規(guī)則、功能或操 作以確定并且除了對安全、網(wǎng)絡通信量、網(wǎng)絡訪問、壓縮或由裝置104執(zhí)行的任何其他功能 或操作的訪問、控制和管理之外提供對由裝置104緩存的對象、數(shù)據(jù)或內(nèi)容的訪問、控制和 管理。這里將進一步描述特定緩存策略的其他示例。加密引擎234包括任何邏輯、商業(yè)規(guī)則、功能或操作,用于管理諸如SSL或TLS之 類的任何安全相關協(xié)議以及與其相關的任何功能的處理。例如,加密引擎234加密并解密 經(jīng)由裝置104傳送的網(wǎng)絡分組、或其任何部分。加密引擎234代表客戶端10加-10211、服務 器106a-106n或裝置104還布置或建立SSL或TLS連接。因此,加密引擎2;34提供SSL處理 的卸載和加速。在一個實施例中,加密引擎234使用隧道協(xié)議以提供客戶端102a-102n和 服務器106a-106n之間的虛擬專用網(wǎng)絡。在某些實施例中,加密引擎234與加密處理器沈0 進行通信。在其他實施例中,加密引擎234包括在加密處理器260上運行的可執(zhí)行指令。多協(xié)議壓縮引擎238包括任何邏輯、商業(yè)規(guī)則、功能或操作,用于壓縮網(wǎng)絡分組的 一個或多個協(xié)議,諸如由設備104的網(wǎng)絡堆棧267所用的任何協(xié)議。在一個實施例中,多協(xié) 議壓縮引擎238在客戶端102a-102n和服務器106a-106n之間雙向地壓縮任何基于TCP/IP 的協(xié)議,包括消息應用程序編程接口(MAPI)(電子郵件)、文件傳輸協(xié)議(FTP)、超文本傳輸 協(xié)議(HTTP)、公共因特網(wǎng)文件系統(tǒng)(CIFS)協(xié)議(文件傳輸)、獨立計算體系結構(ICA)協(xié)議、 遠程桌上協(xié)議(RDP)、無線應用協(xié)議(WAP)、移動IP協(xié)議以及基于IP的語音(VoIP)協(xié)議。 在其他實施例中,多協(xié)議壓縮引擎238提供基于超文本標記語言(HTML)協(xié)議的壓縮并在某 些實施例中,提供諸如可擴展標記語言(XML)的任何標記語言的壓縮。在一個實施例中,多 協(xié)議壓縮引擎238提供任何高性能協(xié)議的壓縮,諸如為裝置104設計用于裝置104通信的 任何協(xié)議。在另一實施例中,多協(xié)議壓縮引擎238使用修改的傳輸控制協(xié)議壓縮任何負載 或任何通信,所述協(xié)議諸如交易TCP (T/TCP)、具有選擇確認的TCP (TCP-SACK)、具有大窗 口的TCP (TCP-LW)、諸如TCP-Vegas協(xié)議等的擁塞預測協(xié)議以及TCP欺騙協(xié)議。因此,本發(fā)明的多協(xié)議壓縮引擎238借助于例如Microsoft Outlook的桌面客戶 端和非Web瘦客戶端,諸如像Orac 1 e SAP和Siebe 1等的流行企業(yè)應用發(fā)布的任何客戶端以 及諸如Pocket PC的移動客戶端而加速用戶訪問應用的性能。在某些實施例中,通過以內(nèi) 核模式204執(zhí)行的并與分組處理引擎240集成來訪問網(wǎng)絡堆棧267的多協(xié)議壓縮引擎238 能夠壓縮諸如TCP/IP協(xié)議所執(zhí)行的任何協(xié)議,諸如任何應用層協(xié)議。通常也被稱為分組處理引擎或分組引擎的高速層2-7集成分組引擎240負責管理 借助于網(wǎng)絡端口沈6由裝置104接收并傳送的分組的內(nèi)核級處理。高速層2-7集成分組引擎240包括緩沖器,用于在諸如接收網(wǎng)絡分組或傳送網(wǎng)絡分組的處理期間排隊一個或多個 網(wǎng)絡分組。另外,高速層2-7集成分組引擎240與一個或多個網(wǎng)絡堆棧267進行通信以借 助于網(wǎng)絡端口 266發(fā)送并接收網(wǎng)絡分組。高速層2-7集成分組引擎240結合加密引擎234、 緩存管理器232、策略引擎236和多協(xié)議壓縮邏輯238 —起工作。具體地,加密引擎234被 配置以執(zhí)行分組的SSL處理,策略引擎236被配置以執(zhí)行涉及業(yè)務管理的功能,諸如請求級 內(nèi)容切換和請求級緩存重定向,以及多協(xié)議壓縮邏輯238被配置以執(zhí)行涉及壓縮和解壓縮 數(shù)據(jù)的功能。高速層2-7集成分組引擎240包括分組處理計時器M2。在一個實施例中,分組 處理計時器242提供一個或多個時間間隔以觸發(fā)輸入的(即接收的)或輸出的(即傳送的) 網(wǎng)絡分組的處理。在某些實施例中,高速層2-7集成分組引擎240響應計時器242而處理 網(wǎng)絡分組。分組處理計時器對2向分組引擎240提供任何類型和形式的信號以通知、觸發(fā) 或傳送涉及時間的事件、間隔或發(fā)生的事情(occurrence)。在某些實施例中,分組處理計 時器M2以毫秒級操作,例如100ms、50ms或25ms。例如,在某些實施例中,分組處理計時 器242提供時間間隔或按其他方式使得網(wǎng)絡分組以IOms時間間隔由高速層2_7集成分組 引擎240進行處理,而在其他實施例中,以5ms時間間隔,并在另外的其他實施例中,縮短至 3、2或Ims時間間隔。高速層2-7集成分組引擎240在操作期間與加密引擎234、緩存管理 器232、策略引擎236和多協(xié)議壓縮引擎238進行接口、集成或通信。因此,響應于分組處 理計時器242和/或分組引擎240而執(zhí)行加密引擎234、緩存管理器232、策略引擎236和 多協(xié)議壓縮邏輯238的任何邏輯、功能或操作。因此,可以在通過分組處理計時器242提供 的時間間隔的顆粒度(granularity)(例如,在小于或等于IOms的時間間隔)上執(zhí)行加密引 擎234、緩存管理器232、策略引擎236和多協(xié)議壓縮邏輯238的任何邏輯、功能或操作。例 如,在一個實施例中,緩存管理器232響應于高速層2-7集成分組引擎240和/或分組處理 計時器242而執(zhí)行任何緩存對象的無效。在另一實施例中,可以將緩存對象的期限時間或 無效時間設置為與分組處理計時器M2的時間間隔相同的顆粒度級,諸如在每10ms。與內(nèi)核空間204相反,用戶空間202是用戶模式應用或另外以用戶模式運行的 程序所用的存儲器區(qū)域或部分操作系統(tǒng)。用戶模式應用不能直接訪問內(nèi)核空間204并使 用服務調(diào)用以便訪問內(nèi)核服務。如圖2所示,應用104的用戶空間202包括圖形用戶界面 (GUI) 210、命令行界面(CLI) 212、外殼服務(shell service) 214、可用狀態(tài)監(jiān)控(health monitoring)程序216和守護(daemon)服務218。⑶1210和CLI212提供一個裝置,通過該 裝置系統(tǒng)管理者或其他用戶可以交互并控制裝置104的操作,諸如借助于裝置104的操作 系統(tǒng)并或是用戶空間202或內(nèi)核空間204。GUI210可以是任何類型和形式的圖形用戶界面 并且可以借助文本、圖形或另外通過任何類型的程序或應用(例如,瀏覽器)表現(xiàn)。CLI212 可以是任何類型和形式的命令行或基于文本的界面,諸如由操作系統(tǒng)提供的命令行等。例 如,CLI212包括一個外殼,其是使用戶能夠與操作系統(tǒng)進行交互的工具。在某些實施例中, 借助baSh、CSh、tCSh或ksh類型外殼提供CLI212。外殼服務214包括程序、服務、任務、處 理或可執(zhí)行指令以支持用戶借助⑶1210和/或CLI212與裝置104或操作系統(tǒng)進行交互??捎脿顟B(tài)監(jiān)控程序216用于監(jiān)控、檢查、報告并確保網(wǎng)絡系統(tǒng)正適當?shù)剡\行以及 用戶通過網(wǎng)絡正在接收請求的內(nèi)容。可用狀態(tài)監(jiān)控程序216包括一個或多個程序、服務、任 務、處理或可執(zhí)行指令以提供邏輯、規(guī)則、功能或操作以用于監(jiān)控裝置104的任何活動。在某些實施例中,可用狀態(tài)監(jiān)控程序216截取并檢查經(jīng)過裝置104傳遞的任何網(wǎng)絡通信量。 在其他實施例中,可用狀態(tài)監(jiān)控程序216通過任何合適的裝置和/或機制與一個或多個如 下裝置對接加密引擎234、緩存管理器232、策略引擎236、多協(xié)議壓縮邏輯238、分組引擎 對0、守護服務218、以及外殼服務214。因此,可用狀態(tài)監(jiān)控程序216能調(diào)用任何應用程序 接口(API)以確定裝置104的任何部分的狀態(tài)、狀況或健康。例如,可用狀態(tài)監(jiān)控程序216 在周期性的基礎上Ping或發(fā)送狀況查詢以檢測程序、處理、服務或任務是否有效并正在運 行。在另一示例中,可用狀態(tài)監(jiān)控程序216檢查程序、處理、服務或任務所提供的任何狀況、 錯誤或歷史日志以確定裝置104的任何部分的任何情況、狀況或錯誤。守護服務218是持續(xù)運行或在后臺中的并且處理裝置104所接收的周期服務請求 的程序。在某些實施例中,守護服務向其他程序或處理轉送請求,諸如合適時的另一守護服 務218。如本領域技術人員所知曉的,守護服務218自動地運行以持續(xù)地或周期地執(zhí)行諸 如網(wǎng)絡控制的系統(tǒng)廣泛功能,或執(zhí)行任何所需任務。在某些實施例中,一個或多個守護服務 218在用戶空間202內(nèi)運行,而在其他實施例中,一個或多個守護服務218在內(nèi)核空間內(nèi)運 行。C.緩存動態(tài)產(chǎn)生的對象
諸如一個或多個動態(tài)產(chǎn)生的對象之類的動態(tài)內(nèi)容可以由服務器和/或后端數(shù)據(jù)庫(未 示出)產(chǎn)生,所述服務器被稱作應用或始發(fā)服務器106a-106n,該后端數(shù)據(jù)庫本地或遠程地 處理來自一個或多個客戶端10加-10211的對象請求,如圖1所示。當這些應用或數(shù)據(jù)庫處 理數(shù)據(jù)(該數(shù)據(jù)包括涉及從客戶端接收的輸入的數(shù)據(jù))時,由這些數(shù)據(jù)庫和應用提供的響應 對象將改變。在始發(fā)服務器中由這些應用或數(shù)據(jù)庫產(chǎn)生的先前對象將不再“新鮮”并因此 不再需要由緩存器保存。例如,給定相同的輸入集合,第一實例的動態(tài)產(chǎn)生的對象不同于第 二實例的動態(tài)產(chǎn)生的對象。在另一示例中,使用不同的輸入集合而動態(tài)產(chǎn)生相同對象,以致 于不同于對象的第二實例而產(chǎn)生對象的第一實例。為了獲得改進的網(wǎng)絡性能,裝置104被設計和配置以解決在通過各種方法緩存動 態(tài)產(chǎn)生的內(nèi)容中出現(xiàn)的各種問題,如下文的詳細描述。在這里所述的本發(fā)明的某些實施例 中,裝置104結合了一種或多種技術的集合用于更高效快捷地無效緩存器中所存儲的動態(tài) 產(chǎn)生的內(nèi)容。而且,該裝置結合用于執(zhí)行控制并緩存閃速群的技術。緩沖存儲器一般存儲 對對象請求的每個響應,只要這樣的響應沒有被標記為不可緩存。如這里所述,高效緩存 動態(tài)產(chǎn)生的內(nèi)容需要這樣的技術,該技術能夠及時無效在始發(fā)服務器已經(jīng)歷改變的緩沖存 儲器中的對象。及時無效允許緩存器避免提供“陳舊”內(nèi)容-特別涉及動態(tài)產(chǎn)生內(nèi)容的任 務,特別是在內(nèi)容改變無規(guī)律發(fā)生的時候。下文將闡述確保及時無效動態(tài)產(chǎn)生的內(nèi)容的若 干技術。1.集成功能
一方面,本發(fā)明涉及一種響應于分組處理計時器242使緩存管理器232、策略引擎236、 加密引擎234和/或多協(xié)議壓縮邏輯238的功能、邏輯或操作與高速層2-7集成分組引擎 240的分組處理操作相集成的技術。例如,可以在用于分組處理操作的分組處理計時器對2 的時間間隔內(nèi)執(zhí)行緩存管理器232的操作,例如在接收或傳送網(wǎng)絡分組時。在一個實施例 中,通過與分組處理操作相集成和/或使用分組處理計時器,本發(fā)明的緩存管理器232可以 利用低至非常小時間間隔的期限時間來緩存對象,這將在下文更詳細的描述。在其他實施例中,響應分組處理計時器M2的緩存管理器232也可以接收無效命令以在緩存對象非常 短的時間段內(nèi)無效對象。圖3A所示的方法300示出了用于請求緩存管理器232、策略引擎236、加密引擎 234和/或多協(xié)議壓縮引擎238以在處理或結合時間間隔以由高速層2-7集成分組引擎或 分組處理引擎240處理網(wǎng)絡分組期間執(zhí)行操作的本發(fā)明的技術的一個實施例。簡單概括, 在方法300的步驟310,設備104接收網(wǎng)絡分組或被請求傳送網(wǎng)絡分組。在步驟315,響應 于分組處理計時器M2,設備104請求分組處理引擎240來處理網(wǎng)絡分組。作為分組處理操 作的一部分或結合分組處理操作,在步驟320,分組處理引擎240請求緩存管理器232、策略 引擎236、加密引擎234和/或多協(xié)議壓縮引擎238對緩存對象執(zhí)行操作。在步驟325,緩 存管理器232、策略引擎236、加密引擎234和/或多協(xié)議壓縮引擎238執(zhí)行請求的操作,其 包括這里所述發(fā)明的技術的任何一個或組合。在一個實施例中,緩存管理器232確定緩存 對象的無效,并標記緩存對象為無效。在某些實施例中,緩存管理器232響應于分組處理引 擎240的請求而刷新無效對象。當緩存管理器232響應于分組處理計時器242而正執(zhí)行這 些操作時,無效對象可以在毫秒級的時間段內(nèi)發(fā)生以及對象具有在分組處理計時器242所 提供的時間間隔的級別的期限時間,諸如IOms等。在本發(fā)明的方法300的更進一步的描述中,在步驟310,裝置104接收一個或多個 網(wǎng)絡分組和/或傳送一個或多個網(wǎng)絡分組。在某些實施例中,裝置104請求經(jīng)過網(wǎng)絡108 或網(wǎng)絡110傳送一個或多個網(wǎng)絡分組。在另一實施例中,裝置104在一個端口 266上接收 網(wǎng)絡分組并在相同端口 266或不同端口沈6’上傳送網(wǎng)絡分組。在某些實施例中,裝置104 的分組引擎240傳送或請求傳送一個或多個網(wǎng)絡分組。在一個實施例中,裝置104在第一 網(wǎng)絡108上接收或傳送分組,而在另一實施例中,裝置104在第二網(wǎng)絡110上接收或傳送分 組。在其他實施例中,裝置104在相同網(wǎng)絡上接收和傳送分組。在某些實施例中,裝置104 向一個或多個客戶端102a-102n接收和/或傳送網(wǎng)絡分組。在其他實施例中,裝置104向 一個或多個服務器106a-106n接收和/或發(fā)送網(wǎng)絡分組。在步驟315,一旦在設備104的網(wǎng)絡端口 266上接收網(wǎng)絡分組或一旦從設備104請 求傳送網(wǎng)絡分組,或者一旦接收和/或傳送一個或多個網(wǎng)絡分組的任何組合,則設備104請 求或觸發(fā)分組處理引擎MO的分組處理操作。在某些實施例中,通過分組處理計時器M2 提供的信號觸發(fā)分組處理引擎240的分組處理操作。在一個實施例中,分組處理計時器M2 提供與接收和/或傳送一個或多個網(wǎng)絡分組有關的中斷驅(qū)動或事件驅(qū)動的計時器功能。在 某些實施例中,由通過設備104接收和/或發(fā)送網(wǎng)絡分組的速率或由處理每個分組或一批 分組的速率而驅(qū)動分組處理計時器M2。因此,在一個或多個分組處理操作的每個集合之后 觸發(fā)并復位分組處理計時器對2。在另一實施例中,分組處理計時器242提供時間間隔(相 同或可變的時間間隔)以觸發(fā)、喚醒或用信號通知分組處理引擎240以執(zhí)行諸如處理接收的 分組或傳送提交的分組之類的功能或操作。如上文結合圖2的設備104所討論的,分組處 理計時器242以毫秒級進行操作,諸如引起時間間隔或在IOms或更少的時間間隔內(nèi)觸發(fā)分 組處理操作。能以各種方式提供并在分組處理引擎240的分組處理操作的操作中使用本發(fā) 明的分組處理計時器的顆粒度計時器功能。在本發(fā)明的方法300的步驟320,分組處理引擎240請求緩存管理器232、策略引 擎236、加密引擎234和/或多協(xié)議壓縮引擎238中的一個或多個以執(zhí)行操作。在一個實施例中,分組處理引擎240或分組處理計時器242產(chǎn)生信號或用信號通知緩存管理器232、策 略引擎236、加密引擎234和/或多協(xié)議壓縮引擎238中的一個或多個。在網(wǎng)絡分組或一個 或多個分組的分組處理操作之前、期間或之后的任何時刻,分組處理引擎240請求或用信 號通知操作。在一個實施例中,一旦觸發(fā)分組處理計時器242或分組處理計時器242提供 的時間間隔屆滿,并在對網(wǎng)絡分組執(zhí)行分組處理操作之前,分組處理引擎240進行請求。在 另一實施例中,在執(zhí)行一個或多個分組處理操作期間,分組處理引擎240進行請求。例如, 在執(zhí)行操作期間,諸如在功能調(diào)用內(nèi),分組處理引擎240對緩存管理器232、策略引擎236、 加密引擎234和/或多協(xié)議壓縮引擎238之一進行應用程序接口(API)調(diào)用。在其他實施 例中,一旦完成網(wǎng)絡分組處理的操作則分組處理引擎240進行請求。在步驟325,由緩存管理器232、策略引擎236、加密引擎234和/或多協(xié)議壓縮 引擎238中的一個或多個執(zhí)行請求的操作。在某些實施例中,諸如經(jīng)由內(nèi)核應用程序接口 (API),可以請求執(zhí)行通過內(nèi)核204所提供的任何功能或操作。因此,結合借助分組處理計 時器232的時間或分組處理的時間間隔執(zhí)行設備104的任何功能。在某些實施例中,同步并 結合分組處理引擎240的分組處理操作執(zhí)行請求的操作。例如,一旦完成或響應請求的操 作,分組處理操作就等待并持續(xù)。在其他實施例中,與分組處理操作非同步地執(zhí)行請求的操 作。例如,分組處理引擎240發(fā)送請求以執(zhí)行操作但不防礙或等待從操作接收響應。如下 文將結合圖3B所示的本發(fā)明的方法350更詳細討論的,分組處理引擎240請求緩存管理器 232以執(zhí)行任何緩存管理功能,諸如檢查對象的期限或無效、標記對象為無效或刷新無效或 屆滿的對象。在某些實施例中,在步驟320分組處理引擎240發(fā)送多個請求,諸如向緩存管理器 232發(fā)送第一請求并向加密引擎234發(fā)送第二請求。在其他實施例中,在步驟320,分組處 理引擎240諸如經(jīng)由內(nèi)核230向設備104的目標元件發(fā)送包括將由設備104分發(fā)的多個請 求的單獨請求。在一個實施例中,隨后將請求進行彼此傳送。在另一實施例中,請求取決于 先前請求的狀態(tài)、結果、成功或完成。例如,到策略引擎236的第一請求用于確定處理來自 另一設備或與網(wǎng)絡分組相關的用戶的網(wǎng)絡分組的策略。根據(jù)策略引擎236的策略,取決于 第一請求的結果進行或不進行到緩存器的第二請求。使用設備104的內(nèi)核空間204中與分 組處理引擎240集成的緩存管理器232、策略引擎236、加密引擎234和/或多協(xié)議壓縮引 擎238,存在由分組處理操作觸發(fā)并與分組處理操作集成的這里所述的設備104的各種操 作。2.無效顆粒度
另一方面,本發(fā)明涉及并包含將緩存器保存的對象的期限時間配置為微小的顆粒度時 間間隔的能力,諸如由分組處理計時器提供的時間間隔的顆粒度。該特性被稱為“無效顆粒 度”。因此,在一個實施例中,本發(fā)明可以利用低至非常小時間間隔的期限時間來緩存對象。 在其他實施例中,響應分組處理計時器的緩存管理器也可以接收無效命令以在緩存對象的 非常短的時間段內(nèi)無效對象。通過在期限時間內(nèi)提供該微小的顆粒度,本發(fā)明的緩存器可 以緩存并提供經(jīng)常變化的對象,該對象經(jīng)常甚至1秒內(nèi)數(shù)次變化。一種技術是調(diào)節(jié)本發(fā)明 的設備所用的分組處理計時器,這樣能夠以毫秒級的時間增量操作以允許無效或期限顆粒 度低至IOms或更少。相對比于本發(fā)明,常規(guī)的緩存器一般不能設置或具有小于一秒的期限 或無效顆粒度。
現(xiàn)在參考圖3B,描述了本發(fā)明的方法350的實施例,用于響應于分組處理計時器 242和/或分組處理引擎240而無效緩存的對象或使緩存的對象屆滿。因此,在本發(fā)明的 某些實施例中,可以以毫秒級(諸如IOms或更少)無效緩存的對象或使緩存的對象屆滿???之,在方法350的步驟355,緩存管理器232響應于分組處理計時器242通過分組處理引擎 240而接收信號或請求以執(zhí)行操作。在步驟360,緩存管理器232確定諸如動態(tài)產(chǎn)生的對象 之類的緩存對象是否無效或?qū)脻M。在步驟365,如果對象是無效的,則緩存管理器232將對 象標記為無效,并在步驟370,從緩存管理器232刷新無效對象。在步驟355的進一步描述中,在某些實施例中,緩存管理器232會被信號通知或 請求在網(wǎng)絡分組處理期間的任何時間點執(zhí)行涉及緩存器的操作。在一個實施例中,在步驟 355,在對由設備104接收或傳送的網(wǎng)絡分組進行處理之前緩存管理器232接收操作請求。 在另一實施例中,一旦完成網(wǎng)絡分組的處理,緩存管理器232就接收操作請求。例如,分組 處理引擎240完成網(wǎng)絡分組的處理,并在等待計時器242的下個時間間隔之前或在處理下 個分組之前,請求緩存器執(zhí)行操作。在其他實施例中,在操作分組處理期間,分組處理引擎 240將操作請求傳送到緩存管理器232。在另一實施例中,緩存管理器232諸如從分組處理 引擎240或分組處理計時器242接收信號以觸發(fā)緩存管理器232執(zhí)行操作。在某些實施例 中,信號表示無效緩存的對象或使緩存對象的期限屆滿。在某些實施例中,緩存管理器232從緩存管理器232外部的實體接收請求以執(zhí)行 緩存操作,諸如無效由服務器106a-106n所傳送的并由分組處理引擎240處理的對象的請 求。在一個實施例中,緩存管理器232在緩存對象的IOms或更少時間內(nèi)接收無效請求,而 在另一實施例中,短至5ms、2ms或1ms。在其他實施例中,緩存管理器232響應于緩存管理 器232的操作或功能而執(zhí)行緩存操作,諸如計時器的屆滿以引起無效對象或在處理任何緩 存命令期間。在其他實施例中,緩存管理器232使用設備104的分組處理計時器M2以觸 發(fā)緩存操作。例如,計時器242觸發(fā)或以信號通知緩存器以檢查在能夠由計時器242設置 的任何時間間隔上緩存對象的無效或期限。在一個實施例中,設置計時器對2以在所設置 的IOms或更短時間內(nèi)觸發(fā)或以信號通知緩存器,或在另一實施例中,設置短至5ms、2ms或 Ims0在某些實施例中,始發(fā)服務器106a-106n能設置對象的期限時間。在其他實施例中, 裝置104或客戶端10加-10211能設置對象的期限時間。在步驟360,緩存管理器232確定緩存器中所存儲的對象的無效或期限。在某些實 施例中,根據(jù)計時器的期限無效緩存器中的對象。在一個實施例中,緩存管理器232根據(jù)計 時器的期限發(fā)布對對象的無效命令。在另一個實施例中,響應于計時器(諸如使用分組處理 計時器242設置的計時器)的屆滿,由緩存管理器232自動無效緩存器中所存儲的對象。在 某些實施例中,響應于分組處理計時器對2,緩存管理器232檢查對于緩存對象的任何計時 器的期限。在一個實施例中,緩存管理器232確定對象計時器已屆滿,而在另一實施例中, 緩存管理器232確定對象計時器還沒有屆滿。在另一實施例中,響應于第二觸發(fā)器或分組 處理計時器242的第二計時器間隔的緩存管理器232將第二次檢查之前檢查的對象計時器 是否已屆滿。在某些實施例中,緩存管理器232解析、解釋、訪問、讀取或另外處理無效命令或 請求以識別對象用于在緩存器中無效。在一個實施例中,緩存管理器232外部的實體向緩 存管理器232發(fā)布無效命令以無效對象。在另一實施例中,外部實體響應于分組處理計時器242而發(fā)出無效命令。如果對象是有效的和/或還沒有無效,則緩存管理器232響應于 請求而無效對象。在某些實施例中,由緩存管理器232處理的無效請求響應于處理請求的 分組處理引擎240的分組處理操作,其依次也響應于分組處理計時器M2。在步驟365,緩存管理器232標記對象為無效。緩存管理器232以任何合適或所需 的方式標記每個對象為無效。在一個實施例中,通過設置所存儲對象的標志、特性或?qū)傩詫?對象標記為無效。例如,將標志設置為向緩存管理器232表示對象為無效的任何值。在另 一實施例中,通過將對象移至用于存儲無效對象的區(qū)域或緩存器的一部分而將對象標記為 無效。在其他實施例中,通過數(shù)據(jù)庫或鏈接列表或任何類型和形式的數(shù)據(jù)結構,緩存管理器 232識別或跟蹤所存儲對象的無效和/或有效狀態(tài)。在某些實施例中,緩存管理器232使用 一個或多個對象以識別或跟蹤緩存器中所存儲的一個或多個對象的有效或無效。在另一實 施例中,通過改變、修改或變更所存儲的對象,例如刪除或移除不使用的對象的一部分,或 通過改變或破壞對象名稱而將對象標記為無效。在某些實施例中,在步驟370,緩存管理器232從緩存器刷新標記為無效的那些對 象。在另一實施例中,一旦諸如由客戶端10加-10211請求對象,緩存管理器232就從緩存器 中刷新無效對象。在某些實施例中,緩存管理器232使用在對象無效或?qū)脻M之后所接收的 對象的更新副本或版本重寫無效對象。在另一實施例中,緩存管理器232通過將另一對象 存儲至緩沖存儲器的相同部分而再使用無效對象所占用的緩沖存儲器。在另一實施例中, 緩存管理器232并不刷新標記為無效的對象而是保持存儲在存儲器或緩存器的儲存器中 的對象。雖然方法350描述了響應于分組處理計時器和/或結合分組處理操作而無效并刷 新緩存的對象以提供無效顆粒度,但是緩存器的任何操作和緩存器管理的任何技術以及這 里所述的設備104的任何其他操作可以在分組處理計時器提供的微小顆粒度時間間隔上 執(zhí)行。在某些實施例中,緩存對象的無效或?qū)脻M能以短至IOOms時間間隔發(fā)生,而在另一實 施例中,短至50ms時間間隔。在某些實施例中,緩存對象的無效或?qū)脻M能以短至25ms時間 間隔發(fā)生,而在其他實施例中,短至IOms時間間隔。而在其他實施例中,緩存對象的無效或 屆滿能以短至5ms時間間隔發(fā)生,而在另一實施例中,短至3、2或Ims時間間隔。通過包含上面結合圖3A和;3B在方法300和350中所述的極小時間增量消逝之后 無效對象的能力,可以實現(xiàn)改進動態(tài)產(chǎn)生對象的緩存。事實上,某些動態(tài)內(nèi)容必須服從在極 短的時間段內(nèi)從緩存器存儲和提供。然而,為了成功緩存這樣的內(nèi)容,根據(jù)本發(fā)明實施例的 方法提供在無效對象并從緩沖存儲器刷新對象之前在極短時間段緩存對象。例如,特定動 態(tài)產(chǎn)生的對象是可緩存1秒之久,但較長的時間對于持續(xù)變化的內(nèi)容來說經(jīng)常是不被接受 的。在一個實施例中,本發(fā)明的方法包括在1秒的微小部分之后無效緩存的內(nèi)容或使緩存 的內(nèi)容屆滿。作為示例,如果裝置100花費數(shù)毫秒產(chǎn)生動態(tài)響應,那么緩存器可以在小于或 等于IOOms的時間段的期間內(nèi)存儲和提供該響應,而不損害數(shù)據(jù)的“新鮮”。在IOOms的周 期內(nèi)不會產(chǎn)生新的對象,因為它比產(chǎn)生新對象所花費的時間更短。因此,可以設置裝置104 以在持續(xù)時間中提供該先前對象。裝置104無效低至非常小時間增量的能力經(jīng)常對其中設 置數(shù)據(jù)庫事務隔離級別以允許重復讀取或序列讀取的應用環(huán)境是非常有用的。3.無效命令
常規(guī)緩存技術根據(jù)內(nèi)容的預定期限時間而無效所存儲的內(nèi)容,所述預定期限時間一般由管理員配置或從提供對象的服務器接收。下文描述的是用于無效內(nèi)容以便更高效地緩存 動態(tài)產(chǎn)生的內(nèi)容的本發(fā)明的另一技術。本發(fā)明的技術包括在裝置104接收無效命令的能 力,該無效命令實時識別緩存器中之前存儲的一個或多個對象為無效。例如,可以通過傳送 到客戶端的網(wǎng)絡分組或服務器向裝置進行的應用程序接口(API)調(diào)用而傳送該無效命令。 這不同于常規(guī)方法,當提供對象時通過該常規(guī)方法服務器簡單地設置在對象報頭中所包括 的緩存器期限時間。本發(fā)明的技術更具體地在圖4A和4B中表示。圖4A是示出維持諸如計算機存儲 器緩存器之類的緩存器的方法的流程圖。簡單概括并根據(jù)步驟410,在緩存器中存儲之前 從始發(fā)服務器106a-106n提供的動態(tài)產(chǎn)生的對象。例如,動態(tài)產(chǎn)生的對象不會被識別為可 緩存的或另外包括任何緩存器或緩存器控制信息。在步驟420,在緩存器或緩存管理器232 上接收無效命令。無效命令將之前提供的一個或多個對象識別為無效。在步驟430,響應于 無效命令,緩存器或緩存管理器232將該識別的對象標記為無效。在步驟410的進一步描述中,緩存管理器232在緩沖存儲器元件中存儲從任何源 接收、獲取或傳送的動態(tài)產(chǎn)生的對象。在某些實施例中,從服務器106a-106n產(chǎn)生并提供動 態(tài)產(chǎn)生的對象。在其他實施例中,由客戶端10h-102n產(chǎn)生并提供動態(tài)產(chǎn)生的對象。在某 些實施例中,裝置104的另一部分、元件或處理產(chǎn)生對象并在緩存器中保存對象。在其他實 施例中,由網(wǎng)絡上另一裝置104或另一計算設備產(chǎn)生動態(tài)產(chǎn)生的對象并且該動態(tài)產(chǎn)生的對 象被傳送或傳遞到裝置104。在某些實施例中,動態(tài)產(chǎn)生的對象沒有被識別為可緩存的或識 別為不可緩存的。在其他實施例中,動態(tài)產(chǎn)生的對象被識別為可緩存的或在緩存器控制下。在步驟420,緩存管理器232接收將對象識別為無效的無效命令,該對象諸如是在 緩存器中保存的動態(tài)產(chǎn)生的對象。在一個實施例中,無效命令包括向緩存器表示對象無效 或可能“陳舊”的任何類型的指示或指令。在某些實施例中,無效命令識別對象并也識別對 象無效的時間以及對象的哪些部分無效。在一個實施例中,緩存管理器232提供由始發(fā)服 務器106a-106n遠程調(diào)用的應用程序接口(API)。在某些實施例中,緩存管理器232提供 任何類型和形式的協(xié)議用于接收命令并通過一個或多個網(wǎng)絡分組答復命令。在一個實施例 中,緩存管理器232或設備104提供可擴展標記語言(XML)API接口用于接收并處理無效命 令。例如,緩存管理器232提供web服務接口。在某些實施例中,緩存管理器232通過向始 發(fā)服務器106a-106n發(fā)送確認、狀態(tài)或其他響應而答復無效命令。在其他實施例中,緩存管 理器232不答復無效命令。在一個實施例中,如果在始發(fā)服務器106a-106n中運行的應用 執(zhí)行使得所存儲的對象“陳舊”的操作(諸如通過產(chǎn)生新的或更新的對象版本),則標記對象 為無效。例如,當新聞編輯改變快速變化的新聞報道而因此想確保報道的最新版本被提供 給客戶端時,上述情況會發(fā)生。無效命令由產(chǎn)生對象的應用、另一服務器106a-106n或另一裝置104從始發(fā)服務 器發(fā)出。在一個實施例中,始發(fā)服務器106a-106n自動響應始發(fā)服務器106a-106n上動態(tài) 產(chǎn)生的對象的改變而向緩存器232發(fā)出或傳送該無效命令。也可以由服務器106a-106n 和裝置104外側或外部的管理控制器產(chǎn)生無效命令。例如,管理控制器可以是在網(wǎng)絡上 運行并與裝置104通信的任何類型和形式的程序或應用,諸如管理控制臺。而且,客戶端 10加-10211能向裝置104或緩存管理器232發(fā)出或傳送無效命令。例如,如果客戶端采取 客戶端102a-102n識別的措施能引起始發(fā)服務器上請求對象的改變,則客戶端傳送無效命令??梢酝ㄟ^向用戶的緩存器傳送在緩存器上局部執(zhí)行或使用XML API框架遠程觸發(fā)的命 令而無效緩存器中存儲的任何對象。根據(jù)步驟430,響應于無效命令,將已識別為無效的緩存器中所存儲的對象(例如, 之前提供的動態(tài)產(chǎn)生的對象)標記為無效。不會從緩存器向請求客戶端提供無效對象,而 是從始發(fā)服務器直接提供該無效對象。緩存管理器232能以任何合適或所需的方式標記每 個對象為無效。在一個實施例中,通過設置所存儲對象的標志、特性或?qū)傩远鴺擞泴ο鬄闊o 效。例如,將標志設置為向緩存管理器232表示對象為無效的任何值。在另一實施例中,通 過將對象移至用于存儲無效對象的區(qū)域或緩存器的一部分而將對象標記為無效。在其他實 施例中,通過數(shù)據(jù)庫或鏈接列表或任何類型和形式的數(shù)據(jù)結構,緩存管理器232識別或跟 蹤所存儲對象的無效和/或有效狀態(tài)。在某些實施例中,緩存管理器232使用一個或多個 對象以識別或跟蹤緩存器中所存儲的一個或多個對象的有效或無效。在另一實施例中,通 過改變、修改或變更所存儲的對象,例如刪除或移除不使用的對象的一部分,或通過改變或 破壞對象名稱而將對象標記為無效。在某些實施例中,裝置104隨后從緩存器刷新標記為無效的那些對象。在另一實 施例中,一旦諸如由客戶端102a-102n請求對象,則裝置104從緩存器中刷新無效對象。在 某些實施例中,裝置104使用對象的更新副本或版本重寫無效對象。在另一實施例中,裝置 104通過將另一動態(tài)產(chǎn)生的對象存儲至緩沖存儲器的相同部分而再使用無效對象所占用的 存儲器。使用本發(fā)明的緩存管理器232的命令無效API,與裝置104通信的任何計算設備或 用戶請求無效緩存器中存儲的對象,諸如動態(tài)產(chǎn)生的對象。因此,可以實時控制緩存器中存 儲的對象的無效,而不是使用預定配置期限或無效時間段。因此,使用這些技術,可以從諸 如數(shù)據(jù)庫或始發(fā)應用服務器之類的外部應用處理節(jié)點控制緩存對象的壽命。因此,裝置104 可以配置為與數(shù)據(jù)庫一起工作使得數(shù)據(jù)庫的變化自動觸發(fā)從數(shù)據(jù)庫(或應用)到裝置104的 無效命令用于刷新特定對象或多個對象。4.使用無效命令來無效組
在本發(fā)明的另一實施例中,裝置104同時識別并無效由緩存器所存儲的對象組。在確 定對象是否“陳舊”時,在常規(guī)緩沖存儲器中存儲的對象中的每一個由緩存器單獨地且分別 地處理。當每個對象達到它的指定期限時間(一般由服務器設置并由緩存器保存在表中) 時,從緩沖存儲器刷新該項。然而,該常規(guī)方法是效率低的并最終不能成功處理在試圖緩存 動態(tài)產(chǎn)生的對象中出現(xiàn)的各種挑戰(zhàn)。圖4B示出了用于維持諸如計算機存儲緩存器之類的緩存器的本發(fā)明的方法的另 一實施例,其中裝置104具有產(chǎn)生、存儲并無效之前已從始發(fā)服務器106a-106n提供的相關 對象組的能力。簡單概括,在步驟410,在緩存器中存儲諸如從始發(fā)服務器106a-106n提供 的動態(tài)產(chǎn)生的對象之類的對象。在步驟412,緩存管理器232形成在緩存器中存儲的,之前 提供的對象組。在一個實施例中,所述組與一個或多個對象決定因素相關聯(lián)或由一個或多 個對象決定因素識別,正如將在下文更詳細地描述。在步驟414,緩存管理器232維持對象 組的記錄。在步驟422,緩存管理器232接收無效命令以無效對象組。在步驟432,緩存管 理器232響應于無效命令而將對象組標記為無效。步驟410與圖4A相同,其中在裝置104的緩存器中存儲諸如之前已從始發(fā)服務器106a-106n提供的動態(tài)產(chǎn)生的對象之類的對象。在某些實施例中,一個或多個對象沒有被識 別為可緩存的,或者另外不具有任何緩存器或緩存控制器信息。例如,服務器106a-106n假 定動態(tài)產(chǎn)生的對象將不能被緩存。根據(jù)步驟412,裝置104從之前從始發(fā)服務器106a-106n提供的并存儲在緩存器 中的對象集合中形成一組。任何合適或所需對象集合可以互相關聯(lián)以形成一組。例如,為 提供網(wǎng)頁而產(chǎn)生的或與提供網(wǎng)頁相關聯(lián)的任何動態(tài)產(chǎn)生的對象可以形成一組。在某些實施 例中,對象可以與多個組相關聯(lián)。在其他實施例中,一個對象組可以形成另一個對象組的子 集。在某些實施例中,所形成的對象組具有從相同服務器106a-106n提供的對象,而在其他 實施例中,所形成的對象組具有從不同服務器106a-106n提供的對象。在其他實施例中,所 形成的對象組可以包含來自客戶端10加-10211的對象、來自服務器106a-106n的對象或由 客戶端102a-102n和服務器106a-106n 二者產(chǎn)生或提供的對象。在一個實施例中,組中的 一個對象是靜態(tài)的而組中的另一個對象是動態(tài)產(chǎn)生的。在某些情況下,組中的一個對象識 別為不可緩存的而組中的另一個對象被識別為可緩存的。在其他情況下,組中的對象根據(jù) 服務器106a-106n提供的功能或應用是邏輯相關的。在另一情況下,組中的對象當與相同 客戶端102a-102n或相同用戶相關聯(lián)時是相關的。在步驟414,保持對象組的記錄。在實施這里所述的本發(fā)明操作中可以使用用于記 錄和保存對象組的記錄或者另外關聯(lián)對象的各種技術。在一個實施例中,記錄可以直接保 持在例如查詢表中。在另一實施例中,記錄可以以散列表的格式表示。在某些實施例中,緩 存管理器232保持數(shù)據(jù)庫中對象的關聯(lián)或存儲器中數(shù)據(jù)結構或?qū)ο?。在其他實施例中,?組中的每個對象的標志、特性或?qū)傩灾付ńo或設置為識別該組的值,諸如等于識別或引用 組的名稱或識別符的值,諸如下文更詳細描述的組的對象決定因素。在某些實施例中,在識 別為占有該組的緩沖存儲器的一部分中配置、放置或定位對象的組。在步驟422,在裝置104或緩存管理器232上接收無效命令。根據(jù)圖4B所述的實 施例,無效命令識別一個或多個對象是無效的,或否則是“陳舊的”。在某些實施例中,無效 命令引用、識別或指定對象組的名稱或識別符。在一個實施例中,無效命令包括單個無效請 求以無效組中的所有對象。在另一實施例中,無效命令識別組中的一個對象以無效。在其 他實施例中,無效命令包括多個無效請求以無效組中的多個對象。根據(jù)步驟432,如果無效命令引用、識別或指定組的對象為無效、組中每個對象為 無效或組為無效,則將之前提供的對象組標記為無效。在某些實施例中,如果無效命令將組 中的對象識別為無效,則緩存管理器232將對象標記為無效。在其他實施例中,如果無效命 令將組中的對象識別為無效,則緩存管理器232將組的對象標記為無效或?qū)⒔M中的每個對 象標記為無效。在其他實施例中,當借助一個或多個無效命令而將多個對象識別為無效時, 緩存管理器232僅僅無效對象的組。在另一實施例中,無效命令指定組的名稱或識別符,以 及緩存管理器232將組標記為無效、或?qū)⒔M中的每個對象標記為無效。在一個實施例中,裝置104或緩存管理器232從緩沖存儲器中刷新已被標記為無 效的對象組。在某些實施例中,只有當組中的每個對象被標記為無效時才從緩存管理器刷 新組中的對象。在其他實施例中,如果組的一個對象被標記為無效,則刷新整個組。在另一 實施例中,一旦由客戶端102a-102n接收對對象組或組的任何對象的請求,則刷新被標記 為無效的對象組或組中的任何對象。在其他實施例中,一旦從服務器106a-106n接收到提供組中一個或多個新對象的響應,則刷新被標記為無效的對象組或組中的任何對象。如下是上述實施例的示例。許多商業(yè)使用客戶資源管理(“CRM”)應用來跟蹤和評 價資源管理的所有方面。經(jīng)常,通過專用網(wǎng)絡和包括因特網(wǎng)的公用網(wǎng)絡實施并訪問CRM應 用。因此,這些應用(其對被頻繁訪問的大量數(shù)據(jù)提供訪問)受益于緩存由該應用產(chǎn)生的數(shù) 據(jù)。例如,通常產(chǎn)生銷售報告并將之提供至遠程連接的用戶。由相關應用通過編輯來自銷 售信息的數(shù)據(jù)而產(chǎn)生這些銷售報告,所述銷售信息被提交到該應用服務器和/或他們潛在 的數(shù)據(jù)庫。當許多用戶請求相同文檔(即,特定銷售報告)時,在沒有緩存的情況下,應用服 務器必須為每個請求重新產(chǎn)生對象,然而,如果在緩存器存儲該對象,則保存應用和數(shù)據(jù)庫 處理,包括可能有價值的帶寬,如同緩存器鄰近請求的客戶端。緩存該對象出現(xiàn)各種挑戰(zhàn),因為每次當新的銷售被提交到在始發(fā)服務器(或它潛 在的數(shù)據(jù)庫)上運行的應用時,都需要更新銷售報告中的信息。因此,必須無效在支持這些 應用服務器的緩存器中存儲的所有銷售報告并從緩沖存儲器刷新內(nèi)容。然而,緩存的常規(guī) 方法沒有辦法正確地確定潛在的數(shù)據(jù)庫或應用的改變何時發(fā)生并因此不能合理評價動態(tài) 內(nèi)容的“新鮮性”。每當數(shù)據(jù)庫或應用或始發(fā)服務器中改變發(fā)生時,緩存器必須能夠識別已 發(fā)生改變,以及作為改變的結果應該無效哪個對象組。如上所述,產(chǎn)生無效命令可以滿足該 需求,該無效命令包含鏈接到之前提供的對象組的對象確定因素??梢栽趩蝹€體系層上形成多個相關對象組?;蛘撸纬勺訉ο蠼M以產(chǎn)生多個體系 層。在一個實施例中,由用戶預指定對象組或?qū)ο笞咏M。在另一實施例中,用戶能建立規(guī)則, 通過該規(guī)則裝置104自動形成相關對象組并使之與對象決定因素相關聯(lián)。5.識別客戶端請求或響應中的對象決定因素
本發(fā)明實施例也能通過產(chǎn)生對象組并實施參數(shù)化無效而解決能夠識別在始發(fā)應用服 務器106a-106n (和/或潛在數(shù)據(jù)庫)上受狀態(tài)改變影響的所有對象。在該實施例中,可以 通過例如來自客戶端的截取的HTTP請求而無效任何對象或預定對象組,以至緩存器解析 以便識別對象決定因素。術語“對象決定因素”指唯一地或按其他方式引用、識別或指定一 個對象或?qū)ο蠹系娜魏涡畔?、?shù)據(jù)、數(shù)據(jù)結構、參數(shù)、值、數(shù)據(jù)模式、請求、答復或命令。在 某些實施例中,對象決定因素是在通信中的字節(jié)或字符的模式,其與一個對象關聯(lián)或用于 唯一地識別該通信與該對象關聯(lián)或該通信引用該對象。在一個實施例中,對象決定因素表 示在始發(fā)服務器中對與對象決定因素相關聯(lián)的緩存管理器232中所存儲的之前提供的對 象組是否已經(jīng)或即將發(fā)生改變。在某些實施例中,對象組的對象是相關的,因為它們與至少 一個對象決定因素相關聯(lián)。下文將更詳細地描述對象決定因素的非限制性示例和它們用途 的進一步解釋。在當前實施例的某些實施例中,對象決定因素是在客戶端請求或響應中包括或嵌 入的特定預定參數(shù)或數(shù)據(jù)結構。在其他實施例中,客戶端10h-102n、服務器106a-106n或 裝置104在通信中嵌入一個或多個對象決定因素,諸如表示對象決定因素的預定字符串或 字符集。對象決定因素表示該請求是否具有使得在始發(fā)服務器106a-106n或與其鏈接的數(shù) 據(jù)庫中所存儲的對象狀態(tài)改變的效果。在一個實施例中,請求中對象決定因素的存在表示 對象已發(fā)生或即將發(fā)生改變。在另一實施例中,對象決定因素的句法(syntax)、結構、參數(shù) 或值表示對象已發(fā)生或即將發(fā)生改變。在一個實施例中,緩存器從客戶端102a-102n接收 對象請求。該請求包括緩存器識別將改變始發(fā)服務器或應用服務器的狀態(tài)的特定參數(shù)或值(對象決定因素),結果,其將由該始發(fā)服務器或應用服務器106a-106n之前產(chǎn)生的由緩存管 理器232存儲的特定相關對象變的“陳舊”。取決于用戶設置的無效策略,參數(shù)(對象決定因 素)需要無效由始發(fā)服務器之前提供并已由緩存器存儲的一個或多個對象或?qū)ο蠼M。緩存 器被配置以識別受該狀態(tài)改變影響的相關對象(即,鏈接到對象決定因素的那些對象或?qū)?象組),并借助用于將每個對象標記為無效和/或從緩沖存儲器刷新該對象的方法而無效這 些對象。上述技術在圖4C中描述。如這里所述的其他實施例,步驟410包括在緩存器中存 儲諸如之前從始發(fā)服務器提供的動態(tài)產(chǎn)生的對象之類的對象。對象可以由在始發(fā)服務器 106a-106n上運行的應用產(chǎn)生,或例如可以從始發(fā)服務器106a-106n訪問的數(shù)據(jù)庫提取。在 某些實施例中,動態(tài)產(chǎn)生的對象被識別為不可緩存的或另外不被識別為可緩存的。根據(jù)步驟421,緩存器截取或另外接收客戶端和服務器之間的通信,諸如來自客戶 端的請求或來自服務器的響應等。在某些實施例中,請求針對特定對象,該對象之前已提供 并存儲在緩存器中。在另一實施例中,通信包括來自具有所請求對象的服務器的響應。在 一個實施例中,根據(jù)建立的緩存協(xié)議和通信標準發(fā)生該接收或截取。雖然緩存管理器232 或裝置104—般被描述為接收請求、響應或通信,在接收該請求、響應或通信中,即使沒有 直接或明顯地傳送到緩存器,緩存器232或裝置104也能由任何合適裝置和/或機制截取 或獲取該請求、響應或通信。在步驟423,在截取的通信中識別對象決定因素。緩存管理器232提取、解釋、解 析、訪問、讀取或另外處理截取的通信以確定或識別通信中的一個或多個對象決定因素。通 信的任何參數(shù)、值、句法、數(shù)據(jù)、結構或一個或多個字符集都可以用于識別對象決定因素。在 一個實施例中,緩存管理器232識別從客戶端102a-102n到服務器106a-106n的請求中對 象的名稱或識別符,其中,客戶端請求對象。在另一實施例中,緩存管理器232識別客戶端 102a-102n的請求中或來自服務器106a-106n的響應中第一個對象的名稱或識別符,其表 示對于緩存器中所存儲的第二個對象已經(jīng)發(fā)生或即將發(fā)生改變。在其他實施例中,緩存管 理器232確定請求中任何字符模式是否匹配與緩存器中對象或?qū)ο蠼M相關聯(lián)的任何對象 決定因素。在某些實施例中,為沒有當前存儲在緩存器中的對象確定對象決定因素。在其 他實施例中,可以為當前標記為無效的對象確定對象決定因素。在其他實施例中,所請求對 象的對象決定因素被確定與緩存對象的對象決定因素相關聯(lián)。在另一實施例中,一旦第一 引用、請求或響應通信中對象,緩存管理器232將識別的對象決定因素確認為該對象的對 象決定因素。通過接收或解析諸如客戶端請求或服務器響應之類的通信以識別對象決定因素, 緩存管理器232或裝置104能有效地確定是否將與所識別的對象決定因素相關的緩存對象 標記為無效。因此,根據(jù)步驟425,確定對象決定因素是否表示緩存對象發(fā)生改變。在某些 實施例中,所識別的對象決定因素是沒有改變、修改或產(chǎn)生對象的部分通信。在其他實施例 中,所識別的對象決定因素是表示對于與對象決定因素相關聯(lián)的對象已經(jīng)或即將發(fā)生改變 的部分通信。例如,通信可以是對于動態(tài)產(chǎn)生對象的得到請求或?qū)⒏淖冇糜谝粋€或多個動 態(tài)產(chǎn)生對象的數(shù)據(jù)的提交請求。在某些實施例中,通信中對象決定因素的存在表示在一個 或多個對象上已經(jīng)或即將發(fā)生改變。在另一實施例中,通信中命令、指示或指令的類型或名 稱以及對象決定因素表示在一個或多個對象上已經(jīng)或即將發(fā)生改變。在另一實施例中,命令、指示或指令的參數(shù)或變量的存在、值或設置表示在與對象決定因素相關聯(lián)的一個或多 個對象上已經(jīng)或即將發(fā)生改變。在其他實施例中,緩存管理器232對截取的通信或?qū)ο鬀Q定因素執(zhí)行散列函數(shù)、 算法或操作以確定對象中是否已經(jīng)發(fā)生改變。在某些實施例中,散列值與該對象的之前存 儲的散列值比較,并且如果不同那么緩存管理器232識別對象已改變。在另一實施例中,對 象的散列值包括在通信或?qū)ο鬀Q定因素中。在一個實施例中,通信表示對象已通過參數(shù)的 值或設置而改變,諸如使用布爾標記。在其他實施例中,下文更詳細描述的實體標簽控制和 有效機制能用于識別對象并確定對象是否改變。如果表示已改變,那么在步驟431與對象決定因素相關聯(lián)或由對象決定因素識別 的對象被標記為無效。在某些實施例中,由截取的通信所請求的對象根據(jù)步驟431被標記 為無效,并根據(jù)步驟440從始發(fā)服務器106a-106n中被檢索。另外,在其他實施例中,根據(jù) 步驟450從緩存器中檢索請求的對象。在一個實施例中,從緩存器中刷新被標記為無效的 任何對象。6.根據(jù)對象決定因素無效對象組
本發(fā)明的上述實施例描述了根據(jù)客戶端請求中對象決定因素的識別而無效緩存管理 器232中之前提供的對象的情況。在另一實施例中,該一般概念也用于識別并無效與一個 或多個對象決定因素相關聯(lián)的對象組。該實施例在圖4D中示出。圖4D中所述方法以與圖4C的方法相同的形式開始。步驟410包括在緩存器中存 儲諸如之前從始發(fā)服務器提供的動態(tài)產(chǎn)生的對象之類的對象。在某些實施例中,一個或多 個對象沒有被識別為可緩存的。根據(jù)步驟412并類似于圖4B,之前提供的對象形成組。在 一個實施例中并根據(jù)本發(fā)明的對象決定因素技術,對象組與至少一個對象決定因素相關聯(lián) 并由至少一個對象決定因素識別。如下文更詳細地描述,在某些實施例中,組與對象決定因 素的關聯(lián)性取決于用戶緩存策略的特性和細節(jié),諸如由策略引擎236定義、控制或使用的 策略。在其他實施例中,組的一個或多個對象決定因素包括組中對象的一個或多個對象決 定因素。在另一實施例中,組的對象決定因素包括組中對象的對象決定因素的組合。根據(jù)步驟414,如果合適時維持組的記錄,以及其相關的對象決定因素。該步驟類 似于圖4B所示的步驟414。在一個實施例中,在查詢表中維持組的記錄和/或任何對象決 定因素。在其他實施例中,以散列表的格式維持組的記錄和/或任何對象決定因素。散列 表被設計以有效地存儲在它們的字母和數(shù)字序列中有寬闊間隙的非連續(xù)鍵。在另一實施例 中,在散列表的頂端建立索引系統(tǒng)。在某些實施例中,緩存管理器232維持作為一組的對象 與數(shù)據(jù)庫中一個或多個對象決定因素的關聯(lián)性、或存儲器中的數(shù)據(jù)結構或?qū)ο?。在其他?施例中,將組中的每個對象的標志、特性或?qū)傩灾付ńo或設置為識別該組的值,諸如等于識 別或引用組的名稱或識別符,或組的對象決定因素的值。在某些實施例中,在識別為占有該 組的緩沖存儲器的一部分中配置、放置或定位對象的組。在另一實施例中,一個或多個對象 決定因素被存儲以與對象組相關聯(lián)。步驟421和423類似于圖4C中所示的步驟421和423。根據(jù)步驟421,緩存管理 器232或裝置104截取或另外接收客戶端102a-102n和服務器106a-106n之間的通信,諸 如來自客戶端的對于之前提供的并在緩存器中存儲的對象的請求。在一個實施例中,緩存 管理器232截取從客戶端102a-102n到服務器106a-106n的請求。在某些實施例中,請求實施例中,該請求是到服務器106a-106n的指令、命令或 指示,其使得緩存器中存儲的對象發(fā)生改變,諸如使得對象被動態(tài)產(chǎn)生。在另一實施例中, 緩存管理器232截取從服務器106a-106n到客戶端10加-10211的響應,該響應包括或識別 緩存器中所存儲的對象。在步驟423,在截取的通信中識別對象決定因素。如上所述,對象決定因素表示在 始發(fā)服務器106a-106n上請求對象中是否已經(jīng)或即將發(fā)生改變。然而,在圖4D的實施例中, 對象決定因素與對象組相關聯(lián)。這樣能高效地無效緩存器中存儲的受特定對象決定因素影 響的所有對象。在某些實施例中,識別組中的對象的對象決定因素。在其他實施例中,識別 對象決定因素,例如對于對象組的組對象決定因素。在另一實施例中,識別組中一個或多個 對象的對象決定因素的組合。因此,根據(jù)步驟427,確定對象決定因素是否表示之前提供的對象組中的改變。在 某些實施例中,截取的通信中組的對象決定因素的存在表示對于組中一個或多個對象或所 有對象已經(jīng)或即將發(fā)生改變。在其他實施例中,截取的通信中的命令、指示或指令的名稱和 類型表示該改變。在另一實施例中,通信中任何參數(shù)或變量的存在、值或設置也表示該改 變。如果在步驟427,對象決定因素表示組中的改變,那么根據(jù)步驟435將緩存器中之 前提供的對象組標記為無效。在某些實施例中,根據(jù)步驟440從始發(fā)服務器106a-106n請 求或檢索組的一個或多個對象或所有對象。如果在步驟427,對象決定因素并不表示組中的 改變,則在某些實施例中,根據(jù)步驟450從緩存管理器232檢索請求作為部分的截取通信并 之前提供以及存儲在緩存器中的任何對象。在一個實施例中,由緩存管理器232從緩存器 中刷新被標記為無效的任何對象或?qū)ο蠼M。7.組的指定
緩存器管理員會具體地指定將哪些對象包括在特定組中。無論何時在緩存器中存儲對 象,管理員可以根據(jù)配置使得對象成為一個所配置的或固有的組中的成員。所配置的組可 以根據(jù)管理員之前確立的配置或可替換地根據(jù)應用行為和涉及對象無效的其他數(shù)據(jù)。如果 對象的配置組是動態(tài)的,則對象也可以是固有組的一部分。由重要的無效參數(shù)的值分組固 有組中的對象。通過允許非常靈活的對象分組,緩存器可以使得無效具有靈活性和協(xié)調(diào)性,這是 高效地緩存動態(tài)產(chǎn)生的內(nèi)容所必需的。緩存器可以同時無效非常具體的對象組,因此使得 緩存器更加響應無效動態(tài)產(chǎn)生的內(nèi)容的頻繁需要。當緩存器將對象指定給一個組時,該組 確定與該對象相關的若干事件,包括無效參數(shù)和命中決定因素,以便使其與一個或多個對 象決定因素相關聯(lián)。在客戶資源管理(“CRM”)示例中,緩存器管理員預定每個分組。例如,管理員配置 緩存器以通過名稱分組每個銷售部門。因此,管理員可以指定汽車部、機車部、等,并且每次 在進入緩存器的請求中識別對象決定因素時,緩存器可以借助對象決定因素無效鏈接到合 適部門的指定組中所存儲的所有對象。8.基于規(guī)則的分組
可替換地,緩存器管理員能建立一些規(guī)則,這些規(guī)則允許緩存器裝置確定在運行中哪 些對象包括在特定一個組或多個組中。該基于規(guī)則的分組根據(jù)所建立的規(guī)則依賴于組的指定,所述建立的規(guī)則將對象鏈接到重要對象決定因素,緩存器利用該重要對象決定因素產(chǎn) 生相關組。該方法的示例涉及利用緩存器識別將哪些對象放入每個組所使用的規(guī)則來配置 緩存器。再次參見CRM示例,規(guī)則表明緩存器應該將應用上設置的銷售部門的每個子部門 識別為它本身的分組。這樣,可以產(chǎn)生分組,而不需要緩存器管理員必須具體地識別每個分 組而是允許緩存器根據(jù)相關規(guī)則確定。該技術產(chǎn)生了一種更靈活并通常更少工作量的加強 方式以指定分組。緩存器管理員可以配置一個規(guī)則,該規(guī)則表明銷售的每個子部門(即,銷 售\汽車、銷售\摩托車等)應該由緩存器產(chǎn)生新的分組。當由應用借助緩存器處理并返回 來自汽車銷售部的請求時,緩存器可以識別銷售的每個子分組并根據(jù)預先配置的規(guī)則自動 地為其產(chǎn)生分組。每當緩存器發(fā)現(xiàn)對于類型報告/銷售/汽車或報告/銷售/摩托車等的對象的新 請求時,由該緩存器實施規(guī)則。當摩托車銷售部請求表示它是銷售部的子分組,然后是自行 車銷售部等時重復該處理,因為緩存器識別這些子分組并為它們中的每個確立對象分組。 當已知無效請求到達鏈接到這些分組之一的緩存器時,或如果在客戶端請求中識別相關對 象決定因素(例如,在解析請求中發(fā)現(xiàn)銷售報告提交到摩托車銷售部銷售/摩托車),則緩存 器知道無效摩托車銷售部分組中的所有緩存對象。這樣,當緩存器識別到應用提供的數(shù)據(jù)已經(jīng)或即將發(fā)生改變(或者因為緩存器識 別到緩存器所接收的請求內(nèi)容將觸發(fā)應用的改變,或者因為發(fā)生某些外部改變)時,上述技 術能通過分組處理使得緩存器快速簡單地識別哪些對象需要無效。這樣,緩存器能夠無效 因為應用或數(shù)據(jù)庫狀態(tài)的改變而不再“新鮮”的大量動態(tài)產(chǎn)生的對象。也可以使用智能統(tǒng)計引擎增強緩存器成功保存并從其緩沖存儲器提供動態(tài)產(chǎn)生 的內(nèi)容的能力,所述智能統(tǒng)計引擎檢查請求和響應業(yè)務的模式以便在一個時間段上確定能 提供最大緩存利益的對象集。該引擎可以或者集成在緩存裝置本身中,或者作為試探法在 單獨計算機中運行以選擇某些對象子集用于進一步調(diào)查以確定動態(tài)緩存的合適性。9.進一步使用對象決定因素
如上所述,對象決定因素可以是任何數(shù)據(jù)結構,其表示在始發(fā)服務器中對與對象決定 因素相關聯(lián)的緩存器中所存儲的之前提供的對象組是否已經(jīng)或即將發(fā)生改變??梢愿鶕?jù) 請求中嵌入的預定字符串值設置對象決定因素。例如當進來的請求具有特定USERID時, USERID可以鏈接到緩沖存儲器中的對象組,每次提交或其他請求來自該特定USERID時,所 述對象組應該被無效。對象決定因素的可能候選也可以包括使用初始提供對象的服務器的 服務識別符。服務識別符包含在HTTP請求中存在的服務IP地址、TCP端口和服務識別符。存在在請求中的另一可能對象決定因素是請求統(tǒng)一資源定位器(“URL”)。對于緩 存靜態(tài)對象的情形,請求URL—般足以唯一地識別對象。然而,對于請求動態(tài)產(chǎn)生的內(nèi)容, URL中存在的信息不足以識別緩存的對象。因此,緩存器必須檢查請求中的其他信息以尋找 包括在HTTP報頭、cookie報頭或其他自定義HTTP報頭中的對象決定因素。緩存器可以另 外在客戶端請求中的多個其他位置中尋找相關參數(shù)信息的子集,包括但不限制于在URL 查詢字符串中、在POST主體中、在cookie報頭中或在任何其他請求或響應報頭中。在解析用于對象決定因素的URL中存在的問題是URL和其他報頭除了包含與緩存 器決定相關的信息之外還包含許多信息。因此,緩存器必須能夠通過許多信息進行解析以便能夠識別合適的對象決定因素。此外,報頭中的數(shù)據(jù)經(jīng)常是任意排序的,這意味著在HTTP 報頭中放置該數(shù)據(jù)沒有標準方式并因此簡單的比較經(jīng)常不足以在該字符串中定位相關對 象決定因素。如果不存在預配置策略以將特定對象決定因素與緩沖存儲器中存儲的相關對象 或?qū)ο蠼M相匹配,則在另一實施例中緩存器仍能進行該確定。例如,緩存器能檢查并解析請 求的各種方面以尋找在該請求中是否發(fā)現(xiàn)任何其他對象決定因素和其是否用于將該請求 鏈接到應該被無效的緩沖存儲器中所保存的特定對象。可替換地,根據(jù)特定預定試探法,也 可以使得緩存器檢查對緩存器所確定的特定對象決定因素的請求有目的地鏈接到特定對 象或?qū)ο蠼M。例如,當對于更新與特定USERID相關的日歷的請求進入緩存器時,本發(fā)明的 實施例可以被設置以識別需要無效所有緩存的對象,該所有緩存的對象的USERID等于更 新日歷的請求的USERID并且該所有緩存的對象包含任何一個特定日期的用戶日歷。緩存器也假設對象決定因素以非指定的順序存在于URL主干(URL stem)、URL中 存在的查詢、POST主體中或cookie報頭中作為名稱=值或類似對的組。在一個實施例中, 假設查詢被格式化為名稱=值對的列表。因此,用戶可以配置哪些參數(shù)名是重要的。使 用首次它的訪問URL鎖住每個緩存的對象。URL看上去象/site/application/special/ file. ext pl=vl&p2=v2&p3=v3。/site/application/special/file. ext 是 URL 主 干。 pl=vl&p2=v2&p3=v3是URL查詢并包含參數(shù)值對。這些參數(shù)值對也存在于POST主體或 Cookie報頭中。在一個實施例中,用戶或管理員確立Pl和p2將是無效參數(shù)或?qū)ο鬀Q定因素。此后 緩存器將自動地分組具有匹配Pl和p2值的對象。實施該分組的一種方式是將Pl和p2映 射到數(shù)據(jù)庫表中的主關鍵字,即映射到表中的單獨可識別對象,緩存器知道如何引用這些 對象以便確定無效狀態(tài)。為了更新那些數(shù)據(jù)庫表中的某些內(nèi)容,為了反映緩存器中保存的 數(shù)據(jù)不再有效的事實,緩存器將指定Pl和P2的新值并當下次緩存器提供該內(nèi)容時識別該 新值時,它將知道無效其存儲器中保存的鏈接對象。當緩存器遇到該請求時,一旦看見更新 請求它就知道必須無效具有匹配Pl和P2值的組-因為緩存器知道起源中的數(shù)據(jù)將改變, 因此影響與那些Pl和P2對象決定因素相關的所有對象。為了解決其中管理員沒有將請求中嵌入的特定參數(shù)預配置為對象決定因素的更 復雜情況,緩存器可以利用用戶配置策略以從請求中提取相關對象決定因素用于幫助識別 何時無效對象的分組。然后決定因素字符串用于定位緩存器中保存的對象組并無效該對 象。這些對象決定因素可以用于配置緩存器以產(chǎn)生重要參數(shù)值的列表。如果引入的寫請求 具有對于重要參數(shù)的匹配值,那么應該無效約束這些參數(shù)名的對象??商鎿Q地,用戶可以指 定策略框架操作,該策略框架操作從請求中提取對象決定因素字符串。從寫請求中提取對 象決定因素字符串并無效具有匹配決定因素字符串的所有對象。在該可選方案中,請求到 達緩存器,緩存器確定請求字符串是否匹配無效策略。無效策略指定其中應該無效內(nèi)容組 的對象??商鎿Q地,緩存器可以使用在客戶請求中存在的任何其他用戶信息。如上所述,認 證和授權集成允許緩存器訪問用戶信息。如果緩存對象的相關分組被鏈接到用戶或用戶 組,則USERID或GR0UPID可以是決定因素之一。雖然用戶信息經(jīng)常是重要的對象決定因素, 但是用戶信息經(jīng)常不出現(xiàn)在HTTP請求中。在本發(fā)明的另一實施例中,本發(fā)明的動態(tài)緩存方面可以與本申請人的另一個專利申請相結合。為了實現(xiàn)該目的,參考申請?zhí)枮?1/169,002 的本申請人的上述待決專利申請(“the Integrated Caching patent (集成緩存專利)”)。 該申請描述了一種將緩存器和多種其他網(wǎng)絡組件相集成的系統(tǒng)和方法,該多種其他網(wǎng)絡組 件包括執(zhí)行特定種類的驗證、訪問控制和查帳(A A A)基礎結構的能力。根據(jù)由應用產(chǎn)生 的數(shù)據(jù)的安全級別被應用到而是從緩存器提供的數(shù)據(jù)。該技術允許應用能緩存以別的方式 不能被緩存的敏感、訪問控制的信息。本方法允許緩存器識別這樣的用戶,該用戶在HTTP請求中不包括可識別的用戶 信息但能借助在集成緩存專利中所述的AAA方法可識別。該方法能使緩存器通過檢查從 AAA處理共享的授權狀態(tài)信息而識別對特定請求的相關用戶。在另一實施例中,集成能使安 全策略應用到緩存器中保存的信息中以避免未授權用戶訪問緩存器中保存的信息。該方法還克服了以下事實提出的挑戰(zhàn)在緩存器能響應來自客戶端的相關請求之 前動態(tài)產(chǎn)生的數(shù)據(jù)的重要部分需要請求該數(shù)據(jù)的客戶端被授權以及認證。緩存器必須具有 授權由認證用戶進行的請求的能力以便應用可以緩存訪問控制的對象并通過將該動態(tài)緩 存的技術以及認證和授權信息相集成,可以實現(xiàn)該安全性。如果對于用戶或用戶組個人化 對象,則USERID或GR0UPID將是對象決定因素之一。因此,根據(jù)由應用產(chǎn)生的數(shù)據(jù)的安全 級別也應用到緩存信息。該技術允許應用能緩存以別的方式不能被緩存的敏感、訪問控制 的信息。最后,可以從請求中解析像日期時間、開始時數(shù)據(jù)庫狀態(tài)等的其他信息并將該信 息用作對象決定因素以確定緩存器中存儲的對象是否仍然有效。緩存器可以通過在對象組 中配置合適的期限行為而考慮該情況,所述對象組被配置對這種外部變量是靈敏的。為了進一步克服由以下事實提出的挑戰(zhàn)必須由緩存器解析和截取對動態(tài)內(nèi)容 的請求,根據(jù)本發(fā)明實施例的緩存器可以限制認為哪些參數(shù)是對緩存器的相關對象決定因 素。這樣,可以提高從緩存器提供對象而不是向可應用的應用服務器轉送該請求的成功率。 通過示例,來自客戶端的請求查詢包含城市和國家參數(shù)。然而,緩存器可以被配置以符合緩 存器保存內(nèi)容以識別可以對來自客戶端的請求提供響應的應用的需求,查詢表示來自給定 國家的所有客戶而不考慮城市值。為此,城市參數(shù)是不相關的,并且緩存器能識別該事實。 如果只有城市參數(shù)匹配而不管對國家參數(shù)指定什么,則可替換實施例涉及配置緩存器,以 便可以從緩存器提供響應??傊彺嫫鲗嵤┮话愕膮?shù)化對象匹配。在該方法中,緩存器被配置以識別請求 中信息的子集,該信息子集將用作對象決定因素并鏈接到特定對象,因此當識別該對象決 定因素時,緩存器可以在評價對象或?qū)ο蠼M是否仍“新鮮”并是否能夠從緩存器提供時使用 該出現(xiàn)(或反之沒出現(xiàn)該決定因素)。緩存器維持每次請求進入時它所查詢的表以檢查配置 參數(shù),用于確定請求的數(shù)據(jù)是否仍然“新鮮”,并其也允許緩存器將相關數(shù)據(jù)與緩沖存儲器 中保存的合適對象匹配。10.具體數(shù)
在另一實施例中,緩存器可以使用具體數(shù)以無效對象組。在由于起始狀態(tài)改變而緩 存器需要同時改變每個對象組的狀態(tài)的地方,具體數(shù)提供了一種用于實現(xiàn)該無效的簡單技 術。然而,識別每個對象并單獨改變狀態(tài)是保證緩存器中保存的數(shù)據(jù)的“新鮮性”的低效率 方法,而使用具體數(shù)提供一種更簡單高效的方法來無效對象組。當前實施例描述每個對象如何指向表示組的數(shù)據(jù)結構并因此服務器只需要發(fā)送一個命令,該命令改變該組的數(shù)據(jù)結 構中的狀態(tài)。當來自客戶端的對緩存對象的隨后請求到達時,緩存器必須首先判定狀態(tài)是 否改變。為此,緩存器查詢數(shù)據(jù)結構以參考組的狀態(tài)是否改變。為了有效地實施數(shù)據(jù)結構,緩存器必須能夠確定是否查詢狀態(tài)改變。因此,緩存器 必須能夠確定它是否已查詢組中的狀態(tài)改變。這正是具體數(shù)有用的地方。緩存器將動態(tài)產(chǎn) 生的對象關聯(lián)到內(nèi)容組中。可以通過具有特定索引值或數(shù)據(jù)結構中包含的“具體數(shù)”的散 列表查詢處理來表示這些內(nèi)容組中的每一個。此后,無論何時緩存器接收緩存器識別為引 起狀態(tài)改變的客戶請求時,客戶端解析對相關參數(shù)的客戶請求,根據(jù)識別的對象決定因素 而執(zhí)行散列查詢,并增加數(shù)據(jù)結構中的索引或具體數(shù)。每當客戶端請求保存在指定分組中 的對象時,緩存器對對象執(zhí)行散列算法,并比較它與該內(nèi)容組在數(shù)據(jù)結構中的原始保存值。 如果存儲的值與由緩存器對該對象計算的數(shù)值相同,那么緩存器知道該內(nèi)容保持“新鮮”并 可以提供給請求者。如果緩存器檢測到在為該對象計算的當前具體數(shù)和數(shù)據(jù)結構中為該內(nèi) 容組所保存的數(shù)之間的差異,那么緩存器知道保存的對象不再“新鮮”。然后,緩存器無效保 存的對象并將請求發(fā)送至應用服務器。當響應返回時,緩存裝置將在緩沖存儲器中保存新 的響應并將該響應再次鏈接到新的數(shù)據(jù)結構。此后,每當緩存器接收到對該分組中的對象 的請求時,緩存器可以進行比較并假設數(shù)據(jù)結構不再進一步改變,緩存器可以提供新保存 的對象。通過以該方式利用對象組的無效,緩存器可以非??焖俚責o效-并且花費的時間 是恒定的而不論無效的對象數(shù)量。通過該更快速更有效的無效處理,本發(fā)明的技術能使緩 存器更高效地處理動態(tài)產(chǎn)生的對象。該方法允許位于應用前方的緩存裝置更積極地保存和 提供動態(tài)產(chǎn)生的對象而不因為數(shù)據(jù)的快速改變而提供無效或“陳舊”的內(nèi)容。本實施例能 使緩存器提供頻繁或不可預知地改變的數(shù)據(jù),因此改進緩存器的性能。緩存器也能通過使 用用戶命令并同時檢查和分組各種網(wǎng)絡業(yè)務而無效緩存存儲器中保存的對象和對象組。11.閃速緩存器和閃速群
本發(fā)明的另一實施例還包括一種能夠增加緩存器命中率(hit rate)以極快改變動態(tài) 產(chǎn)生的對象的技術,所述動態(tài)產(chǎn)生的對象以別的方式是不能被緩存的。當緩存管理器232 從客戶端接收到對特定對象的第一請求時,緩存管理器232向始發(fā)服務器106a-106n轉送 該請求用于處理,因為作為首次請求,緩存管理器232還不具有該保存的對象。當產(chǎn)生響應 對象并然后通過緩存管理器232將該響應對象返回到請求的客戶時,緩存管理器232自動 保存對象的副本。隨著對象極快速地改變,與本發(fā)明相反的常規(guī)緩存器只是將所有響應傳 遞到始發(fā)服務器106a-106n用于處理,因為該內(nèi)容總是被假設不再“新鮮”,并因此對緩沖 存儲器不再有效。一方面,本發(fā)明針對一種“閃速緩存器”技術,用于在緩存管理器232或裝置104在 傳送或等待傳送對于對象的第一請求者的響應的處理期間處理對于由緩存管理器232接 收的對象的另外請求?,F(xiàn)在參考圖5,本發(fā)明的方法500描述了本發(fā)明的閃速緩存器技術。 簡單概括并根據(jù)圖1和2,在步驟510,本發(fā)明的緩存管理器232為由第一客戶端(例如圖1 所示的客戶端102a)所請求的對象接收來自始發(fā)服務器106a-106n的響應。該對象包含由 始發(fā)服務器106a-106n之一產(chǎn)生的動態(tài)產(chǎn)生的對象,以及來自始發(fā)服務器106a-106n的響 應包括該動態(tài)產(chǎn)生的對象。在步驟515,緩存管理器232諸如通過網(wǎng)絡堆棧、例如設備104的TCP/IP堆棧請求將響應傳送到第一客戶端。在步驟520,該響應可以被保存或保持在緩 沖器中同時等待傳送。例如,設備104調(diào)節(jié)到慢速連接或低寬帶客戶端10 的通信,并因 此設備104排隊表示響應的網(wǎng)絡分組。在步驟525,當?shù)谝豢蛻舳?0 的響應在緩沖器中等待傳送或另外在正傳送的 處理中時和/或在完成將響應傳送到第一客戶端10 之前,緩存管理器232從第二客戶 端102B接收對于對象的第二請求。在步驟530,緩存管理器232確定對象當前正在緩沖器 中,并從緩沖器中向第二客戶端102B提供對第二請求響應的對象。在一個實施例中,當設 備使用單個TCP/IP堆棧時,可以提供相同的對象用于傳送到第一客戶端10 和第二客戶 端102B。在步驟535,第一響應被傳送到第一客戶端102a,以及響應被傳送到第二客戶端 102B。在步驟M0,從緩沖器中移除第一客戶端102B的響應。在進一步的描述中,在步驟510,設備104,諸如由緩存管理器232,截取或另外接 收來自始發(fā)服務器106a-106n的響應,該響應是針對第一客戶端10 對一個對象(諸如動 態(tài)產(chǎn)生的對象)的請求。在一個實施例中,動態(tài)產(chǎn)生的對象諸如由始發(fā)服務器106a-106n識 別為不可緩存的,或另外不被識別為可緩存的。在某些實施例中,緩存管理器232從第一客 戶端10 接收請求并將該請求轉送到始發(fā)服務器106a-106n。在一個實施例中,在將請求 轉送到始發(fā)服務器106a-106n之前緩存管理器232為所請求的對象檢查緩存管理器232。 在某些情況下,緩存管理器232確定對象是無效的或已屆滿的。在其他情況下,緩存管理器 232確定對象沒有存儲在緩存管理器232中或另外在緩存管理器232中不可得。例如,已經(jīng) 刷新該對象或這是第一次從始發(fā)服務器106a-106n請求對象。在某些實施例中,響應包括 該對象,并在其他實施例中,響應指示狀態(tài),諸如關于對象的失敗或錯誤消息。在步驟515,提供對于由第一客戶端10 請求的響應用于傳送到第一客戶端 10加。在某些實施例中,設備104接收響應,并請求分組處理引擎MO以將響應傳送到客戶 端10加。在其他實施例中,緩存管理器232接收響應并請求分組處理引擎MO以將響應傳 送到客戶端10加。在一個實施例中,設備104包括一個網(wǎng)絡堆棧用于向客戶端102a-102n 接收和傳送網(wǎng)絡分組。在某些實施例中,網(wǎng)絡堆棧包括TCP/IP堆棧。在其他實施例中,設 備104包括多個網(wǎng)絡堆棧,每個堆棧都與一個或多個客戶端102a-102n相關聯(lián)或由一個或 多個客戶端102a-102n使用。如本領域技術人員能識別并理解的,一個或多個網(wǎng)絡堆棧與 內(nèi)核204、網(wǎng)絡端口 2 和/或分組處理引擎240相關聯(lián)。在步驟520,在向第一客戶端10 傳送在步驟515所請求的響應期間,設備104在 緩沖器中排隊、保持或另外保存響應。在某些實施例中,緩沖器是網(wǎng)絡堆棧,諸如TCP/IP堆 棧的一部分。例如,緩沖器包括在TCP/IP堆?;蚓W(wǎng)絡驅(qū)動器、濾波器或其他網(wǎng)絡相關軟件 中使用或由它們使用的數(shù)據(jù)結構,所述網(wǎng)絡相關軟件處理或操縱網(wǎng)絡堆棧的任何部分。在 其他實施例中,緩沖器是網(wǎng)絡端口 2 的一部分。在其他實施例中,緩沖器是分組處理引擎 240的一部分,或在其他實施例中,內(nèi)核包括緩沖器。緩沖器可以是位于設備105的任何部 分中的任何存儲器或儲存器元件。在許多實施例中,在緩沖器中排隊、保持或保存響應為一 個或多個網(wǎng)絡分組,諸如基于TCP/IP協(xié)議的分組。在一個實施例中,在一個或多個數(shù)據(jù)結 構中保持響應,所述數(shù)據(jù)結構提供本發(fā)明使用的緩沖器。如本領域技術人員能認識并理解 的,可以以任何合適的形式在緩沖器中排隊、保持或保存響應。而且,可以任意的、預定的、隱含的、明確的或以其他方式并使用任何合適的裝置和/或機制在任何時間段期間,在緩存器中保存或排隊響應。在一個實施例中,當網(wǎng)絡分組 根據(jù)傳送率、分組排隊率、網(wǎng)絡通信量和擁塞或任何其他網(wǎng)絡特性并如由設備104所確定 的內(nèi)容諸如通過分組處理引擎240和/或網(wǎng)絡端口 2 等待由設備104傳送時,在緩沖器 中保存響應。在另一實施例中,對于預定時間段,響應被保持在緩沖器中。在某些實施例 中,設備104根據(jù)客戶端網(wǎng)絡連接的諸如帶寬、連接類型等的特性或客戶端10 的特性排 隊、管理網(wǎng)絡分組并向客戶端10 傳送網(wǎng)絡分組。例如,對于客戶端10 來說,該客戶端 102a到設備104的連接比設備104到始發(fā)服務器106a-106n的連接慢,設備104能調(diào)節(jié)或 另外管理網(wǎng)絡分組到客戶端10 的傳送以便為客戶端10 提供所需性能或行為或者客戶 端10 的網(wǎng)絡連接。因此,設備104根據(jù)任何排隊或緩沖器管理邏輯、功能、規(guī)則或操作在 緩沖器中排隊或保持響應達所需時間段。在步驟525,當?shù)谝豢蛻舳?0 的響應保持在緩沖器、諸如TCP/IP堆棧的緩沖器 中、或正在傳送時或另外在完成將響應傳送到第一客戶端10 之前,設備104諸如通過緩 存管理器232截取或另外接收來自第二客戶端102B對于對象的第二請求,所述對象是針對 第一次請求從緩存管理器232獲取的。即,在一個實施例中,由第二客戶端102B請求的對 象保存在緩沖器中等待傳送。在某些實施例中,設備104對于第一客戶端10 所請求的相 同對象從多個客戶端102b-102n接收多個請求,所述相同對象目前正保持在緩沖器中以用 于傳送到第一客戶端10 或另外目前正傳送到第一客戶端102a。在某些實施例中,緩存管 理器232確定第二請求使用任何合適的裝置和/或機制、諸如這里所述的任何技術,例如使 用對象決定因素正在請求與第一請求相同的對象。在某些實施例中,裝置104或緩存管理 器232使用任何類型和形式的排隊機制而排隊第二請求和隊列中的任何其他請求。因此, 在一個實施例中,當裝置104或緩存管理器232代表服務器106a-106n排隊并響應請求時, 客戶端102a-102n不需要重新提交請求。在另一個實施例中,裝置104或緩存管理器232透 明地向客戶端102a-102n排隊和響應請求而不將請求提交到服務器106a-106n。裝置104 或緩存管理器232能在存儲器中使用諸如排隊、對象或數(shù)據(jù)結構的任何機制以排隊使用本 發(fā)明技術響應的來自客戶端10h-102n的請求。在步驟530,設備104確定由第二客戶端102b請求的對象在緩沖器保存的響應中 或在當前正傳送到第一客戶端10 的響應中。在某些實施例中,緩存管理器232確定對象 存儲在緩沖器中。在某些情況下,緩存管理器232首先為該對象檢查緩沖存儲器或儲存器, 并然后為該對象檢查緩沖器。在其他情況下,緩沖器被認為是用于緩存的對象的存儲位置, 該緩存的對象將由緩存管理器232搜索或管理。在其他實施例中,緩存管理器232請求分 組處理弓I擎242檢查對象是否在緩沖器中。在其他實施例中,緩存管理器232通過內(nèi)核204 的任何應用編程接口(API)檢查對象是否在緩沖器中。在某些情況下,緩存管理器232對 接到任何驅(qū)動器、網(wǎng)絡處理器、濾波器或操縱或處理網(wǎng)絡堆棧的任何部分的其他軟件以確 定對象是否在緩沖器中。繼續(xù)在步驟530,本發(fā)明提供緩沖器中存儲的或作為對第一客戶端10 的響應而 被傳輸?shù)膶ο笥糜陧憫诓襟E525來自第二客戶端102B的第二請求。在某些實施例中,設 備104諸如經(jīng)由分組處理引擎104通過使用緩沖器的任何部分和網(wǎng)絡堆棧的相關數(shù)據(jù)結構 而形成對第二請求的響應。在一個實施例中,對象在緩沖器中只保存一次,例如在單個網(wǎng)絡 堆棧配置中并用于形成網(wǎng)絡分組以分別傳送到第一客戶端10 和第二客戶端102B。在其他實施例中,來自緩沖器的對象的副本用于形成對第二請求的響應。在其他實施例中,從第 一網(wǎng)絡堆棧向第二網(wǎng)絡堆棧提供對象以形成第二客戶端102B的第二請求的響應。可以在 緩沖器中保持第一客戶端10 的響應,以及緩沖器中響應的任何部分或所有響應都用于 提供對第二客戶端102B的響應。在一個實施例中,在不修改的情況下可以使用在緩沖器中 保存的第一客戶端的響應以響應第二客戶端102B。在另一實施例中,緩沖器中保存的表示 第一客戶端10 的響應中的對象的數(shù)據(jù)被修改以提供對第二客戶端102B的響應。在本發(fā)明的方法500的步驟535,從設備104向第一客戶端10 傳送第一響應, 并從設備104傳送響應于第二客戶端102B的第二請求的第二響應。到第一客戶端10 和 第二客戶端102B的響應可以以任何順序、利用互相之間的任何時間間隔、使用相同網(wǎng)絡堆 棧267或不同網(wǎng)絡堆棧從設備104傳送。在某些實施例中,也在緩沖器中排隊、保持或保存 等待傳送的對于第二客戶端102B的響應。因此,可以通過在緩沖器中保存的并且還沒有傳 送、刷新、移除或另外不可使用的第一響應或第二響應提供對于相同對象的任何另外請求。在步驟M0,從緩沖器刷新或另外移除第一客戶端10 的響應。在某些實施例中, 如果第二客戶端102B的響應也被保存到緩沖器,則也移除第二客戶端的響應。在其他實施 例中,第二客戶端的響應仍然保持在緩沖器中并當從第三客戶端接收對于對象的第三請求 時使用第二客戶端響應再次實施方法500的步驟525至535。另一方面,本發(fā)明針對一種用于處理如下情況的“閃速群”技術,其中在該情況中 在服務器正處理并返回對第一請求者的響應對象期間裝置104或緩存管理器232接收對于 相同對象的另外請求,例如幾乎同時的請求。一旦由緩沖器響應所有該幾乎同時的請求,則 從緩沖存儲器立即刷新對象,而不需要另外期限時間或由應用或管理員進行的無效操作。 本發(fā)明的該技術能在極短的時間量內(nèi)緩存和提供對于對象的數(shù)據(jù),所述對象另外被認為是 不可緩存的。該方法在向大量并發(fā)用戶提供快速變化的數(shù)據(jù)的應用中產(chǎn)生巨大的改進,所 述應用諸如實時股票報價或快速變化的新聞報道。圖6描述了當本發(fā)明的緩存器響應第一請求而接收這樣內(nèi)容時向每個客戶端請 求者提供相同內(nèi)容所采取的步驟的方法600。簡單概述方法600,在步驟610,緩存管理器 232或裝置104從第一客戶端10 接收對于來自始發(fā)服務器106a-106n的對象的第一請 求,所述對象例如是動態(tài)產(chǎn)生的對象。在步驟615,緩存器將第一請求轉送給始發(fā)服務器 106a-106no當?shù)却龑Φ谝徽埱蟮捻憫獣r或在響應第一客戶端10 的第一請求之前,在步 驟620,緩存器從第二客戶端102b接收對于該對象的第二請求。在某些實施例中,緩存器并 不將第二請求轉送給始發(fā)服務器而是排隊第二請求。在步驟625,緩存器從始發(fā)服務器接收 對于第一請求的響應,并在步驟630,響應第一請求向第一客戶端10 以及響應第二請求 向第二客戶端102b傳送所接收的響應和/或響應中的對象。在步驟635,在完成將所接收 的響應和/或響應中的對象傳送給第一客戶端10 或第二客戶端102b之前緩存器從第三 客戶端102接收對于該對象的另外第三請求。在步驟640,緩存器也向第三客戶端102c傳 送所接收的響應和/或響應中的對象。一旦響應請求,則在步驟645緩存器從緩沖存儲器 中刷新對象,例如而不需要任何期限時間或應用、始發(fā)服務器或管理員進行的無效操作。在進一步的描述中并根據(jù)圖1和2、本發(fā)明的方法600的步驟610,在一個實施例 中,裝置104的緩存管理器232在客戶端10 和始發(fā)服務器例如106a之間通信期間的任 何時刻從客戶端10加-10211 (例如圖1中的客戶端10 )接收對于一個對象(諸如動態(tài)產(chǎn)生的對象)的請求。在一個實施例中,來自第一客戶端10 的請求可以是第一客戶端10 第 一次請求對象。在一個示例中,客戶端10 —旦連接到始發(fā)服務器106a則首次請求對象。 在另一示例中,緩存管理器232代表客戶端10 或任何其他客戶端102a-102n之前還沒有 緩存或請求來自始發(fā)服務器106a的對象。在其他實施例中,來自客戶端10 的請求是對 于之前請求對象的隨后請求。在其他實施例中,緩存管理器232之前已緩存在步驟610由 客戶端10 所請求的對象。因此,可以在客戶端102a-102n和始發(fā)服務器106a_106B之間 通信期間的任何時刻實施圖6所示的本發(fā)明的技術,而不論對象是否目前被緩存、之前已 經(jīng)被緩存或從未被緩存。在步驟615,緩存管理器232將請求從客戶端10 轉送到始發(fā)服務器106a。在一 個實施例中,緩存管理器232向始發(fā)服務器轉送該請求而不檢查對象是否保存在緩存管理 器232中。在某些實施例中,緩存管理器232首次檢查客戶端10 所請求的對象是否從緩 存管理器232可得,并如果不可得,那么向始發(fā)服務器106a轉送請求。在其他實施例中,緩 存管理器232檢查對象是否在緩存器中保存然而是無效或另外需要更新,或另外將被無效 或即將需要更新。在另一實施例中,緩存管理器232確定應該動態(tài)重新產(chǎn)生并從始發(fā)服務 器106a-160N提供緩存器中保存的動態(tài)產(chǎn)生的對象。因此,如果緩存管理器232確定應該 從始發(fā)服務器106a-160n請求對象,則緩存管理器232將請求從客戶端10 轉送到始發(fā)服 務器106a — 160η。在一個實施例中,緩存管理器232向始發(fā)服務器106a轉送從第一客戶 端10 接收的相同或原始請求。在另一實施例中,緩存管理器232發(fā)送對于對象由緩存管 理器232形成的請求,在由第一客戶端10 的請求中請求或識別該對象。當?shù)却齺碜允及l(fā)服務器106a_160N的對于第一客戶端10 的請求的響應時和/ 或在響應第一客戶端10 的請求之前,在步驟620,緩存管理器232截取或另外接收對于對 象的一個或多個另外請求,該對象在步驟610由第一客戶端10 的首次請求被識別、與該 首次請求相關聯(lián)或被請求。例如,在一個實施例中,緩存管理器232從第二客戶端102B接 收對于對象的第二請求,所述對象是由始發(fā)服務器106a響應首次請求而動態(tài)產(chǎn)生的。在一 個實施例中,裝置104或緩存管理器232使用任何類型和形式的排隊機制而排隊第二請求 和隊列中的任何其他請求。在某些實施例中,對于對象的第二和/或另外請求能近似同時 的發(fā)生或由緩存管理器232近似同時接收。在其他實施例中,可以在接收第一請求和從始 發(fā)服務器106a接收對于第一請求的響應之間的任何時刻由緩存管理器232截取或接收第 二和/或另外請求。在另一實施例中,在接收第一請求和向客戶端10 提供對于第一請求 的響應之間的任何時刻由緩存管理器232接收第二和/或另外請求。在一個實施例中,在響應第一請求之前,緩存管理器232并不轉送來自第二客戶 端102b對于對象的第二請求和/或來自任何其他客戶端102c-102n對于對象的任何另外 請求。在一個實施例中,在步驟625,緩存管理器232例如在裝置104中排隊或另外持有第 二和另外請求,直到接收到對于第一請求的響應。因此,對于第二客戶端102B透明的緩存 管理器232并不轉送第二客戶端的請求。然而,在某些實施例中,對于第二客戶端102B來 說看來好像例如正在由始發(fā)服務器106a-106n處理。在某些實施例中,來自第二客戶端10 的第二請求會請求與在步驟610的首次請 求相同的對象,但還包括對于靜態(tài)的、動態(tài)的或另外的另一對象或其他信息的另外請求。例 如,第二客戶端102B的請求包括多個請求。在這些實施例中,緩存管理器232識別與結合第一客戶端10 的首次請求已請求的對象相關的部分請求,并不處理所識別的部分直到接 收到對于第一請求的響應。對于來自第二客戶端102B的請求的其他部分,緩存管理器232 以任何合適的形式(例如通過這里所述的本發(fā)明的任何技術)處理這些其他請求。例如,第 二請求包括對于第二對象的請求,緩存管理器232為其請求來自始發(fā)服務器10h-102B的 第二對象或獲得來自緩存管理器232的第二對象。在步驟625,本發(fā)明的方法600接收對于第一請求的響應,所述第一請求在步 驟615轉送到始發(fā)服務器106a。在某些實施例中,響應包括對象,諸如由任何服務器 106a-106n動態(tài)產(chǎn)生的對象。在其他實施例中,響應包括到由緩存管理器232提取或另外獲 取的對象位置的指針。在其他實施例中,響應表示某些錯誤消息或另外表示不能提供所請 求的對象。在一個實施例中,緩存管理器232比較所接收的響應和對應的請求以確定響應 對于請求是否合適或恰當。在其他實施例中,緩存管理器232獲得響應(諸如動態(tài)產(chǎn)生的對 象)的內(nèi)容,并產(chǎn)生、修改或另外提供傳送給第一客戶端10 所需的響應。在步驟630,本發(fā)明的緩存管理器232使用對于第一請求所接收的響應和/或響應 中的對象以響應對于相同對象的第一請求和第二或另外請求。在一個實施例中,緩存管理 器232響應第一請求向第一客戶端10 傳送所接收的響應,并響應第二請求向第二客戶端 102B傳送所接收的響應。在另一實施例中,緩存管理器232向第一客戶端10 傳送所接 收的響應,但修改所接收的響應并響應第二請求向第二客戶端102B傳送所修改的響應。例 如,緩存管理器232修改對于第二客戶端102B的響應以包括會話信息或?qū)诘诙埱蟮?其他信息。在其他實施例中,緩存管理器232獲得從接收的響應所請求的對象,并產(chǎn)生、修 改或另外提供對應于第一請求和第二請求并包括對象的響應,諸如第一響應和第二響應, 并向第一客戶端10 和第二客戶端102B傳送對應響應。因此,緩存管理器232在響應來 自客戶端102a-102b對于對象的請求中使用從始發(fā)服務器106a-106n接收的對于第一請求 的響應的所有或任何部分。在某些實施例中,在從服務器106a接收對于第一請求的響應之后并在步驟625 完成將響應傳送給請求對象的第一客戶端102a、第二客戶端102b或任何其他客戶端 102a-102c之前,在步驟635緩存管理器232從其他客戶端102c-102n截取或另外接收對 于對象的另外請求。例如,緩存管理器232從第三客戶端102C接收對于對象的第三請求。 在這些實施例中,緩存管理器232使用來自始發(fā)服務器106a-106n的對于第一請求所接收 的并在步驟630傳送到客戶端10 和/或102b的所有或部分響應以響應這些另外請求。 在另一實施例中,緩存管理器232已經(jīng)完成將響應傳送到第一客戶端10 和第二客戶端 102b,并仍有任何響應在存儲器中或可另外獲得以使用借助于第一請求提供的對象而響應 第三客戶端102c的第三請求。因此,在步驟640,本發(fā)明的緩存管理器232可以響應第三請 求或進一步的另外請求,而不需要再次請求來自始發(fā)服務器的對象和/或不需要在緩存器 中存儲所請求的對象。在某些實施例中,裝置104或緩存管理器232排隊第二請求、第三請求或隊列中的 任何其他請求。因此,在一個實施例中,當裝置104或緩存管理器232代表服務器106a-106n 而排隊并響應請求時,客戶端102a-102n不需要再次提交請求。在另一實施例中,裝置104 或緩存管理器232排隊并響應對客戶端10加-10211透明的請求而不向服務器106a-106n提 交請求。裝置104或緩存管理器232使用諸如排隊、對象、或存儲器中的數(shù)據(jù)結構的任何機制以排隊來自客戶端10h-102n的請求用于使用本發(fā)明的技術來響應。另外,裝置102或 緩存管理器232以任何順序,而不需要以接收的順序或來自隊列的先入先出形式響應客戶 端請求。在步驟645,緩存管理器232刷新來自始發(fā)服務器106a的對于第一請求的響應、 對于客戶端請求的任何響應和/或由來自緩存管理器232的請求所請求的對象。在一個實 施例中,一旦完成傳送最后響應,諸如在一個實施例中的步驟630或在另一實施例中的步 驟640,緩存管理器232立即從緩存器刷新響應和/或?qū)ο蟆T谀承嵤├?,緩存管理?232在預定時間段(諸如根據(jù)期限時間)維持對象。在其他實施例中,緩存管理器232在緩 存器中維持對象直到始發(fā)服務器106a-160N無效對象。在另一實施例中,對象在存儲器或 儲存器中維持直到為了其他目的重寫或另外由緩存管理器232使用存儲器或儲存器。雖然上面關于從多個客戶端對于單個對象的請求而一般性地描述了本發(fā)明的方 法500和600的技術,但本領域的技術人員理解并認識到,本發(fā)明的閃速緩存器和閃速群處 理技術可以用于處理來自多個客戶端的單個請求或請求序列中的多個對象請求,其可以順 序、并發(fā)或近似并發(fā)或同時發(fā)生。因此,可以在網(wǎng)絡環(huán)境200中緩存管理器232或裝置104 的操作期間以任何頻率和以任何次數(shù)執(zhí)行實施方法500和600的多個示例。而且,來自每 個客戶端的每個請求或請求序列會請求不同的對象集,一個或多個客戶端請求的一個或多 個對象具有公共集合。例如根據(jù)本發(fā)明的閃速群技術,第一客戶端請求第一對象和第二對象,而第二客 戶端請求第二對象和第三對象,以及第三客戶端請求第一對象和第三對象。在某些實施例 中,本發(fā)明的緩存器使用多路復用和/或多路分解技術以對多個客戶端之間突出的多個請 求的每個對象請求一次對象,并相應地向每個客戶端提供相應響應。另外對于上面示例,緩 存器可以從始發(fā)服務器為第一客戶端和第三客戶端獲取一次第一對象、為第一客戶端和第 二客戶端獲取一次第二對象以及為第二客戶端和第三客戶端獲取第三對象。在某些實施例 中,當緩存器接收對于客戶端的一個或多個請求的所有對象時,緩存器向客戶端傳送相應 響應或多個響應。在其他實施例中,一旦由緩存器接收對象,則緩存器使用每個對象響應客 戶端。類似地,根據(jù)本發(fā)明的方法500的閃速緩存器技術,裝置的緩沖器包括等待傳送 的多個對象并由裝置接收對于那些對象的另外請求。在一個實施例中,本發(fā)明的裝置使用 單個TCP/IP堆棧,從所述堆棧中多個緩沖器與多個對象相關聯(lián)并在傳送期間臨時存儲多 個對象。因此,緩沖器中的第一對象用于響應來自第一客戶端和第二客戶端對于第一對象 的請求,以及緩沖器中的第二對象用于響應來自第三客戶端和第四客戶端對于第二對象的 請求,或響應來自第一客戶端或第二客戶端中任一個或兩者對于第二對象的請求。而且,如本領域技術人員將明白和理解的,可以互相結合或組合而實施本發(fā)明的 閃速緩存器和閃速群技術。例如,本發(fā)明的裝置能通過閃速緩存器技術而提供對來自緩 沖器對象的其他請求的響應,并確定緩沖器中的對象是無效的或另外需要從始發(fā)服務器請 求。在這點,裝置會通過請求來自始發(fā)服務器的對象而轉換到閃速群技術。然后,裝置使用 從始發(fā)服務器請求的對象以響應在裝置中接收并排隊的對象同時等待始發(fā)服務器響應的 其他請求。12. Etag 插入另一方面,本發(fā)明針對使用技術以通過在對客戶端的響應中插入諸如實體標簽和緩存 控制信息之類的信息而增加緩存器命中率以使緩存器能夠檢查在隨后請求中的命中。本發(fā) 明提供一種用于當始發(fā)服務器沒有將對象識別為可緩存時將動態(tài)產(chǎn)生的對象識別為可緩 存的技術。在某些實施例中,諸如處理對對象的HTTP請求和響應的實施例,本發(fā)明的技術 在響應中插入實體標簽或“etag”以對對象提供緩存控制,假定沒有來自始發(fā)服務器的實體 標簽和/或緩存控制信息。簡單參考本領域技術人員所知道的HTTP協(xié)議,"etag"是基于 HTTP消息的Kag報頭字段,其為諸如對象的請求變量提供實體標簽的當前值,并用于與來 自相同源的其他實體比較。Kag提供在HTTP協(xié)議中有效的機制。同樣,基于HTTP的消息包 括緩存-控制報頭字段以指定指示用于緩存機制以及請求/響應消息或通信鏈。緩存-控 制指示指定所需的緩存行為。現(xiàn)在參考圖7A和7B并根據(jù)圖1和2,步驟用于表示實施本發(fā)明的“Etag”技術的 實施例。簡單概括圖7A、本發(fā)明的方法700,步驟710接收具有由客戶端10加-10211所請求 的對象的響應,該對象是諸如從始發(fā)服務器106a-106n提供的并由裝置104的緩存管理器 232接收的對象。在步驟715,緩存管理器232確定來自響應的對象是否在標簽實體控制下 或另外具有實體標簽。如果對象不具有實體標簽,那么在步驟720,緩存管理器232為對象 產(chǎn)生實體標簽。在步驟725,緩存管理器232修改響應以提供包括緩存器所產(chǎn)生的實體標簽 的實體控制信息。在步驟730,緩存管理器232向緩存管理器232存儲具有實體標簽信息的 對象。在步驟735,緩存管理器232使用修改的響應而響應請求對象的客戶端10加-10211。 因此,客戶端10加-10211以對客戶端102a-102n透明的形式從緩存管理器232接收實體標 簽控制對象,以至客戶端102a-102n沒有意識到始發(fā)服務器106a-106n沒有提供具有實體 標簽信息的對象。在進一步的描述中,在本發(fā)明的步驟710,緩存管理器232針對客戶端102a-102n 對對象的請求接收來自始發(fā)服務器106a-106n的響應。在某些實施例中,從客戶端 102a-102n發(fā)送到服務器106a-106n、或從代表客戶端102a-102n的緩存管理器232發(fā)送到 服務器106a-106n的請求中接收響應。在一個實施例中,在為了匹配和/或有效對象檢查 緩存管理器232之后緩存管理器232從客戶端102a-102n到服務器106a-106n轉送請求。 在另一實施例中,緩存管理器232在實施結合圖6所述的本發(fā)明的閃速群技術期間請求來 自服務器106a-106n的對象。在方法700的步驟715,緩存管理器232確定在步驟710響應中接收的對象是否 在實體標簽控制下或具有實體標簽。在某些實施例中,緩存管理器232檢查、檢驗、驗證或 另外讀取提供響應的一個或多個分組的任何字段、報頭、數(shù)據(jù)或其他信息。如本領域技術人 員應該認識到并理解的,要檢查或讀取的一個或多個分組的一部分取決于用于響應的一個 或多個協(xié)議的類型。在一個實施例中,緩存管理器232確定響應分組的實體標簽部分正丟 失、為空或另外沒有提供。在另一實施例中,緩存管理器232確定響應分組的實體標簽部分 被破壞、無效或另外不能由緩存管理器232和/或客戶端102a-102B使用。在某些實施例 中,緩存管理器232確定響應具有實體標簽或在實體控制下但不是以緩存管理器232所需 的類型、形式或方式。除了實體標簽或替代實體標簽,緩存管理器232以類似于實體標簽的 形式確定是否在響應中存在所需的緩存-控制信息。在其他實施例中,緩存管理器232通 過策略引擎236確定對象是否應該在實體標簽和/或緩存控制下。因此,在某些實施例中,如果裝置104通過策略引擎236確定對象不應該在實體標簽或緩存控制下,則緩存管理器 232不繼續(xù)執(zhí)行本發(fā)明的etag技術,諸如步驟720至725。在步驟720,緩存管理器232為所接收響應的對象產(chǎn)生所需的實體標簽和緩存控 制信息。Kag包含任何類型和/或形式的實體標簽表示并在一個或多個字符中包含任何 數(shù)字、文字數(shù)字、字母。在HTTP的實施例中,etag包含字符串或引用的字符串,并進一步包 含前綴用于根據(jù)HTTP協(xié)議表示etag是弱的或強的。在某些實施例中,緩存管理器232使 用實體報頭、或etag計數(shù)器,其順序地或以任何所需增量增加etag計數(shù)器。在某些實施例 中,etag計數(shù)器對于所有對象是全局的,緩存管理器232為該所有對象產(chǎn)生etag。在其他 實施例中,緩存管理器232具有多個etag計數(shù)器,每個etag計數(shù)器與對象或?qū)ο蠼M相關聯(lián) 或特定于對象或?qū)ο蠼M。在一個實施例中,etag包含與對象相關聯(lián)的通用標識符(UID)或全局通用標識符 (⑶ID)。在另一實施例中,etag包含之前上文所述的具體數(shù)。在某些實施例中,緩存管理 器232從在裝置104上運行的應用、程序或其他形式可執(zhí)行指令獲取etag,或在其他實施例 中,從通過網(wǎng)絡由裝置104可訪問的另一系統(tǒng)或設備中獲得etag。在其他實施例中,緩存管 理器232使用任何合適的算法、商業(yè)規(guī)則或邏輯以便為對象產(chǎn)生所需的唯一 etag。在一個 實施例中,裝置104包含數(shù)據(jù)庫、文件、或其他有組織的存儲元件,用于為緩存管理器232產(chǎn) 生并維持對象的etag。在方法700的步驟725,緩存管理器232修改來自始發(fā)服務器106a-106n的響應以 包括所需的實體標簽和/或緩存控制信息,諸如在步驟720由緩存器產(chǎn)生的實體標簽。在 一個實施例中,緩存管理器232經(jīng)由協(xié)議(例如,HTTP協(xié)議)的實體標簽報頭插入實體標簽 信息。在另一實施例中,緩存管理器232修改響應中的任何實體標簽報頭字段以包括所需 的實體標簽。在又另一實施例中,緩存管理器232用緩存管理器232所需使用的實體標簽 字段代替響應中的實體標簽字段。在其他實施例中,將實體標簽信息插入、修改或放入一個 網(wǎng)絡分組或多個網(wǎng)絡分組的任何部分中用于將響應傳送到客戶端10加-10211。另外,步驟725,緩存管理器232插入、修改或另外放入任何所需的緩存控制信息 在協(xié)議的任何報頭、字段或網(wǎng)絡分組的任何其他部分中用于傳送響應。由緩存控制器232 通過任何合適的裝置和/或機制產(chǎn)生該緩存-控制信息。在一個實施例中,緩存-控制信 息被配置并通過設備104的策略引擎236獲取。在另一實施例中,緩存管理器232根據(jù)緩 存管理器232的任何算法、商業(yè)規(guī)則或邏輯確定所需的緩存-控制信息。在某些實施例中, 緩存-控制信息可以基于客戶端102a-102n和裝置104或緩存管理器232之間的網(wǎng)絡和緩 存性能的任何歷史。在本發(fā)明的方法700的步驟730,緩存管理器232以任何合適或所需的方式在緩存 管理器232中存儲產(chǎn)生的實體標簽和對象。在某些實施例中,實體標簽包括在存儲對象的 一部分中或成為存儲對象的一部分。在其他實施例中,單獨地但與對象相關聯(lián)保存實體標 簽。在另一實施例中,如本領域技術人員所知道的,通過數(shù)據(jù)庫、鏈接列表、查詢表或用于將 一個實體和另一個實體相關聯(lián)的任何其他機制,使實體標簽與對象相關聯(lián)。另外,在某些實 施例中,使用對象和/或?qū)嶓w標簽所提供的緩存控制信息還被存儲以與緩存管理器232中 的對象相關聯(lián)。在步驟735,緩存管理器232使得裝置104向客戶端106a-106n傳送修改的響應。例如,緩存管理器232請求分組處理引擎MO以向客戶端102a-102n傳送修改的響 應。因此,客戶端102a-102n接收具有實體標簽和緩存器控制信息的對象,即使對于客戶端 102a-102n未知,但在一個實施例中,始發(fā)服務器106a-106n并不產(chǎn)生該信息,或者緩存管 理器232改變由服務器106a-106n產(chǎn)生的該信息。本發(fā)明的etag技術可以確保每個對象 具有確認符、即etag或具有由緩存管理器232控制或另外需要的etag。如果對象不具有確 認符或所需的確認符,那么緩存管理器232就插入它自己的etag。這些etag確認符可以避 免對重復請求對象提供完整的響應,正如結合圖7B所討論的。圖7B描述了用于使用實體標簽以由客戶端102a-102n檢查對象是否被修改的本 發(fā)明的方法750。因此,客戶端102a-102n可以緩存客戶端102a-102n上的對象并利用緩存 管理器232或始發(fā)服務器106a-106n檢查對象是否被改變。簡單概括方法750,在步驟775, 緩存管理器232接收來自客戶端102a-102n的請求以檢查對象的實體標簽。在步驟760,緩 存器比較從客戶端10加-10211的請求所接收的實體標簽和緩存器中存儲的對象的實體標 簽。在步驟765,緩存管理器232確定來自客戶端的實體標簽是否匹配緩存器中的對象的實 體。如果實體標簽不匹配,那么在步驟770,緩存管理器232使用為對象提供當前實體標簽 的響應來響應客戶端10加-10211。如果實體標簽匹配,那么在步驟775,緩存管理器232使 用表示對象沒有被修改的響應來響應客戶端10加-10211。在進一步的描述中,在步驟755,緩存管理器232通過任何類型和/或形式的通信 接收來自客戶端10h-102n的請求以檢查或確認對象的實體標簽。在一個實施例中,請求 包含具有If-Match或If-None-Match請求報頭字段的HTTP消息,所述報頭字段包括由客 戶端102a-102n提供的實體標簽字符串值。例如,客戶端102a-102n在客戶端緩存器中具 有對象的副本或另外在客戶端102a-102n上可得到??蛻舳?02a-102n使用請求中對象的 客戶端副本的實體標簽以確定或確認對象是否是當前的。在步驟760,緩存管理器232比較從客戶端102a_102B接收的實體標簽值和對象的 實體標簽以確定緩存管理器232是否具有與客戶端102a-102n不同的對象版本。緩存管理 器232使用任何合適的裝置和/或機制以比較來自客戶端10加-10211的實體標簽值和緩存 對象的實體標簽值。在一個實施例中,緩存管理器232對于來自請求的etag值和與對象一 起保存在緩存器中的etag執(zhí)行位比較。在另一實施例中,緩存管理器232對實體標簽和/ 或緩存對象執(zhí)行并使用散列算法以確定對象是否被修改。在其他實施例中,緩存管理器232 請求來自服務器106a-106n的對象,并比較所接收的對象和緩存的對象以確定對象是否被 修改。如果在步驟765,來自客戶端10加-10211的實體標簽不匹配與對象一起保存在緩 存管理器232中的實體標簽,則在步驟770,緩存管理器232向客戶端發(fā)送一個響應,該響 應表示實體標簽不匹配或另外對象已經(jīng)被修改。在一個實施例中,緩存管理器232向客戶 端102a-102n發(fā)送一個響應,該響應為對象提供新實體標簽值。在另一實施例中,緩存管 理器232向客戶端102a-102n發(fā)送一個響應,該響應提供新版本的對象、或修改的對象,諸 如具有在緩存管理器232中保存的新實體標簽的修改對象。如果在步驟765,來自客戶端 102a-102n的實體標簽匹配與對象一起保存在緩存管理器232中的實體標簽,那么在步驟 775,緩存管理器232向客戶端發(fā)送一個響應,該響應表示實體標簽的確匹配或另外對象沒 有被修改。
雖然參考HTTP協(xié)議一般性地描述了本發(fā)明的etag技術,但是本領域技術人員應 該認識到并理解可以使用任何類型和/或形式的協(xié)議實施本發(fā)明以提供實體標簽和緩存 信息。在某些實施例中,協(xié)議不支持實體標簽和緩存信息字段,而在其他實施例中,協(xié)議支 持實體標簽和緩存信息字段。在任何這些實施例中,當服務器不在響應中提供該信息時或 當緩存器決定以裝置104控制或所需的方式改變或控制服務器提供的實體和緩存控制信 息時,本發(fā)明的技術提供實體標簽和緩存控制信息。為了解決動態(tài)緩存由原始服務器和應用動態(tài)產(chǎn)生的內(nèi)容時產(chǎn)生的挑戰(zhàn),本發(fā)明 的緩存裝置可以對諸如 Outlook Web Access、Oracle Configurator 禾口 Serena Team Track 之類的特定常用的應用包含預封裝的策略。使用對于這些應用處理數(shù)據(jù)的方式的理 解設計這些封裝,因此能使緩存器關于由在緩沖存儲器中保存的該應用產(chǎn)生哪個對象并且 保持該對象多久作出更明智的決定。D.示例性的基于計算機系統(tǒng)的實施例
本發(fā)明的功能可以使用硬件、軟件或其組合來實施或在一個或多個計算設備或其他處 理系統(tǒng)中實施。例如,圖8A和8B描述了用于實施本發(fā)明的任何技術、方法和功能的示例計 算設備800。因此,本發(fā)明的裝置104可以是計算設備800或經(jīng)設計和構造的特定目的的設 備以提供這里所述本發(fā)明的任何技術、功能和操作。圖8A和8B描述了計算設備800的框圖,并在某些實施例中,也被稱為網(wǎng)絡設備 800,用于實施本發(fā)明的實施例。如圖8A和8B所示,每個計算設備800包括中央處理單元 802和主存儲器單元822。如圖8A所示,常規(guī)計算設備800包括可視顯示設備824、鍵盤擬6 和/或諸如鼠標的指示設備827。每個計算設備800也包括諸如一個或多個輸入/輸出設 備830a-830b (—般使用附圖標記830)之類的另外可選組件,以及與中央處理單元802通 信的緩沖存儲器840。中央處理單元802是響應并處理從主存儲器單元822提取的指令的任何邏輯電 路。在許多實施例中,中央處理單元由微處理器單元提供,諸如由加利福尼亞的芒廷維尤 的htel公司制造的產(chǎn)品;由伊利諾斯州的紹姆堡的Motorola公司制造的產(chǎn)品;由加利福 尼亞州的圣克拉拉的Transmeta公司制造的產(chǎn)品;由紐約的懷特普萊恩斯的國際商業(yè)機器 公司制造的產(chǎn)品;或那些由加利福尼亞州的桑尼維爾的Advanced Micro Devices制造的產(chǎn) 品。計算設備800可以是基于任何這些處理器,或能夠如上述操作的任何其他處理器。主存儲器單元822可以是能夠存儲數(shù)據(jù)并允許直接由微處理器802直接訪問任 何存儲位置的一個或多個存儲器芯片,諸如靜態(tài)隨機存取存儲器(SRAM)、突發(fā)SRAM或同步 突發(fā)SRAM (BSRAM)、動態(tài)隨機存取存儲器(DRAM)、快速頁面模式DRAM (FPM DRAM)、增強的 DRAM (EDRAM)、擴展數(shù)據(jù)輸出RAM (EDO RAM)、擴展數(shù)據(jù)輸出DRAM (EDO DRAM)、突發(fā)擴展數(shù) 據(jù)輸出 DRAM (BED0 DRAM)、增強的 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PClOO SDRAM、雙數(shù)據(jù)率 SDRAM (DDR SDRAM)、增強的 SDRAM (ESDRAM)、同步鏈接 DRAM (SLDRAM), 直接Rambus DRAM (DRDRAM)或鐵電隨機存取存儲器(FRAM)。主存儲器822可以是基于任 何上述的存儲器芯片、或能夠如這里所述操作的任何其他可獲得的存儲器芯片。在圖8A所 示的實施例中,處理器802通過系統(tǒng)總線850與主存儲器822通信(下文將詳細描述)。圖 8A描述了其中處理器通過存儲器端口 803直接與主存儲器822通信的計算設備800的實施 例。例如,在圖8B中,主存儲器822可以是DRDRAM。
圖8B描述了其中主處理器802通過第二總線直接與緩沖存儲器840通信的實施 例,第二總線被稱為后端總線。在其他實施例中,主處理器802使用系統(tǒng)總線850與緩沖存 儲器840通信。緩沖存儲器840 —般比主存儲器822具有更快的響應時間并一般由SRAM、 BSRAM 或 EDRAM 提供。在圖8A所示的實施例中,處理器802通過局部系統(tǒng)總線850與各種I/O設備830 通信。各種總線用于將中央處理單元802連接到任何I/O設備830,包括VESA VL總線、ISA 總線、EISA總線、微通道結構(MCA)總線、PCI總線、PCI-X總線、PCI快速總線或NuBus。對 于其中I/O設備是視頻顯示器擬4的實施例,處理器802使用改進圖形端口(AGP)以與顯示 器擬4通信。圖8B描述了其中主處理器802通過HyperiTransport、快速I/O或hf iniBand 直接與I/O設備830b通信的計算機800的實施例。圖8B還描述了其中混合局部總線和直 接通信的實施例處理器802使用局部互連總線與I/O設備830a通信同時直接與I/O設備 830b通信。計算設備800可以支持任何合適的安裝設備816,例如用于接收諸如3. 5英寸盤、 5. 25英寸盤或ZIP盤之類的軟盤的軟盤驅(qū)動器、⑶-ROM驅(qū)動器、⑶-R/RW驅(qū)動器、DVD-ROM 驅(qū)動器、各種格式的磁帶驅(qū)動器、USB設備、硬盤驅(qū)動器或適于安裝諸如軟件820或其部分 之類的軟件和程序的任何其他設備,所述軟件或其部分涉及本發(fā)明或另外提供本發(fā)明的任 何技術。計算設備800進一步包括存儲設備828,諸如一個或多個硬盤驅(qū)動器或獨立冗余磁 盤陣列,用于存儲操作系統(tǒng)和其他相關軟件、并用于存儲諸如涉及本發(fā)明的軟件820的任 何程序之類的應用軟件程序。可選的,任何安裝設備816可以用作存儲設備828。而且,計算設備800包括網(wǎng)絡接口 818,以通過各種連接而對接到局域網(wǎng)(LAN)、廣 域網(wǎng)(WAN)或因特網(wǎng),所述連接包括但不限制于標準電話線、LAN或WAN鏈接(例如,802. 11、 Τ1、Τ3、561Λ、Χ. 25)、寬帶連接(例如,ISDN、幀延遲、ATM)、無線連接、或上述任何或所有連接 的某些組合。網(wǎng)絡接口 818包括內(nèi)置網(wǎng)絡適配器、網(wǎng)絡接口卡、PCMCIA網(wǎng)絡卡、卡總線網(wǎng)絡 適配器、無線網(wǎng)絡適配器、USB網(wǎng)絡適配器、調(diào)制解調(diào)器或任何其他設備,該任何其他設備適 于將計算設備800對接到能夠通信的任何類型網(wǎng)絡,并且執(zhí)行上述操作。大量I/O設備830a-830n存在于計算設備800中。輸入設備包括鍵盤、鼠標、跟 蹤區(qū)、滾動球、麥克風和繪畫寫字板。輸出設備包括視頻顯示器、揚聲器、噴墨打印機、激光 打印機和染料升華打印機。如圖8A所示,I/O設備由I/O控制器823控制。I/O控制器控 制諸如鍵盤擬6和指示設備827之類的一個或多個I/O設備,例如鼠標或光筆。而且,I/O 設備也為計算設備800提供存儲設備擬8和/或安裝介質(zhì)816。在其他實施例中,計算設 備800提供USB連接以容納手持式USB存儲設備,諸如由加利福尼亞洲的Ios Alamitos的 Twintech工業(yè)公司制造的設備的USB閃速驅(qū)動線。在其他實施例中,I/O設備830可以是系統(tǒng)總線850和外部通信總線之間的電 橋870,所述外部通信總線諸如USB總線、Apple Desktop總線、RS-232串行連接、SCSI 總線、Fireffire總線、Fireffire 800總線、以太網(wǎng)總線、AppleTalk總線、千兆位以太網(wǎng) 總線、異步傳輸模式總線、HIPPI總線、超HIPPI總線、serialPlus總線、SCI/LAMP總線、 FibreChannel總線或串行附加小型計算機系統(tǒng)接口總線。圖8A和8B中所述的種類的計算設備800 —般在操作系統(tǒng)的控制下操作,其控 制任務的調(diào)度并訪問系統(tǒng)資源。計算設備800可以運行任何操作系統(tǒng),諸如任何版本的Microsoft Windows操作系統(tǒng)、不同版本的Unix和Linux操作系統(tǒng)、用于Macintosh計算 機的任何版本的Mac OS 、任何嵌入式操作系統(tǒng)、任何網(wǎng)絡操作系統(tǒng)、任何實時操作系統(tǒng)、 任何開源操作系統(tǒng)、任何私有操作系統(tǒng)、用于移動計算設備或網(wǎng)絡設備的任何操作系統(tǒng)、 或能夠在計算設備上運行并執(zhí)行這里所述操作的任何其他操作系統(tǒng)。一般的操作系統(tǒng)包 括WINDOWS 3. χ、WINDOWS 95、WINDOWS 98、WINDOWS 2000, WINDOWS NT 3. 51、WINDOWS NT 4.0、WINDOWS CE以及WINDOWS XP,所有這些由華盛頓州雷蒙德的微軟公司制造;由加利福 尼亞州庫珀蒂諾的蘋果公司制造的MacOS ;由紐約的Armonk的國際商用機器公司制造的 OS/2 ;以及由猶他州的鹽湖城的Caldera公司發(fā)布的免費可得的操作系統(tǒng),Linux ;或它們 中的任何類型和/或形式的Unix操作系統(tǒng)。在其他實施例中,計算設備800具有與設備一致的不同處理器、操作系統(tǒng)和輸入 設備。計算設備800可以是任何工作站、桌上型電腦、膝上型電腦或筆記本計算機、服務器、 手持計算機、移動電話、任何其他計算機、或能夠通信并具有足夠處理器能力和存儲器能力 以執(zhí)行這里所述本發(fā)明操作的其他形式的計算或電信設備。而且,計算設備800可以是任 何類型和/或形式的網(wǎng)絡設備、諸如遠程訪問設備、虛擬專用網(wǎng)絡(VPN)設備、安全套接層 (SSL) VPN設備、路由器、交換機、電橋、或能夠執(zhí)行這里所述本發(fā)明的操作的任何形式的其 他網(wǎng)絡設備。雖然一般性地討論了本發(fā)明的裝置使用TCP/IP或借助TCP/IP通信,但是該裝置 可以使用任何修改的傳輸控制協(xié)議或與任何修改的傳輸控制協(xié)議通信,所述協(xié)議諸如事 務TCP (T/TCP)、具有選擇確認的TCP (TCP-SACK)、具有大窗口的TCP (TCP-LW)、諸如在 TCP-Vegas協(xié)議中的擁塞預測和TCP欺騙。此外,本發(fā)明的裝置可以使用任何節(jié)點間或高性 能協(xié)議。而且,本發(fā)明的裝置可以使用任何其他傳輸和網(wǎng)絡協(xié)議或利用任何其他傳輸和網(wǎng) 絡協(xié)議操作,所述協(xié)議諸如在因特網(wǎng)分組交換(IPX)協(xié)議上的序列分組交換(SPX)協(xié)議。結論
雖然上面已描述了本發(fā)明的各種實施例,但應該理解它們僅僅是示例性的而不是限制 性。因此,本領域技術人員應該理解在不背離附加權利要求限定的本發(fā)明的精神和范圍的 情況下可以在形式和細節(jié)上進行各種變化。因此,本發(fā)明的寬度和范圍不應該由上述示例 性實施例限制,而只應當根據(jù)下面的權利要求書和其對等物來限定。
權利要求
1.一種使用來自服務器的單個響應由介于服務器和多個客戶端之間的設備來響應于 來自不同客戶端的多個請求的方法,所述方法包括(a)由介于服務器和多個客戶端之間的設備將對于動態(tài)產(chǎn)生的對象的第一請求從第一 客戶端轉送到服務器;(b)在將對于第一請求的響應從服務器傳送到第一客戶端之前,由該設備從不同客戶 端接收對于由第一請求所請求的動態(tài)產(chǎn)生的對象的多個請求;(c)在等待對于動態(tài)產(chǎn)生的對象的第一請求的響應的同時,由該設備保持所述多個請求;(d)響應于從服務器接收到對于第一請求的響應,由該設備將該響應傳送到第一客戶 端,該響應包括所述動態(tài)產(chǎn)生的對象;以及(e)響應于從服務器接收到對第一請求的響應,由該設備使用來自對于第一請求的響 應的動態(tài)產(chǎn)生的對象,傳送對于所述多個請求中的每個的響應。
2.如權利要求1的方法,其中步驟(a)進一步包括響應于確定動態(tài)產(chǎn)生的對象不在該 設備的緩存器中,由該設備轉送來自客戶端的第一請求。
3.如權利要求1的方法,其中步驟(a)進一步包括響應于確定在該設備的緩存器中的 動態(tài)產(chǎn)生的對象將要期滿,由該設備轉送來自客戶端的第一請求。
4.如權利要求1的方法,其中步驟(a)進一步包括響應于確定在該設備的緩存器中的 動態(tài)產(chǎn)生的對象期滿,由該設備轉送來自客戶端的第一請求。
5.如權利要求1的方法,其中步驟(b)進一步包括在等待來自服務器的對于第一請求 的響應同時,由該設備接收所述多個請求。
6.如權利要求1的方法,其中步驟(b)進一步包括在正從服務器傳送所述響應的同 時,由該設備接收所述多個請求。
7.如權利要求1的方法,其中步驟(b)進一步包括在所述響應由該設備接收但是還沒 有傳送到第一客戶端的同時,由該設備接收所述多個請求。
8.如權利要求1的方法,其中步驟(c)進一步包括不轉送所述多個請求到服務器。
9.如權利要求1的方法,其中步驟(c)進一步包括識別動態(tài)產(chǎn)生的對象已經(jīng)與第一請 求有關地被請求。
10.如權利要求1的方法,其中步驟(e)進一步包括由該設備傳送所述響應而不將所 述動態(tài)產(chǎn)生的對象存儲在該設備的緩存器中。
11.一種使用來自服務器的單個響應響應于來自不同客戶端的多個請求的系統(tǒng),該系 統(tǒng)包括介于服務器和多個客戶端之間的設備;將對于動態(tài)產(chǎn)生的對象的第一請求從第一客戶端轉送到服務器的該設備的分組引擎;其中該設備在將對于第一請求的響應從服務器傳送到第一客戶端之前,從不同客戶端 接收對于由第一請求所請求的動態(tài)產(chǎn)生的對象的多個請求;以及其中在等待對于動態(tài)產(chǎn)生的對象的第一請求的響應的同時,分組引擎保持所述多個請 求;以及其中該分組引擎響應于從服務器接收到對于第一請求的包括動態(tài)產(chǎn)生的分組的響應,將該響應傳送到第一客戶端;以及使用來自對于第一請求的響應的動態(tài)產(chǎn)生的對象,將所 述響應傳送到所述多個請求中的每個。
12.如權利要求11的系統(tǒng),其中響應于確定動態(tài)產(chǎn)生的對象不在該設備的緩存器中, 該設備轉送來自客戶端的第一請求。
13.如權利要求11的系統(tǒng),其中響應于確定在該設備的緩存器中的動態(tài)產(chǎn)生的對象 將要期滿,該分組引擎轉送來自客戶端的第一請求。
14.如權利要求11的系統(tǒng),其中響應于確定在該設備的緩存器中的動態(tài)產(chǎn)生的對象 期滿,該分組引擎轉送來自客戶端的第一請求。
15.如權利要求11的系統(tǒng),其中在等待來自服務器的對于第一請求的響應同時,該設 備接收所述多個請求。
16.如權利要求11的系統(tǒng),其中在正從服務器傳送所述響應的同時,該設備接收所述 多個請求。
17.如權利要求11的系統(tǒng),其中在所述響應由該設備接收但是還沒有傳送到第一客 戶端的同時,該設備接收所述多個請求。
18.如權利要求11的系統(tǒng),其中分組引擎不轉送所述多個請求到服務器。
19.如權利要求11的系統(tǒng),其中分組引擎識別動態(tài)產(chǎn)生的對象已經(jīng)與第一請求有關 地被請求。
20.如權利要求11的系統(tǒng),其中分組引擎?zhèn)魉退鲰憫粚⑺鰟討B(tài)產(chǎn)生的對象 存儲在該設備的緩存器中。
全文摘要
本發(fā)明的解決方案提高了緩沖存儲器存儲和提供動態(tài)產(chǎn)生的數(shù)據(jù)的能力。本發(fā)明也使緩存器能夠有效處理各種不同的應用請求類型,因此增加應用性能并消除了用于保持從緩存器提供的數(shù)據(jù)的新鮮度的管理復雜性。本發(fā)明除了結合以不復制最初產(chǎn)生對象的應用服務器所執(zhí)行的處理的方式理解和處理數(shù)據(jù)的能力之外,通過使用試探法提供了緩存動態(tài)內(nèi)容的有效方法以有效地預測該應用服務器的性能。本發(fā)明的這些技術又增加了動態(tài)緩存的使用,并因此有助于改進網(wǎng)絡和潛在的應用基礎設施的性能。
文檔編號H04L12/56GK102123178SQ20111007521
公開日2011年7月13日 申請日期2005年12月30日 優(yōu)先權日2005年1月24日
發(fā)明者索尼 A., R. 布尚 K., 凱拉什 K., 森達拉延 P., 赫馬尼 P., 辛哈 R., 安娜馬萊薩米 S. 申請人:茨特里克斯系統(tǒng)公司