相關(guān)申請的交叉引用
本申請要求于2010年12月30日提交的名稱為“methodsandsystemsforcachingdatacommunicationsovercomputernetworks”的美國臨時專利申請no.61/428,538的優(yōu)先權(quán),在此通過引用將其并入本文。
本申請總體上涉及計算機(jī)網(wǎng)絡(luò)(例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)、無線網(wǎng)絡(luò)等)上的數(shù)據(jù)通信的緩存。
背景技術(shù):
計算機(jī)網(wǎng)絡(luò)上的數(shù)據(jù)通信的緩存是眾所周知的網(wǎng)絡(luò)優(yōu)化技術(shù),其用于提高應(yīng)用程序的性能,并通過存儲和發(fā)送與終端用戶密切相關(guān)的流行內(nèi)容最有效地利用網(wǎng)絡(luò)資源。
內(nèi)容緩存方案常規(guī)上聚焦到客戶端-服務(wù)器通信(例如,網(wǎng)頁瀏覽或流媒體會話)的緩存上,其中緩存立刻將內(nèi)容對象(例如,網(wǎng)頁瀏覽中的文本文件和圖像)從服務(wù)器發(fā)送給客戶端。
緩存方案所支持的內(nèi)容應(yīng)用程序設(shè)計為支持緩存,它們不使用數(shù)據(jù)會話的端到端的加密,它們具有選擇性的用于緩存的客戶側(cè)明確支持并利用已知的數(shù)據(jù)端口(http的tcp/80、rtmp的tcp/1935等)。
網(wǎng)頁瀏覽和流媒體應(yīng)用程序所建立的是基本的數(shù)據(jù)會話。每個這樣的會話并入了緩存所需要的所有信息,用于識別內(nèi)容查詢、所請求的內(nèi)容對象(或者它的一部分)、可對對象進(jìn)行維持的內(nèi)容源的地址。
傳統(tǒng)的緩存方案相應(yīng)地執(zhí)行下面的緩存方法:
(a1)接收來自客戶端的數(shù)據(jù)會話或者(a2)使用重定向網(wǎng)絡(luò)元件或其它元件,使用一個或多個已知的tcp或udp端口或者通過7層數(shù)據(jù)協(xié)議分析,對客戶端和內(nèi)容來源之間的數(shù)據(jù)會話進(jìn)行識別和攔截;
(b)對客戶端使用的數(shù)據(jù)協(xié)議進(jìn)行解析,從而識別會話中的數(shù)據(jù)查詢;
(c)對客戶端所請求的唯一的數(shù)據(jù)對象(或者它的一部分)進(jìn)行識別;以及
(d1)將數(shù)據(jù)請求與存儲在緩存中的數(shù)據(jù)響應(yīng)進(jìn)行匹配并將響應(yīng)發(fā)送至客戶端或者(d2)將數(shù)據(jù)請求傳播至服務(wù)器(內(nèi)容源),接收來自服務(wù)器的響應(yīng),選擇性地將響應(yīng)存儲在緩存中,將響應(yīng)發(fā)送至請求的客戶端。
近年來,因特網(wǎng)應(yīng)用程序在功能性和復(fù)雜性上發(fā)生了演變,使用僅在一個下載會話范圍內(nèi)存在的動態(tài)內(nèi)容對象標(biāo)識符(例如,httpurl),支持來自多個內(nèi)容源的同一內(nèi)容對象在若干并行會話中傳遞,包含多個動態(tài)端口,包含數(shù)據(jù)會話的端到端加密。這些新的應(yīng)用程序包括多種類型的用于文件共享和流媒體的點對點(p2p)應(yīng)用程序、用于通過http傳遞視頻的自適應(yīng)比特率協(xié)議、http下載加速器、軟件升級服務(wù)(如microsoftwindows升級)。
點對點應(yīng)用程序通常執(zhí)行一種“對等點發(fā)現(xiàn)”機(jī)制,其中客戶端應(yīng)用程序訪問p2p網(wǎng)絡(luò),請求網(wǎng)絡(luò)發(fā)現(xiàn)可提供內(nèi)容對象的內(nèi)容源,隨后與這些內(nèi)容源建立會話,這其中的一些會話使用端到端加密。
普遍的做法是,p2p網(wǎng)絡(luò)中的內(nèi)容源使用動態(tài)端口,而不是“已知的”靜態(tài)端口。
p2p應(yīng)用程序可使用7層會話識別標(biāo)準(zhǔn),以這樣的方式加密來避免網(wǎng)絡(luò)元件的檢測。
因此,傳統(tǒng)的緩存方案不能識別和攔截這些數(shù)據(jù)會話,而且由于加密,它們不能對數(shù)據(jù)協(xié)議進(jìn)行解析來識別數(shù)據(jù)查詢。
非p2p應(yīng)用程序(例如,下載加速器、自適應(yīng)比特率視頻客戶端、軟件升級服務(wù)等)通常建立多個會話來對相同的內(nèi)容對象安排檢索,其中每個單獨的會話不提供用于識別所請求的數(shù)據(jù)對象和/或?qū)?shù)據(jù)請求與數(shù)據(jù)響應(yīng)進(jìn)行匹配的緩存所需要的所有信息。
這些新應(yīng)用程序所展現(xiàn)的特性消除了傳統(tǒng)緩存技術(shù)的問題。期望提供對支持這些新應(yīng)用程序的內(nèi)容緩存的供選擇的方法。
技術(shù)實現(xiàn)要素:
根據(jù)一個或多個實施例,提供了一種計算機(jī)實現(xiàn)的對計算機(jī)網(wǎng)絡(luò)中的多會話數(shù)據(jù)通信進(jìn)行緩存的方法,包括步驟:(a)對客戶端與一個或多個元數(shù)據(jù)服務(wù)之間的一個或多個數(shù)據(jù)會話進(jìn)行接收、攔截或監(jiān)控,該客戶端執(zhí)行多會話應(yīng)用程序以對期望的內(nèi)容對象進(jìn)行檢索,所述客戶端與一個或多個元數(shù)據(jù)服務(wù)通信,從而發(fā)現(xiàn)內(nèi)容對象的元數(shù)據(jù);(b)對客戶端與一個或多個元數(shù)據(jù)服務(wù)之間進(jìn)行交換的查詢和響應(yīng)進(jìn)行分析,從而發(fā)現(xiàn)內(nèi)容對象的元數(shù)據(jù);(c)對客戶端與內(nèi)容源之間的后繼數(shù)據(jù)會話進(jìn)行接收或攔截;(d)對客戶端使用的數(shù)據(jù)協(xié)議進(jìn)行識別,并對數(shù)據(jù)會話中的數(shù)據(jù)查詢進(jìn)行識別;(e)對客戶端在數(shù)據(jù)查詢中所請求的內(nèi)容對象或者它的多個部分進(jìn)行識別;(f)確定內(nèi)容對象或者它的多個部分是否存儲在緩存中,如果是,則將存儲在緩存中的內(nèi)容對象或者它的多個部分發(fā)送給客戶端,如果不是,則將數(shù)據(jù)查詢發(fā)送給內(nèi)容源、對來自內(nèi)容源的數(shù)據(jù)響應(yīng)進(jìn)行存儲、并將數(shù)據(jù)響應(yīng)發(fā)送給客戶端。
根據(jù)一個或多個實施例,提供了一種用于對計算機(jī)網(wǎng)絡(luò)中的多會話數(shù)據(jù)通信進(jìn)行緩存的緩存服務(wù)。該緩存服務(wù)用于:(a)對客戶端與一個或多個元數(shù)據(jù)服務(wù)之間的一個或多個數(shù)據(jù)會話進(jìn)行接收、攔截或監(jiān)控,該客戶端執(zhí)行多會話應(yīng)用程序以對期望的內(nèi)容對象進(jìn)行檢索,所述客戶端與一個或多個元數(shù)據(jù)服務(wù)通信,從而發(fā)現(xiàn)內(nèi)容對象的元數(shù)據(jù);(b)對客戶端與一個或多個元數(shù)據(jù)服務(wù)之間進(jìn)行交換的查詢和響應(yīng)進(jìn)行分析,從而發(fā)現(xiàn)內(nèi)容對象的元數(shù)據(jù);(c)對客戶端與內(nèi)容源之間的后繼數(shù)據(jù)會話進(jìn)行接收或攔截;(d)對客戶端使用的數(shù)據(jù)協(xié)議進(jìn)行識別,并對數(shù)據(jù)會話中的數(shù)據(jù)查詢進(jìn)行識別;(e)對客戶端在數(shù)據(jù)查詢中所請求的內(nèi)容對象或者它的多個部分進(jìn)行識別;以及(f)確定內(nèi)容對象或者它的多個部分是否存儲在緩存中,如果是,則將存儲在緩存中的內(nèi)容對象或者它的多個部分發(fā)送給客戶端,如果不是,則將數(shù)據(jù)查詢發(fā)送給內(nèi)容源、對來自內(nèi)容源的數(shù)據(jù)響應(yīng)進(jìn)行存儲、并將數(shù)據(jù)響應(yīng)發(fā)送給客戶端。
附圖說明
圖1為示出了根據(jù)一個或多個實施例的緩存服務(wù)的部署的簡圖。
圖2為示出了根據(jù)一個或多個可替換實施例的緩存服務(wù)的部署的簡圖。
具體實施方式
根據(jù)多個實施例,提供了一種緩存服務(wù),其應(yīng)用程序使用多個會話對同一內(nèi)容對象(例如,文件或數(shù)據(jù)流)進(jìn)行檢索。
該緩存服務(wù)支持的多會話應(yīng)用程序可包括:
(a)使用一個或多個會話發(fā)現(xiàn)內(nèi)容對象相關(guān)的信息(下文中稱為“內(nèi)容對象元數(shù)據(jù)”)的應(yīng)用程序,該信息用于識別:應(yīng)用程序接觸的用于檢索內(nèi)容對象的內(nèi)容源、執(zhí)行這些任務(wù)所使用的數(shù)據(jù)協(xié)議、用于檢索對象的數(shù)據(jù)查詢。
(b)使用多個會話檢索內(nèi)容對象的應(yīng)用程序,僅在某些會話中傳遞用于對象識別所需要的信息。
(a)使用內(nèi)容對象元數(shù)據(jù)進(jìn)行內(nèi)容對象檢索的多會話應(yīng)用程序
圖1示出了一個示例性網(wǎng)絡(luò)結(jié)構(gòu),其示出了根據(jù)一個或多個實施例的緩存服務(wù)的使用??蛻舳薬1在網(wǎng)絡(luò)上對一個或多個元數(shù)據(jù)服務(wù)m建立多個會話,發(fā)送用于對內(nèi)容對象z1的內(nèi)容對象元數(shù)據(jù)進(jìn)行檢索的數(shù)據(jù)查詢,以及接收一個或多個來自元數(shù)據(jù)服務(wù)m的響應(yīng)。
內(nèi)容對象元數(shù)據(jù)包括至少一個變量,該變量從下面的幾種中選擇:
(i)一個或多個內(nèi)容源的地址;
(ii)單獨內(nèi)容源支持的協(xié)議;
(iii)每個對象或每個單獨內(nèi)容源的密匙;及
(iv)內(nèi)容對象的結(jié)構(gòu)
內(nèi)容源地址可通過ip地址識別,例如,使用ipv4的ip地址1.1.1.1或ipv6地址fe80::200:f8ff:fe21:67cf,或者使用能夠利用域名系統(tǒng)(dns)分解為ip地址的域名,如cache12.bos.us.cdn.net。
內(nèi)容源地址可使用隱含命名的端口號,這針對的是使用已知的協(xié)議端口的應(yīng)用程序(例如,http協(xié)議使用的tcp/80端口),或者使用明確命名的端口。
內(nèi)容源地址可連同它所支持的協(xié)議一起識別,包括,但不限于,使用如rfc1738中所定義的統(tǒng)一資源定位器(url),其為對象指定協(xié)議、內(nèi)容源地址、端口、遠(yuǎn)程路徑。
內(nèi)容對象結(jié)構(gòu)信息包括允許客戶端a1形成對于對象部件的數(shù)據(jù)查詢并對接收到的針對這些查詢做出的響應(yīng)的數(shù)據(jù)響應(yīng)的正確性進(jìn)行驗證的信息。
內(nèi)容對象結(jié)構(gòu)信息包括涉及組成對象的多個部件相關(guān)的信息,例如bittorrent協(xié)議使用的“塊(piece)”、edonkeyp2p協(xié)議使用的多個“部件(part)”、自適應(yīng)比特率流媒體傳輸協(xié)議(如microsoftsilverlightsmoothstreaming、adobehttpdynamicstreaming、applehttplivestreaming等)中使用的“回放等級(playbacklevel)”。
有關(guān)內(nèi)容對象部件的信息包括至少下面的一種:內(nèi)容對象的部件的枚舉、每個部件的長度、每個部件的數(shù)據(jù)校驗和、特定內(nèi)容源上的部件的可用性,其中內(nèi)容源是利用上面的[0023-0025]所定義的內(nèi)容源地址進(jìn)行識別的。
包括上面的所有或部分信息的元數(shù)據(jù)可存儲在單獨的具有預(yù)先設(shè)定的結(jié)構(gòu)的文件中,例如用于bittorrent的torrent文件或microsoftsilverlightsmoothstreaming使用的manifest文件。
提供內(nèi)容對象元數(shù)據(jù)的元數(shù)據(jù)服務(wù)m可包括用于支持發(fā)送特定的應(yīng)用程序或一個或多個內(nèi)容對象的專用網(wǎng)絡(luò)服務(wù)器(例如bt跟蹤服務(wù)器、ed2k服務(wù)器等)、一般搜索引擎(google、microsoftbing等)、用于共同存儲元數(shù)據(jù)的具有多個計算機(jī)節(jié)點的網(wǎng)絡(luò)(例如p2p應(yīng)用程序使用的分布式哈希表網(wǎng)絡(luò))、或者其它分享分布式內(nèi)容源發(fā)現(xiàn)網(wǎng)絡(luò)(例如分布式哈希表網(wǎng)絡(luò))的客戶端、或者其它下載和/或服務(wù)于內(nèi)容對象z1并維持與之相關(guān)的元數(shù)據(jù)的客戶端。
客戶端a1可使用多個元數(shù)據(jù)服務(wù)m來發(fā)現(xiàn)內(nèi)容對象元數(shù)據(jù),其中一個服務(wù)m1可提供一部分內(nèi)容對象元數(shù)據(jù)并選擇性地指向另一個服務(wù)m1用于提供另一部分。
于是,例如,客戶端a1可通過bittorrent搜索引擎檢索torrent文件,bittorrent搜索引擎包括內(nèi)容對象數(shù)據(jù)結(jié)構(gòu)信息以及提供當(dāng)前動態(tài)(active)內(nèi)容源地址信息的bt跟蹤服務(wù)器的url。
為了識別新的內(nèi)容源和/或內(nèi)容對象結(jié)構(gòu)信息(例如,如果對象z1為活動的數(shù)據(jù)流,它的新的部分是能夠連續(xù)獲得的),下載內(nèi)容對象z1或者它的某些部分的過程中,客戶端a1可繼續(xù)向元數(shù)據(jù)服務(wù)m發(fā)送數(shù)據(jù)查詢。
根據(jù)一個或多個實施例,緩存服務(wù)c對在客戶端a1與一個或多個元數(shù)據(jù)服務(wù)m之間交換的數(shù)據(jù)查詢和/或響應(yīng)進(jìn)行接收并存儲。
根據(jù)一個或多個實施例,通過進(jìn)入a1與b之間的數(shù)據(jù)路徑,或者通過使用一個或多個位于數(shù)據(jù)路徑中并將指定數(shù)據(jù)會話重定向到緩存服務(wù)c的專門的重定向設(shè)備(例如,負(fù)載平衡器、路由器、dpi設(shè)備等),緩存服務(wù)c攔截a1與m之間的會話,并對a1與m之間的數(shù)據(jù)查詢和響應(yīng)進(jìn)行中繼。
根據(jù)一個或多個實施例,緩存服務(wù)c對元數(shù)據(jù)服務(wù)m提供的至少一個元數(shù)據(jù)響應(yīng)進(jìn)行修改,例如,指示緩存服務(wù)c作為內(nèi)容源或者內(nèi)容對象z1的元數(shù)據(jù)服務(wù)。
根據(jù)一個或多個實施例,利用光分接頭、鏡像端口、或其它復(fù)制網(wǎng)絡(luò)流通的設(shè)備,緩存服務(wù)c接收到客戶端a1與元數(shù)據(jù)服務(wù)m之間的通信的副本。
根據(jù)一個或多個實施例,通過提供至少一個元數(shù)據(jù)服務(wù)m,緩存服務(wù)c接收來自客戶端a1的對于內(nèi)容對象z1的數(shù)據(jù)請求。
根據(jù)一個或多個實施例,緩存服務(wù)c隨后向元數(shù)據(jù)服務(wù)m自身提出對于內(nèi)容對象z1元數(shù)據(jù)的查詢并對響應(yīng)進(jìn)行接收和存儲。
根據(jù)一個或多個實施例,緩存服務(wù)c不斷地對在至少一個客戶端a1與元數(shù)據(jù)服務(wù)m之間交換的查詢和響應(yīng)、以及緩存服務(wù)c直接收到的來自元數(shù)據(jù)服務(wù)m的響應(yīng)進(jìn)行分析,如上面所描述的。
于是,緩存服務(wù)c保持對于客戶端a1正在檢索的至少一個內(nèi)容對象z1的內(nèi)容對象元數(shù)據(jù)mz。
根據(jù)一個或多個實施例,緩存服務(wù)c將元數(shù)據(jù)響應(yīng)存儲為與c最近一次接收到的響應(yīng)關(guān)聯(lián)的元數(shù)據(jù)mz的一部分。
緩存服務(wù)c隨后根據(jù)超時原則周期性地將那些大于一定時間前接收到的響應(yīng)丟棄。
根據(jù)一個或多個實施例,緩存服務(wù)對元數(shù)據(jù)請求和響應(yīng)進(jìn)行監(jiān)控,并將任何所存儲的與隨后收到的元數(shù)據(jù)響應(yīng)矛盾的響應(yīng)丟棄。
檢索內(nèi)容對象z1的相關(guān)元數(shù)據(jù)后,客戶端a1以及客戶端a1利用元數(shù)據(jù)服務(wù)m發(fā)現(xiàn)的至少一個內(nèi)容源b1,開始彼此建立數(shù)據(jù)會話,用于通過a1檢索內(nèi)容對象z1或者它的一部分。
根據(jù)一個或多個實施例,緩存服務(wù)c對客戶端a1與內(nèi)容源b1之間建立的數(shù)據(jù)會話s1進(jìn)行攔截。
根據(jù)一個或多個實施例,緩存服務(wù)c通過進(jìn)入a1與b1之間的數(shù)據(jù)路徑,或者通過使用一個或多個位于數(shù)據(jù)路徑中并將指定數(shù)據(jù)會話重定向到緩存服務(wù)c的專門的重定向設(shè)備(例如,負(fù)載平衡器、路由器、dpi設(shè)備等)對數(shù)據(jù)會話進(jìn)行攔截。
根據(jù)一個或多個實施例,緩存服務(wù)c只對已經(jīng)在a1與內(nèi)容源b1’之間建立的會話進(jìn)行攔截,該b1’與緩存服務(wù)c存儲的對象z1的元數(shù)據(jù)mz相匹配。
根據(jù)一個或多個實施例,客戶端a1與緩存服務(wù)c建立至少一個會話s2,該緩存服務(wù)c被客戶端a1識別為內(nèi)容對象z1的一個內(nèi)容源。
根據(jù)一個或多個實施例,緩存服務(wù)c利用下面的協(xié)議中的至少一個來攔截客戶端a1與內(nèi)容源b1之間的會話s1中的數(shù)據(jù)查詢和數(shù)據(jù)響應(yīng):
(i)如上面所描述的,與客戶端a1相關(guān)聯(lián)的數(shù)據(jù)協(xié)議,作為元數(shù)據(jù)mz的一部分;
(ii)如上面所描述的,與會話s1相關(guān)聯(lián)的數(shù)據(jù)協(xié)議,作為元數(shù)據(jù)mz的一部分;以及
(iii)當(dāng)使用基于簽名的或其它一般的協(xié)議識別技術(shù)對會話s1中接收到的數(shù)據(jù)查詢和響應(yīng)進(jìn)行分析時,緩存服務(wù)c所識別的數(shù)據(jù)協(xié)議。
根據(jù)一個或多個實施例,緩存服務(wù)c對會話s2使用相似的方法。
根據(jù)一個或多個實施例,當(dāng)使用[0048]中描述的方法未能對會話s1和s2中的數(shù)據(jù)協(xié)議識別時,緩存服務(wù)c可應(yīng)用至少一個密匙k(該密匙k作為元數(shù)據(jù)mz由c存儲),用于與客戶端a1或內(nèi)容源b1或二者同時建立加密的會話。
密匙k可與內(nèi)容對象z(例如,在bittorrent中使用對象z的哈希標(biāo)識符來對bittorrent對等點之間的會話加密)或多個特定內(nèi)容源相關(guān)聯(lián)。
根據(jù)一個或多個實施例,在與客戶端a1之間建立數(shù)據(jù)會話并且對該會話中使用的協(xié)議進(jìn)行識別后,緩存服務(wù)c接收來自客戶端a1的對于對象z1的數(shù)據(jù)查詢q1(或者它的一部分)。
根據(jù)一個或多個實施例,如上面所述,緩存服務(wù)c使用與內(nèi)容對象z1相關(guān)聯(lián)的元數(shù)據(jù)mz對與查詢匹配的響應(yīng)進(jìn)行識別。
例如,如果客戶端a1請求在microsoftsilverlightsmoothstreaming協(xié)議中可用的500kbps回放級別的組塊的內(nèi)容對象z1,其起始偏移為0,未標(biāo)示末端偏移,緩存服務(wù)c可使用描述對象z1的元數(shù)據(jù)mz,以識別末端偏移。
根據(jù)一個或多個實施例,如果緩存服務(wù)c存儲了與查詢q1匹配的響應(yīng)r1,則c將該響應(yīng)發(fā)送給末端客戶端a1。
根據(jù)一個或多個實施例,將數(shù)據(jù)響應(yīng)r1發(fā)送給客戶端a1前,緩存服務(wù)c可利用存儲的與內(nèi)容對象z相關(guān)聯(lián)的元數(shù)據(jù)mz來對數(shù)據(jù)響應(yīng)r1的有效性進(jìn)行驗證。
根據(jù)一個或多個實施例,如果緩存服務(wù)c中不存在與查詢q1匹配的響應(yīng),并且查詢q1已經(jīng)作為客戶端a1與內(nèi)容源b1之間的會話s1的一部分發(fā)出,則緩存服務(wù)c轉(zhuǎn)發(fā)該查詢以在內(nèi)容源b1中檢索該響應(yīng),并接收和選擇性地存儲該響應(yīng),并將該響應(yīng)中繼給客戶端a1。
根據(jù)一個或多個實施例,當(dāng)緩存服務(wù)c中未找到與查詢q1匹配的響應(yīng)時,緩存服務(wù)c發(fā)送允許其對數(shù)據(jù)查詢q1作出響應(yīng)的數(shù)據(jù)查詢q1’給至少一個內(nèi)容源b,該內(nèi)容源b是c基于它所存儲的元數(shù)據(jù)mz識別為承載內(nèi)容對象z的內(nèi)容源。
隨后,緩存服務(wù)c接收對于這些查詢的響應(yīng)r1’,對它們進(jìn)行存儲并選擇性地根據(jù)元數(shù)據(jù)mz對它們的有效性進(jìn)行驗證,并將對查詢q1的響應(yīng)發(fā)送給客戶端a1。
根據(jù)一個或多個實施例,當(dāng)緩存服務(wù)c中未找到與查詢q1匹配的響應(yīng)時,c可將客戶端a1重定向至由緩存服務(wù)存儲在元數(shù)據(jù)mz中的內(nèi)容對象z的一個內(nèi)容源b。
(b)僅允許在某些會話中對內(nèi)容對象進(jìn)行識別的多會話應(yīng)用程序
客戶端a2建立對一個或多個目標(biāo)b2多個并聯(lián)或串聯(lián)的會話s2,用于檢索內(nèi)容對象z2。在各個會話中,客戶端a2發(fā)送對于內(nèi)容對象z2的各部分的多個數(shù)據(jù)請求。
依據(jù)客戶端a2和目標(biāo)b2所使用的對內(nèi)容對象z和/或它的多個部分的命名習(xí)慣,用于攔截或接收會話s2的緩存服務(wù)c可能無法識別各個會話中客戶端a2所請求的內(nèi)容對象和/或它的多個部分,或者可能無法識別與這些請求匹配的數(shù)據(jù)響應(yīng)。
客戶端a2和一個或多個內(nèi)容源b2可使用動態(tài)url(所謂的“哈希url”)來識別對象z2,該url為對于內(nèi)容對象z2的每次下載唯一指定的下載地址。這種情況下,緩存服務(wù)c不能僅依靠數(shù)據(jù)查詢中的數(shù)據(jù)來識別匹配的響應(yīng),而是對多個數(shù)據(jù)響應(yīng)進(jìn)行分析,從而對請求的對象進(jìn)行識別并將其與之前存儲的數(shù)據(jù)響應(yīng)進(jìn)行匹配。
根據(jù)一個或多個實施例,當(dāng)在一個或多個會話中接收到允許對內(nèi)容對象z進(jìn)行識別的這樣的數(shù)據(jù)查詢和/或響應(yīng)時,c在列表l2中對內(nèi)容對象z2的標(biāo)識符以及客戶端a2的ip地址、內(nèi)容源b2的ip地址、客戶端a2使用的動態(tài)內(nèi)容標(biāo)識符(例如url)進(jìn)行存儲。
根據(jù)一個或多個實施例,當(dāng)緩存服務(wù)c接收到不允許其對查詢和/或響應(yīng)中所引用的內(nèi)容對象z進(jìn)行識別的數(shù)據(jù)查詢和/或數(shù)據(jù)響應(yīng)時,緩存服務(wù)c確定客戶端a2的ip地址、動態(tài)內(nèi)容標(biāo)識符url、內(nèi)容源b2的ip地址是否存儲在列表l2中。
根據(jù)一個或多個實施例,如果應(yīng)用程序使用多個內(nèi)容源,緩存服務(wù)c可以不考慮內(nèi)容源b2的ip地址。
根據(jù)一個或多個實施例,緩存服務(wù)c根據(jù)超時原則從表l4中將客戶端a2看到的涉及內(nèi)容對象z2的上次活動后的項目移除。
上面描述的緩存服務(wù)進(jìn)程可以軟件、硬件、固件及其它們的組合來實現(xiàn)。優(yōu)選地,這些進(jìn)程以一個或多個計算機(jī)程序?qū)崿F(xiàn),這些計算機(jī)程序運(yùn)行于可編程設(shè)備上,該可編程設(shè)備包括處理器、處理器可讀存儲媒介(包括例如易失性和非易失性存儲器和/或存儲元件)、輸入和輸出設(shè)備。每個計算機(jī)程序可以是駐留在設(shè)備的隨機(jī)存取存儲器中的代碼模塊形式的一組指令(程序代碼)。在設(shè)備需要前,這組指令可存儲在另一個計算機(jī)存儲器(例如,硬盤驅(qū)動器,或者可移動存儲器(如光盤、外部硬盤驅(qū)動器、記憶卡、閃存驅(qū)動器))中或者存儲在另一個計算機(jī)系統(tǒng)中并通過因特網(wǎng)或其它網(wǎng)絡(luò)下載。
這樣,已經(jīng)描述了若干說明性實施例,應(yīng)當(dāng)理解的是,該領(lǐng)域內(nèi)的技術(shù)人員可輕易地進(jìn)行若干更改、修改和改進(jìn)。這些更改、修改和改進(jìn)意在構(gòu)成本公開的一部分,并且意在位于本公開的精神和范圍內(nèi)。盡管本文討論了一些例子并包含了詳細(xì)的功能或結(jié)構(gòu)元件的組合,但是應(yīng)當(dāng)了解的是,根據(jù)本發(fā)明,這些功能和元件可以以其它方式組合,從而實現(xiàn)相同或不同的目的。特別是,連同某個實施例討論的操作、元件和特征不意在從其它實施例中的類似的或其它作用中排除在外。
此外,本文描述的元件和組件可進(jìn)一步劃分為額外的組件或連接到一起,從而形成較少的一些用于執(zhí)行相同功能的組件。例如,緩存服務(wù)可包括一個或多個物理機(jī)器,或在物理機(jī)器上運(yùn)行的一個或多個虛擬機(jī)器。此外,緩存服務(wù)可包括通過因特網(wǎng)或其它網(wǎng)絡(luò)連接的一組計算機(jī)或許多分布式計算機(jī)。
相應(yīng)地,前面的描述及附圖僅作為實例,而不是意在限制本發(fā)明。