專利名稱:無效化高速緩存條目的一般依存關(guān)系模型的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及對高速緩存的內(nèi)容的管理,尤其涉及擴(kuò)展高速緩存依存關(guān)系(dependency)類從而使開發(fā)者能夠創(chuàng)建自定義高速緩存依存關(guān)系。
背景技術(shù):
在現(xiàn)代計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)中,數(shù)據(jù)高速緩存是一種加快向請求數(shù)據(jù)一方的數(shù)據(jù)傳遞的有效工具。一般而言,數(shù)據(jù)高速緩存涉及在數(shù)據(jù)能夠被快速檢取之處存儲(chǔ)哪些被頻繁地請求的數(shù)據(jù)。在一個(gè)示例中,存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的物理存儲(chǔ)器中的數(shù)據(jù)能夠比存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的硬盤上的數(shù)據(jù)更快地被檢取。這部分地是由于與物理存儲(chǔ)器相比,硬盤通常具有更大的數(shù)據(jù)檢取等待時(shí)間。同樣,儲(chǔ)存在服務(wù)器計(jì)算機(jī)系統(tǒng)的硬盤或存儲(chǔ)器中的數(shù)據(jù)能夠比儲(chǔ)存在遠(yuǎn)程數(shù)據(jù)庫中的數(shù)據(jù)更有效地被訪問。此外,使用緩存的數(shù)據(jù)能夠減少生成傳遞到請求客戶計(jì)算機(jī)系統(tǒng)的內(nèi)容所需要的計(jì)算量。
現(xiàn)代網(wǎng)絡(luò)已經(jīng)方便了與各種位置廣泛傳輸數(shù)字信息的能力。一種令數(shù)據(jù)可用于傳輸?shù)姆椒ㄊ峭ㄟ^創(chuàng)建一個(gè)靜態(tài)文件,如HTML文件,該文件能夠從服務(wù)器下載至客戶計(jì)算機(jī)系統(tǒng)以供查看。靜態(tài)文件能夠高速緩存到多種位置,包括服務(wù)器計(jì)算機(jī)系統(tǒng)、區(qū)域數(shù)據(jù)庫或者甚至在客戶計(jì)算機(jī)系統(tǒng)本地。當(dāng)計(jì)算機(jī)系統(tǒng)靜態(tài)文件儲(chǔ)存在客戶計(jì)算機(jī)系統(tǒng)中時(shí),客戶計(jì)算機(jī)系統(tǒng)為所有實(shí)際目的的檢取和顯示都是瞬時(shí)的。即使當(dāng)靜態(tài)文件直接儲(chǔ)存在連接至客戶計(jì)算機(jī)系統(tǒng)(通常稱為輸出高速緩存)的服務(wù)器計(jì)算機(jī)系統(tǒng)中時(shí),對高速緩存的內(nèi)容的檢取可以相對快速地出現(xiàn)。此外,由于其靜態(tài)特性,靜態(tài)文件能夠長時(shí)間地高速緩存,本質(zhì)上是無限的。
不幸的是,靜態(tài)文件無法包括實(shí)時(shí)或自定義內(nèi)容。經(jīng)常期望呈現(xiàn)周期性的變化的內(nèi)容或從其它內(nèi)容的計(jì)算或操作而形成的內(nèi)容。盡管這類內(nèi)容仍然可以被高速緩存,然而高速緩存的內(nèi)容的值僅在有限的持續(xù)時(shí)間內(nèi)有效。由此,必須刷新高速緩存來確保數(shù)據(jù)有效。
一種協(xié)助web開發(fā)者創(chuàng)建web頁和web站點(diǎn)的技術(shù)是使用運(yùn)行在web頁服務(wù)器,如因特網(wǎng)信息服務(wù)器上的計(jì)算機(jī)可執(zhí)行代碼的腳本或模塊化片斷。腳本可以嵌入其它HTML標(biāo)簽之中來創(chuàng)建動(dòng)態(tài)且可定制的web頁。正如對象可以在諸如寫在Visual Basic、JavaScript和C#中的程序中被調(diào)用一樣,同樣的對象也可以在基于這些或其它語言的腳本中被調(diào)用。
類是ASP.NET框架等編程框架中的對象。ASP.NET框架包括上千種web頁開發(fā)者可以用來開發(fā)web頁的類。以與通過目錄路徑訪問文件相類似的方式,能夠通過引用特定名稱空間來訪問類。例如,對名稱空間System.WinForms.Form的引用提供了特定類的位置的指示。類可以與屬性、時(shí)間和方法相關(guān)聯(lián)。屬性可以認(rèn)為是相應(yīng)類中的一些可變賦值或設(shè)定(如,x=5)。事件是當(dāng)事件出現(xiàn)時(shí)即升起的標(biāo)志。其它類或其它應(yīng)用可以讀取事件來引發(fā)采取一些行動(dòng)。方法提供了調(diào)用相應(yīng)類的功能來執(zhí)行行動(dòng)(如,向顯示設(shè)備輸出數(shù)據(jù))的方式。方法定義如何向外部組件提供功能。
為方便內(nèi)容的高速緩存并因此提高web頁服務(wù)器的性能,編程框架可包括用于從各種位置,如文件、數(shù)據(jù)庫和web服務(wù)器中檢取數(shù)據(jù)的類,以及用于通過各種操作來處理數(shù)據(jù)的類。在一些環(huán)境中,具有對這些類的接入的web頁服務(wù)器計(jì)算機(jī)系統(tǒng)(如ASP服務(wù)器)可創(chuàng)建并儲(chǔ)存基于實(shí)時(shí)內(nèi)容的HTML代碼,該代碼在輸出高速緩存的情況下被發(fā)送到客戶計(jì)算機(jī)系統(tǒng)。在其它環(huán)境中,web頁服務(wù)器計(jì)算機(jī)系統(tǒng)可在web頁服務(wù)器計(jì)算機(jī)系統(tǒng)上本地地高速緩存內(nèi)容,如XML文件,使得不需要在每次請求包括該內(nèi)容的web頁時(shí)檢取或重新計(jì)算內(nèi)容。
一些編程框架允許web開發(fā)者創(chuàng)建指令,當(dāng)執(zhí)行該指令時(shí),促使內(nèi)容被儲(chǔ)存在高速緩存中。例如,為在高速緩存中插入一條目,可執(zhí)行以下指令Cache.Insert([key],[value],[dependency]),其中key是高速緩存條目的引用標(biāo)識(shí)符,value是放置在高速緩存條目中的值(或內(nèi)容),dependency是可任選自變量,定義了應(yīng)當(dāng)何時(shí)從高速緩存中清除key的值。依存關(guān)系是類的一個(gè)實(shí)例,如高速緩存依存關(guān)系(CacheDependency)類,可以用來使高速緩存值依賴于特定的事件的出現(xiàn)。
一些編程框架支持高速緩存依存關(guān)系,導(dǎo)致高速緩存的值依賴于時(shí)間、文件或關(guān)鍵字中的任一個(gè)。時(shí)間高速緩存依存關(guān)系使與特定依存關(guān)系關(guān)聯(lián)的條目在特定時(shí)間段過去之后被清除。例如,Cache.Insert指令可以如下實(shí)現(xiàn),來使數(shù)據(jù)依賴于時(shí)間Cache.Insert(strCacheKey,dataset,nothing,DateTime.Now.AddMinutes(60),TimeSpan.Zero,CacheItemPriority.High)更明確地,Date.Time.Now.AddMinutes(60)指令使高速緩存中的條目在60分鐘之后從高速緩存中清除。使用設(shè)置得太短的時(shí)間高速緩存依存關(guān)系將導(dǎo)致太頻繁地清除高速緩存并且增加了頻繁從數(shù)據(jù)庫獲取數(shù)據(jù)的成本或計(jì)算要儲(chǔ)存在高速緩存中的數(shù)據(jù)的成本。如果將時(shí)間值設(shè)置得太長,則有當(dāng)儲(chǔ)存在高速緩存中的數(shù)據(jù)被傳送到請求客戶計(jì)算機(jī)系統(tǒng)中時(shí)變?yōu)闊o效的風(fēng)險(xiǎn)。
Cache.Insert指令也可以用來實(shí)現(xiàn)文件高速緩存依存關(guān)系,使如果在特定文件中有變化時(shí)清除高速緩存條目。此外,Cache.Insert指令可以用來實(shí)現(xiàn)關(guān)鍵字依存關(guān)系,使當(dāng)一些儲(chǔ)存在存儲(chǔ)器中的其它高速緩存值變化時(shí)清除一個(gè)或多個(gè)高速緩存條目。使用關(guān)鍵字依存關(guān)系,一個(gè)高速緩存值的變化可以使許多高速緩存值從高速緩存中清除。
盡管上述三種高速緩存依存關(guān)系時(shí)間、文件和關(guān)鍵字在保持儲(chǔ)存在高速緩存中的值最新方面是有用的,然而實(shí)現(xiàn)這些依存關(guān)系的類通常是密封的。從而,web開發(fā)者通常無法使高速緩存條目依賴于其它類型的事件。這妨礙了各種其它類型的高速緩存依存關(guān)系,而這些其它類型的高速緩存依存關(guān)系在使用時(shí)能夠令高速緩存的管理變?yōu)楦行?。因此,用于擴(kuò)展可用來無效化高速緩存條目的依存關(guān)系的類型的機(jī)制是非常有利的。
發(fā)明內(nèi)容
上述相關(guān)技術(shù)的問題由本發(fā)明的原理來克服,本發(fā)明針對用于擴(kuò)展高速緩存依存關(guān)系類,使開發(fā)者能夠創(chuàng)建自定義高速緩存依存關(guān)系的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。服務(wù)器計(jì)算機(jī)系統(tǒng)(如,包括web頁服務(wù)器)訪問可擴(kuò)展高速緩存依存關(guān)系基類,并從可擴(kuò)展高速緩存依存關(guān)系基類來衍生定制的高速緩存依存關(guān)系。定制的高速緩存依存關(guān)系能夠例如導(dǎo)致高速緩存條目依賴于數(shù)據(jù)庫表(如SQL表)或web服務(wù)的變化。
定制的高速緩存依存關(guān)系可包括聚集依存關(guān)系(aggregate dependency),從而使高速緩存條目取決于許多事件。在部分實(shí)施例中,定制的高速緩存依存關(guān)系的功能覆蓋了可擴(kuò)展高速緩存依存關(guān)系基類的功能。可擴(kuò)展高速緩存依存關(guān)系基類可包括通知依存關(guān)系改變方法,監(jiān)控事件(如,數(shù)據(jù)庫表中的變化)并當(dāng)出現(xiàn)事件時(shí)通知服務(wù)器計(jì)算機(jī)系統(tǒng)。可擴(kuò)展高速緩存依存關(guān)系基類也可以包括依存關(guān)系處置方法,當(dāng)高速緩存條目從高速緩存中移除時(shí)釋放資源。
服務(wù)器計(jì)算機(jī)系統(tǒng)從例如數(shù)據(jù)庫或web服務(wù)訪問將要傳送到客戶計(jì)算機(jī)系統(tǒng)的內(nèi)容。服務(wù)器計(jì)算機(jī)系統(tǒng)創(chuàng)建將定制高速緩存依存關(guān)系與訪問的內(nèi)容相關(guān)聯(lián)的高速緩存條目。服務(wù)器計(jì)算機(jī)系統(tǒng)將高速緩存條目插入到高速緩存中,使高速緩存條目的有效性(同時(shí)也是所訪問的內(nèi)容的有效性)依賴于定制的依存關(guān)系。服務(wù)器計(jì)算機(jī)系統(tǒng)能夠使用Cache.Insert方法將高速緩存條目插入到高速緩存中,Cache.Insert方法指定了為定制的高速緩存依存關(guān)系的實(shí)例的依存關(guān)系。
可在定制高速緩存依存關(guān)系的基礎(chǔ)上將高速緩存條目無效化。服務(wù)器計(jì)算機(jī)系統(tǒng)(如包括web頁服務(wù)器)接收出現(xiàn)監(jiān)控的事件的通知。通知可以發(fā)自依存關(guān)系改變方法,該方法作為創(chuàng)建定制高速緩存的依存關(guān)系的結(jié)果而執(zhí)行,并且監(jiān)控與定制高速緩存的依存關(guān)系關(guān)聯(lián)的事件。作為對通知的響應(yīng),服務(wù)器計(jì)算機(jī)系統(tǒng)將高速緩存條目無效化(并移除)。服務(wù)器計(jì)算機(jī)系統(tǒng)調(diào)用依存關(guān)系處置方法以釋放該高速緩存條目使用的任何資源。
以下描述將詳細(xì)闡明本發(fā)明的另外的特征和優(yōu)點(diǎn),閱讀以下描述能夠清除這些特征和優(yōu)點(diǎn),或者可以通過對本發(fā)明的實(shí)踐而部分地學(xué)到。本發(fā)明的特征和優(yōu)點(diǎn)可以通過所附權(quán)利要求書中特別指出的儀器和組合來實(shí)現(xiàn)和獲取。
為以能獲取本發(fā)明的上述和其它優(yōu)點(diǎn)和特征的方式來描述,參考附圖中說明的具體實(shí)施例來特別描述上文概括描述的本發(fā)明。應(yīng)當(dāng)理解,這些附圖僅描述了本發(fā)明的典型實(shí)施例,并且因此不是對其范圍的局限,將通過使用附圖描述本發(fā)明的另外的特征和細(xì)節(jié),附圖中圖1說明了實(shí)現(xiàn)服務(wù)器端腳本和自定義高速緩存依存關(guān)系的web頁服務(wù)器的示例。
圖2所示是用于使高速緩存條目依賴于自定義依存關(guān)系的方法的一個(gè)實(shí)施例的示例流程圖。
圖3所示是用于基于自定義高速緩存依存關(guān)系來清除高速緩存條目的方法的一個(gè)實(shí)施例的示例流程圖。
圖4是適合在其中實(shí)踐本發(fā)明的各方面的環(huán)境的圖解表示。
具體實(shí)施例方式
本發(fā)明延及用于擴(kuò)展高速緩存依存關(guān)系類,以使開發(fā)者可以創(chuàng)建自定義高速緩存依存關(guān)系的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。本發(fā)明的實(shí)施例將高速緩存依存關(guān)系擴(kuò)展到一種可擴(kuò)展形式,使開發(fā)者能夠開發(fā)他們自己的自定義高速緩存依存關(guān)系。服務(wù)器計(jì)算機(jī)系統(tǒng)(例如包括web頁服務(wù)器)訪問其它定制的高速緩存依存關(guān)系(CacheDependency)類可從其衍生的可擴(kuò)展高速緩存依存關(guān)系基類。定制的高速緩存依存關(guān)系類尤其能夠利用可擴(kuò)展高速緩存依存關(guān)系基類的高速緩存管理特征。通過創(chuàng)建從可擴(kuò)展高速緩存依存關(guān)系基類衍生出的高速緩存依存關(guān)系類,開發(fā)者只需要很少的(如果有的話)如何實(shí)現(xiàn)可擴(kuò)展高速緩存依存關(guān)系基類的知識(shí)來利用可擴(kuò)展高速緩存依存關(guān)系基類的有利特征。可擴(kuò)展高速緩存依存關(guān)系基類抽象了來自開發(fā)者的實(shí)現(xiàn)細(xì)節(jié)。
而且,開發(fā)者還可以訪問可擴(kuò)展高速緩存依存關(guān)系基類的方法,該方法能夠處理高速緩存同步和高速緩存資源管理。另外,可擴(kuò)展高速緩存依存關(guān)系基類可以向后兼容,使現(xiàn)存的API可以使用可擴(kuò)展高速緩存基類及其衍生的類。這類API的示例包括Cache.Insert、Cache.Add以及BasePartialCachingControl.Dependency。此外,從可擴(kuò)展高速緩存基類衍生的自定義高速緩存的實(shí)現(xiàn)令開發(fā)者無需指定StartTime(開始時(shí)間)屬性以發(fā)信號(hào)通知應(yīng)當(dāng)何時(shí)開始高速緩存的監(jiān)控。盡管開發(fā)者可以自由實(shí)現(xiàn)這一屬性,它是不需要的。
可擴(kuò)展高速緩存依存關(guān)系基類包括另外兩個(gè)公共可用的方法,使定制高速緩存依存關(guān)系類的開發(fā)者能夠調(diào)用可擴(kuò)展高速緩存依存關(guān)系基類的清除能力。第一個(gè)方法是通知依存關(guān)系改變(NotifyDependencyChanged)方法。該方法由從可擴(kuò)展高速緩存依存關(guān)系基類衍生的類調(diào)用,來告知可擴(kuò)展高速緩存依存關(guān)系類依存關(guān)系目已改變。第二個(gè)新方法是依存關(guān)系處置(DependencyDispose)方法。該方法是一個(gè)虛方法,提供了對衍生的類特定的位置清除。更詳細(xì)來說,該方法提供了指令的定位,該指令若非定制高速緩存依存關(guān)系,通常被置于可擴(kuò)展高速緩存依存關(guān)系基類的Dispose方法中。由此,可以釋放定制高速緩存依存關(guān)系所使用的資源,由需要訪問該資源的其它模塊使用。
通知依存關(guān)系改變(NotifyDependencyChanged)方法可由從可擴(kuò)展高速緩存依存關(guān)系(CacheDependency)基類依賴的定制高速緩存依存關(guān)系調(diào)用。由此,定制高速緩存依存關(guān)系類能夠使高速緩存條目依賴于數(shù)據(jù)庫中、web服務(wù)的數(shù)據(jù)上或鑒于任一其它原因的變化。從而,高速緩存能夠識(shí)別無效的高速緩存條目關(guān)鍵字,并從高速緩存中移除該關(guān)鍵字(以及相應(yīng)內(nèi)容)。
在一個(gè)說明性示例中,開發(fā)者創(chuàng)建從可擴(kuò)展高速緩存依存關(guān)系基類衍生的自定義類“SqlCacheDependency”,來輪詢SQL數(shù)據(jù)庫以確定是否對數(shù)據(jù)庫作出了改變。SqlCacheDependency從編程框架內(nèi)的可擴(kuò)展高速緩存依存關(guān)系基類衍生。因此,類SqlCacheDependency能夠調(diào)用通知依存關(guān)系改變方法,令服務(wù)器計(jì)算機(jī)系統(tǒng)清除相關(guān)高速緩存條目。
使用本發(fā)明的一個(gè)實(shí)施例,使用以下指令能夠?qū)崿F(xiàn)定制高速緩存依存關(guān)系的實(shí)例<pre listing-type="program-listing">10 If(Cache[″Produce″]==null{<br/>20 SqlConnection Connection=new SqlConnection([connection<br/>details]);<br/>30SqlDataAdapter ds=new SqlDataAdapter(″Product_GetProducts″,<br/>connection);<br/>…<br/>40 SqlCaheDependency dep=new SqlCacheDependency(″NorthWind″,<br/>″Products″);<br/>50 Cache.Insert(″Product″,ds,dep);<br/>}<br/></pre>上述代碼的行10檢查高速緩存中是否已經(jīng)有條目“Product”。如果該條目不在高速緩存中,則執(zhí)行“if”語句中的函數(shù)。行20建立到要檢取內(nèi)容的數(shù)據(jù)庫的連接。行30使用“Product_GetProducts”方法從數(shù)據(jù)庫檢取數(shù)據(jù)并將該數(shù)據(jù)儲(chǔ)存在變量“ds”中。在行40,變量“dep”被賦值為“NorthWind”數(shù)據(jù)庫中“Products”表上的依存關(guān)系。這一依存關(guān)系是從可擴(kuò)展高速緩存依存關(guān)系基類衍生的定制高速緩存依存關(guān)系。行50然后使變量“ds”中的數(shù)據(jù)插入到由關(guān)鍵字“Product”引用的高速緩存條目中,使該高速緩存條目取決于“dep”。
在該示例中,SqlCacheDependency是從可擴(kuò)展高速緩存依存關(guān)系基類衍生的定制高速緩存依存關(guān)系。當(dāng)從可擴(kuò)展高速緩存依存關(guān)系衍生的類用作依存關(guān)系時(shí),服務(wù)器計(jì)算機(jī)系統(tǒng)將該類作為可擴(kuò)展高速緩存依存關(guān)系的一個(gè)實(shí)例來處理。因此,服務(wù)器計(jì)算機(jī)系統(tǒng)能夠響應(yīng)由可擴(kuò)展高速緩存依存關(guān)系基類展示的類似行為,而在內(nèi)部,衍生的類可以實(shí)現(xiàn)其自己的特有功能,如當(dāng)數(shù)據(jù)庫查詢改變時(shí)被通知。定制高速緩存依存關(guān)系,本例中即SqlCacheDependency,覆蓋了可擴(kuò)展高速緩存依存關(guān)系基類的任何方法,來獲得所期望的功能。在本示例中,當(dāng)向SqlCacheDependency通知數(shù)據(jù)庫查詢變化時(shí),將調(diào)用base.Notify.DependencyChanged方法,使服務(wù)器計(jì)算機(jī)系統(tǒng)移除由關(guān)鍵字“Product”引用的高速緩存條目。
盡管本示例按照數(shù)據(jù)庫變化依存關(guān)系來描述,重要的是要記住,可擴(kuò)展高速緩存依存關(guān)系基類的可擴(kuò)展性允許虛擬地創(chuàng)建web開發(fā)者可構(gòu)想的任一高速緩存依存關(guān)系。采用可擴(kuò)展模型,web開發(fā)者能夠建立任一類自定義依存關(guān)系,包括基于兩個(gè)或更多依存關(guān)系的聚集依存關(guān)系。例如,高速緩存條目可能同時(shí)依賴于文件和SQL表。以下指令示出了聚集依存關(guān)系(aggregate dependency)的實(shí)現(xiàn)。
<pre listing-type="program-listing">70 if(Cache[″Product-List″]==null{<br/>80 SqlConnection Connection=new SqlConnection([connection details]);<br/>90 SqlDataAdapter ds=new SqlDataAdapter(″Product_GetProducts″,<br/>connection);<br/>100 SqlCacheDependency sqlDep=new SqlCacheDependency(″NorthWind″,<br/>″Products″);<br/>120 CacheDependency dep=new<br/>AggregateCacheDependency(Server.MapPath(″sales.xml″),sqlDep);<br/>130 Cache.Insert(″Product-List,ds,dep);<br/>}<br/></pre>這一代碼除行120外類似于上述標(biāo)號(hào)為行10-50的代碼。聚集高速緩存依存關(guān)系由高速緩存依存關(guān)系的衍生類,即AggregateCacheDependency實(shí)現(xiàn)。這可以用來使高速緩存中的條目同時(shí)依賴于文件(sales.xml)和從可擴(kuò)展高速緩存依存關(guān)系基類衍生的定制SqlCacheDependency。從可擴(kuò)展高速緩存依存關(guān)系基類衍生的類也可以提供另外的定制功能。即,可以開發(fā)衍生類來處理用于實(shí)現(xiàn)定制功能的任意事件、方法和屬性。例如,可以將衍生類開發(fā)為開始時(shí)間(例如,指定高速緩存依存關(guān)系何時(shí)應(yīng)當(dāng)開始監(jiān)控變化的時(shí)間)、支持依存關(guān)系的聚集的能力、支持回叫機(jī)制等等。因此,開發(fā)者不局限于可擴(kuò)展高速緩存依存關(guān)系基類的固有事件、方法和屬性。
現(xiàn)在參考圖1,示出了適合在其中實(shí)踐本發(fā)明的各方面的環(huán)境。圖1描述服務(wù)器100和客戶機(jī)102,分別通過相應(yīng)的鏈路121和122連接到網(wǎng)絡(luò)。服務(wù)器100和客戶機(jī)102能夠使用包括HTTP在內(nèi)的多種協(xié)議通過網(wǎng)絡(luò)104來通信。服務(wù)器100可以是ASP.NET服務(wù)器,能夠向客戶機(jī)102以動(dòng)態(tài)web頁的形式傳送動(dòng)態(tài)內(nèi)容。服務(wù)器包括各種類和模塊,包括可擴(kuò)展高速緩存依存關(guān)系類106和定制高速緩存依存關(guān)系114。服務(wù)器100也包括高速緩存110,可能位于服務(wù)器100的物理存儲(chǔ)器中或其它任一方便的位置。
服務(wù)器100通過鏈路123耦合至數(shù)據(jù)庫112。數(shù)據(jù)庫112可以是任一合適的數(shù)據(jù)庫,例如SQL數(shù)據(jù)庫或Oracle數(shù)據(jù)庫。在本發(fā)明的其它實(shí)施例中,數(shù)據(jù)庫112可以表示XML服務(wù)或任一其它數(shù)據(jù)源。
用作說明,客戶機(jī)102向服務(wù)器100請求特定的內(nèi)容。例如,客戶機(jī)102可能訪問向服務(wù)器100請求web頁的URL。服務(wù)器100檢查高速緩存110來確定所請求的內(nèi)容(如,web頁中的數(shù)據(jù))是否在高速緩存110中。如果該內(nèi)容不在高速緩存110中,則數(shù)據(jù)庫接口模塊108可以向數(shù)據(jù)庫112請求該內(nèi)容。如果合適,內(nèi)容,如內(nèi)容132被檢取并返回到數(shù)據(jù)庫接口模塊108。
可選地,所請求的內(nèi)容可能是從某一數(shù)據(jù)庫,如數(shù)據(jù)庫112中檢取的內(nèi)容的計(jì)算值或某種處理。數(shù)據(jù)庫接口模塊108可能將內(nèi)容計(jì)算或處理為適當(dāng)?shù)?。然后將?nèi)容發(fā)送至客戶102,如以一個(gè)或多個(gè)HTTP消息的形式。也可以使用Cache.Insert方法將該內(nèi)容添加到高速緩存110中。Cache.Insert方法指定由從可擴(kuò)展高速緩存依存關(guān)系基類106衍生的定制高速緩存依存關(guān)系類114定義的自定義依存關(guān)系。
由于內(nèi)容保留在高速緩存110中,它可以更有效地傳送到任一請求該內(nèi)容的客戶機(jī)。該內(nèi)容保留在高速緩存110中,直到定制高速緩存依存關(guān)系類114調(diào)用方法,如通知依存關(guān)系改變方法。在調(diào)用通知依存關(guān)系改變方法時(shí),從高速緩存中清除該內(nèi)容。客戶機(jī)隨后對該內(nèi)容的請求需要從數(shù)據(jù)庫112中重新獲取該內(nèi)容和/或由數(shù)據(jù)庫接口模塊108重新計(jì)算該內(nèi)容。
定制高速緩存依存關(guān)系類114可以在數(shù)據(jù)庫112中有變化時(shí)清除高速緩存110。在本示例中,盡管從數(shù)據(jù)庫112獲取數(shù)據(jù)可能是資源密集型的,然而另一方面,向數(shù)據(jù)庫112輪詢變化使用較少的資源。數(shù)據(jù)庫112可包括儲(chǔ)存數(shù)據(jù)庫112中的信息的數(shù)據(jù)庫表,如數(shù)據(jù)庫表116。另一數(shù)據(jù)庫表117還可包括標(biāo)記條目118,指示是否向數(shù)據(jù)庫表116中的信息作出了改變。數(shù)據(jù)庫表117可包含數(shù)據(jù)庫中具有自定義依存關(guān)系的其它表的標(biāo)記。在一個(gè)實(shí)施例中,標(biāo)記條目118可以是遞增的,令數(shù)據(jù)庫表116中的每一變化使標(biāo)記條目118遞增地增加其值??梢栽O(shè)計(jì)定制高速緩存依存關(guān)系114以當(dāng)檢測到標(biāo)記條目118中的增加時(shí)移除高速緩存條目。
現(xiàn)在參考圖2,示出了用于插入依存關(guān)系條目的方法的流程圖。圖2的方法包括訪問可擴(kuò)展高速緩存依存關(guān)系基類的行動(dòng)(行動(dòng)202)。行動(dòng)202可包括服務(wù)器計(jì)算機(jī)系統(tǒng)訪問可擴(kuò)展高速緩存依存關(guān)系基類。例如,服務(wù)器100可以訪問可擴(kuò)展高速緩存依存關(guān)系類106。服務(wù)器100可訪問高速緩存依存關(guān)系類106作為執(zhí)行由web頁開發(fā)者、其它軟件開發(fā)者開發(fā)的或作為一些程序模塊的一部分的指令的結(jié)果。
圖2的方法包括從可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類(行動(dòng)204)。行動(dòng)204包括服務(wù)器計(jì)算機(jī)系統(tǒng)從可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類。例如,服務(wù)器100可以從可擴(kuò)展高速緩存依存關(guān)系基類106衍生定制高速依存關(guān)系114。服務(wù)器100可衍生定制高速緩存依存關(guān)系114,作為執(zhí)行由web開發(fā)者、軟件開發(fā)者開發(fā)的或者作為某一程序模塊的一部分的指令的結(jié)果,來創(chuàng)建定制高速緩存依存關(guān)系。服務(wù)器100也可以從許多源衍生定制高速緩存依存關(guān)系114,源包括但不限于連接到計(jì)算機(jī)的外部傳感器,如溫度計(jì),只要條件變化就觸發(fā)事件;運(yùn)動(dòng)得分板程序,只要比賽中的得分變化就觸發(fā)事件;網(wǎng)絡(luò)管理程序,只要網(wǎng)絡(luò)配置變化(如計(jì)算機(jī)添加到網(wǎng)絡(luò)或從其中移除)就觸發(fā)事件;以及目錄程序,只要目錄變化(如添加或刪除人員)就觸發(fā)事件。
圖2的方法包括訪問內(nèi)容(行動(dòng)206)。行動(dòng)206可包括服務(wù)器計(jì)算機(jī)系統(tǒng)訪問將要包括在web頁內(nèi)用于向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容。例如,服務(wù)器100能夠訪問將要包括在web頁內(nèi)用于向客戶機(jī)102傳送的內(nèi)容。訪問內(nèi)容可包括創(chuàng)建或處理內(nèi)容。內(nèi)容可以從多種不同的位置訪問,如,從數(shù)據(jù)庫和web服務(wù)。例如,服務(wù)器可以訪問儲(chǔ)存在數(shù)據(jù)庫112上的數(shù)據(jù)。數(shù)據(jù)庫接口模塊108或其它合適的模塊可以適當(dāng)?shù)馗袷交瘮?shù)據(jù),用于包括在web頁中。
圖2的方法包括創(chuàng)建與定制高速緩存依存關(guān)系關(guān)聯(lián)的高速緩存條目的行動(dòng)(行動(dòng)208)。行動(dòng)208可包括服務(wù)器計(jì)算機(jī)系統(tǒng)創(chuàng)建與定制高速緩存依存關(guān)系關(guān)聯(lián)的高速緩存條目。例如,服務(wù)器100能夠創(chuàng)建與定制高速緩存依存關(guān)系114關(guān)聯(lián)的高速緩存條目。在一個(gè)實(shí)施例中,高速緩存條目由服務(wù)器100作出的可變定義語句創(chuàng)建(如,類似于上述指令的行50)。
圖2的方法包括將高速緩存條目插入到高速緩存的行動(dòng)(行動(dòng)210)。行動(dòng)210可包括服務(wù)器計(jì)算機(jī)系統(tǒng)將高速緩存條目插入到服務(wù)器計(jì)算機(jī)系統(tǒng)的高速緩存位置。例如,服務(wù)器100可以將高速緩存條目插入到高速緩存110中??梢詫⒏咚倬彺娴臈l目插入到高速緩存中,使高速緩存的條目的有效性(并因此也使高速緩存的內(nèi)容的有效性)依賴于定制依存關(guān)系。例如,服務(wù)器100可以將高速緩存條目插入到依賴于由定制高速依存關(guān)系114產(chǎn)生的依存關(guān)系的高速緩存110中。
現(xiàn)在參考圖3,示出了用于使用定制高速緩存依存關(guān)系來將高速緩存條目無效化的方法。圖3的方法包括監(jiān)控由定制高速依存關(guān)系的實(shí)例設(shè)置的自定義依存關(guān)系條件的行動(dòng)(行動(dòng)302)。行動(dòng)302可包括服務(wù)器計(jì)算機(jī)系統(tǒng)監(jiān)控由在服務(wù)器計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的定制高速緩存依存關(guān)系類的實(shí)例設(shè)置的自定義依存關(guān)系條件。例如,服務(wù)器100能夠監(jiān)控由定制高速緩存依存關(guān)系類114的實(shí)例設(shè)置的自定義依存關(guān)系條件。定制依存關(guān)系條件可以是事件的出現(xiàn),如數(shù)據(jù)庫的內(nèi)容或web服務(wù)提供的內(nèi)容中的變化。例如,服務(wù)器100能夠監(jiān)控標(biāo)記條目118來監(jiān)控?cái)?shù)據(jù)庫表16的內(nèi)容的變化。當(dāng)定制高速緩存依存關(guān)系類114與聚集依存關(guān)系關(guān)聯(lián)時(shí),可以監(jiān)控多個(gè)自定義依存關(guān)系條件。
圖3的方法包括確定是否滿足了自定義依存關(guān)系條件的行動(dòng)(行動(dòng)304)。行動(dòng)304可包括服務(wù)器計(jì)算機(jī)系統(tǒng)確定是否滿足了與定制高速緩存的依存關(guān)系關(guān)聯(lián)的自定義依存關(guān)系條件。例如,服務(wù)器100能確定是否滿足與定制高速緩存依存關(guān)系類114關(guān)聯(lián)的自定義依存關(guān)系條件。當(dāng)定制高速緩存依存關(guān)系類114與聚集依存關(guān)系關(guān)聯(lián)時(shí),服務(wù)器100能確定是否滿足多個(gè)自定義依存關(guān)系條件中的每一自定義依存關(guān)系條件。
在一些實(shí)施例中,服務(wù)器100通過將儲(chǔ)存的標(biāo)記條目(flag entry)與當(dāng)前標(biāo)記條目相比較來確定是否滿足了自定義依存關(guān)系條件。例如,服務(wù)器100能將標(biāo)記條目118的先前檢取并儲(chǔ)存的值與標(biāo)記條目118的當(dāng)前值相比較。當(dāng)標(biāo)記條目118是遞增的時(shí),定制高速緩存依存關(guān)系類114能將當(dāng)前在數(shù)據(jù)庫表117中的標(biāo)記條目118與在某一之前的時(shí)刻在數(shù)據(jù)庫表117中存在的標(biāo)記條目相比較。如果當(dāng)前在表中的標(biāo)記條目118大于某一之前時(shí)刻在數(shù)據(jù)庫表117中的標(biāo)記條目,則滿足自定義依存關(guān)系條件(數(shù)據(jù)庫表116的內(nèi)容變化)。
當(dāng)不滿足自定義依存關(guān)系條件時(shí)(行動(dòng)304之否),服務(wù)器100能夠再一次監(jiān)控自定義依存關(guān)系條件??梢砸灾付ǖ臅r(shí)間間隔(如每5秒)重復(fù)監(jiān)控自定義依存關(guān)系條件,直到滿足一個(gè)或多個(gè)自定義依存關(guān)系條件,如,出現(xiàn)了監(jiān)控的事件(行動(dòng)304之是)。
圖3的方法包括指示滿足自定義依存關(guān)系條件的行動(dòng)(行動(dòng)306)。行動(dòng)306可包括向服務(wù)器計(jì)算機(jī)系統(tǒng)指示滿足自定義依存關(guān)系條件的通知依存關(guān)系改變方法。例如,定制高速緩存依存關(guān)系類114的通知依存關(guān)系改變方法能夠在數(shù)據(jù)庫116的內(nèi)容變化時(shí)通知服務(wù)器100。滿足自定義依存關(guān)系條件的通知能夠向服務(wù)器100指示要清除高速緩存條目。
圖3的方法包括清除高速緩存(行動(dòng)308)。行動(dòng)308可包括服務(wù)器計(jì)算機(jī)系統(tǒng)清除服務(wù)器計(jì)算機(jī)系統(tǒng)上的高速緩存條目。例如,服務(wù)器100能從高速緩存110中清除高速緩存條目??梢郧宄咚倬彺娴臈l目作為對接受滿足與定制高速緩存依存關(guān)系關(guān)聯(lián)的自定義依存關(guān)系條件的通知的響應(yīng)。例如,服務(wù)器100可清除依賴于數(shù)據(jù)庫表116的高速緩存的條目,作為對接受標(biāo)記條目118增加的通知的響應(yīng)。當(dāng)清除高速緩存條目后,計(jì)算機(jī)系統(tǒng)100能夠釋放被消耗來保留高速緩存條目的資源(如系統(tǒng)存儲(chǔ)器)。例如,服務(wù)器計(jì)算機(jī)系統(tǒng)100能夠調(diào)用與定制高速緩存依存關(guān)系類114關(guān)聯(lián)的依存關(guān)系處置方法來釋放儲(chǔ)存來自數(shù)據(jù)庫表116的內(nèi)容的高速緩存條目的資源。
本發(fā)明的實(shí)施例可包括專用或通用計(jì)算機(jī),包括各種計(jì)算機(jī)硬件,如下文所詳細(xì)討論的。處于本發(fā)明的范圍之內(nèi)的實(shí)施例也包括用于攜帶或在其上儲(chǔ)存計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀媒質(zhì)。這類計(jì)算機(jī)可讀媒質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)訪問的任何可用媒質(zhì)。作為實(shí)例而非局限,這類計(jì)算機(jī)可讀媒質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來以計(jì)算機(jī)可執(zhí)行執(zhí)行或數(shù)據(jù)結(jié)構(gòu)攜帶或儲(chǔ)存期望的程序代碼方法并可由通用或?qū)S糜?jì)算機(jī)訪問的任何其它媒質(zhì)。當(dāng)通過網(wǎng)絡(luò)或另一通信連接(任一硬布線、無線或硬布線和無線的組合)向計(jì)算機(jī)傳輸或提供信息時(shí),計(jì)算機(jī)適當(dāng)?shù)貙⒃撨B接視為計(jì)算機(jī)可讀媒質(zhì)。因此,任一這類連接適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀媒質(zhì)。上述的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀媒質(zhì)的范圍內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括,如,使通用計(jì)算機(jī)、專用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行特定的函數(shù)或函數(shù)組的指令和數(shù)據(jù)。
圖4及以下討論提供了適合在其中實(shí)現(xiàn)本發(fā)明的計(jì)算環(huán)境的簡要一般描述。盡管并非所需要,本發(fā)明在計(jì)算機(jī)可執(zhí)行指令的一般語境下描述,計(jì)算機(jī)可執(zhí)行指令如程序模塊,由網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)可執(zhí)行指令、相關(guān)數(shù)據(jù)結(jié)構(gòu)以及程序模塊代表了用于執(zhí)行這里披露的方法的步驟的程序代碼方法。這類可執(zhí)行指令或相關(guān)數(shù)據(jù)結(jié)構(gòu)的特定順序代表用于實(shí)現(xiàn)這類步驟中描述的功能的相應(yīng)動(dòng)作的示例。
本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以在具有多種類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、微處理器系統(tǒng)或可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)等等。本發(fā)明也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接(或者通過硬布線鏈路、或者通過無線鏈路、或者通過硬布線和無線鏈路的組合)的本地和遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。
參考圖4,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括以常規(guī)計(jì)算機(jī)形式420的通用計(jì)算裝置,包括處理單元421、系統(tǒng)存儲(chǔ)器422以及將各類系統(tǒng)組件包括系統(tǒng)存儲(chǔ)器422耦合至處理單元421的系統(tǒng)總線423。系統(tǒng)總線423可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類總線結(jié)構(gòu)的本地總線。系統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器(ROM)424和隨機(jī)存取存儲(chǔ)器(RAM)425?;据斎?輸出系統(tǒng)(BIOS)426,包含如在啟動(dòng)時(shí)協(xié)助在計(jì)算機(jī)420內(nèi)的元件之間傳輸信息的基本例程,可儲(chǔ)存在ROM 424中。
計(jì)算機(jī)420也可包括用于對磁硬盤439進(jìn)行讀寫的磁硬盤驅(qū)動(dòng)器427、用于對可移動(dòng)磁盤429進(jìn)行讀寫的磁盤驅(qū)動(dòng)器428以及用于對可移動(dòng)光盤431如CD-ROM或其它光媒質(zhì)進(jìn)行讀寫的光盤驅(qū)動(dòng)器430。磁硬盤驅(qū)動(dòng)器427、磁盤驅(qū)動(dòng)器428以及光盤驅(qū)動(dòng)器430分別通過硬盤驅(qū)動(dòng)器接口432、磁盤驅(qū)動(dòng)器接口433和光盤驅(qū)動(dòng)器接口434連接至系統(tǒng)總線423。驅(qū)動(dòng)器及其相關(guān)的計(jì)算機(jī)可讀媒質(zhì)為計(jì)算機(jī)420提供了計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的非易失存儲(chǔ)。盡管這里描述的示例環(huán)境采用了磁硬盤439、可移動(dòng)磁盤429以及可移動(dòng)光盤431,然而也可以使用用于儲(chǔ)存數(shù)據(jù)的其它類型的計(jì)算機(jī)可讀媒質(zhì),包括盒式磁帶、閃存卡、數(shù)字多功能盤、Bernoulli盒式磁盤、RAM、ROM等等。
包括一個(gè)或多個(gè)程序模塊的程序代碼方法可儲(chǔ)存在硬盤439、磁盤429、光盤431、ROM 424或RAM 425中,包括操作系統(tǒng)435、一個(gè)或多個(gè)應(yīng)用程序436、其它程序模塊437以及程序數(shù)據(jù)438。用戶可以通過鍵盤440、指向設(shè)備442或其它輸入設(shè)備(未示出),如麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等向計(jì)算機(jī)420輸入命令和信息。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線423的串行端口接口446連接到處理單元421??蛇x地,輸入設(shè)備也可以通過其它接口連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器447或另一顯示設(shè)備也通過接口,如視頻適配器448連接到系統(tǒng)總線423。除監(jiān)視器之外,個(gè)人計(jì)算機(jī)通常包括其它外圍輸出設(shè)備(未示出),如揚(yáng)聲器和打印機(jī)。
計(jì)算機(jī)系統(tǒng)420可連接到網(wǎng)絡(luò),如辦公室范圍或企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和/或因特網(wǎng)。計(jì)算機(jī)系統(tǒng)420能夠通過這類網(wǎng)絡(luò)與外部源,如遠(yuǎn)程計(jì)算機(jī)系統(tǒng)、遠(yuǎn)程應(yīng)用和/或遠(yuǎn)程數(shù)據(jù)庫交換數(shù)據(jù)。
計(jì)算機(jī)系統(tǒng)420包括網(wǎng)絡(luò)接口453,計(jì)算機(jī)系統(tǒng)420通過該接口從外部源接收數(shù)據(jù)和/或向外部源發(fā)送數(shù)據(jù)。如圖4所述,網(wǎng)絡(luò)接口453方便了通過鏈路451與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)483的數(shù)據(jù)交換。鏈路451表示網(wǎng)絡(luò)的一部分,遠(yuǎn)程計(jì)算機(jī)系統(tǒng)483表示網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn)。例如,遠(yuǎn)程計(jì)算機(jī)483可以維護(hù)提供用于在計(jì)算機(jī)系統(tǒng)420上構(gòu)造的web頁的內(nèi)容的數(shù)據(jù)庫。另一方面,計(jì)算機(jī)系統(tǒng)483可以是向計(jì)算機(jī)系統(tǒng)420維護(hù)的數(shù)據(jù)庫請求內(nèi)容的服務(wù)器計(jì)算機(jī)。
類似地,計(jì)算機(jī)系統(tǒng)420包括串行端口接口446,計(jì)算機(jī)系統(tǒng)420通過該接口從外部源接收數(shù)據(jù)和/或向外部源發(fā)送數(shù)據(jù)。串行端口接口446耦合至調(diào)制解調(diào)器454,計(jì)算機(jī)系統(tǒng)420通過調(diào)制解調(diào)器從外部源接收數(shù)據(jù)和/或向其發(fā)送數(shù)據(jù)??蛇x地,調(diào)制解調(diào)器454可以是通過適當(dāng)?shù)慕涌谶B接到計(jì)算機(jī)系統(tǒng)420的有線數(shù)據(jù)業(yè)務(wù)接口技術(shù)規(guī)范(“DOCSIS”)調(diào)制解調(diào)器或數(shù)字用戶線(“DSL”)調(diào)制解調(diào)器。然而,如圖4所述,串行端口接口446和調(diào)制解調(diào)器454方便了通過鏈路452與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)493的數(shù)據(jù)交換。鏈路452表示網(wǎng)絡(luò)的一部分,遠(yuǎn)程計(jì)算機(jī)系統(tǒng)493表示網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn)。例如,遠(yuǎn)程計(jì)算機(jī)系統(tǒng)493可以是向計(jì)算機(jī)系統(tǒng)420請求web頁的客戶計(jì)算機(jī)系統(tǒng)。另一方面,計(jì)算機(jī)系統(tǒng)493可以是向計(jì)算機(jī)系統(tǒng)420提供web頁的服務(wù)器計(jì)算機(jī)系統(tǒng)。
本發(fā)明可以在不脫離其精神或本質(zhì)特征的情況下以其它特定的形式來實(shí)施。所描述的實(shí)施例在所有方面僅為說明性的,而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非上文的描述來指出。所有處于權(quán)利要求的等效技術(shù)方案的意思和范圍之內(nèi)的變化都包含在其范圍之內(nèi)。
權(quán)利要求
1.在向請求客戶計(jì)算機(jī)系統(tǒng)提供web頁的服務(wù)器計(jì)算機(jī)系統(tǒng)中,所述web頁可能包括來自所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置的內(nèi)容,所述服務(wù)器計(jì)算機(jī)系統(tǒng)包括一高速緩存,其儲(chǔ)存先前從所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置接收的高速緩存的內(nèi)容的部分,一種用于使高速緩存條目依賴于定制依存關(guān)系的方法,其特征在于,所述方法包括以下行動(dòng)訪問可擴(kuò)展高速緩存依存關(guān)系基類的行動(dòng);從所述可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類的行動(dòng),所述定制高速緩存依存關(guān)系類用于實(shí)現(xiàn)定制依存關(guān)系;訪問將要向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容的一部分的行動(dòng);創(chuàng)建將所述定制依存關(guān)系與所訪問的內(nèi)容的部分相關(guān)聯(lián)的高速緩存條目的行動(dòng);以及將所述高速緩存條目插入所述高速緩存以使所述高速緩存條目的有效性依賴于所述定制依存關(guān)系的行動(dòng)。
2.如權(quán)利要求1所述的方法,其特征在于,訪問可擴(kuò)展高速緩存依存關(guān)系基類的所述行動(dòng)包括訪問包括通知依存關(guān)系改變方法的高速緩存依存關(guān)系基類的行動(dòng),所述行動(dòng)使從所述高速緩存依存關(guān)系基類衍生的類能夠通過調(diào)用所述通知依存關(guān)系改變方法來實(shí)現(xiàn)所述高速緩存依存關(guān)系基類的清除功能。
3.如權(quán)利要求1所述的方法,其特征在于,訪問可擴(kuò)展高速依存關(guān)系基類的所述行動(dòng)包括訪問包括依存關(guān)系處置方法的高速緩存依存關(guān)系基類的行動(dòng),所述行動(dòng)使從所述高速緩存依存關(guān)系基類衍生的類能夠通過調(diào)用所述依存關(guān)系處置方法來釋放由高速緩存條目占用的資源。
4.如權(quán)利要求1所述的方法,其特征在于,從所述可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類的所述行動(dòng)包括衍生能夠?qū)崿F(xiàn)來引發(fā)高速緩存條目依賴于數(shù)據(jù)庫表的定制高速緩存依存關(guān)系類的行動(dòng)。
5.如權(quán)利要求1所述的方法,其特征在于,從所述可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類的行動(dòng)包括衍生能夠?qū)崿F(xiàn)以使高速緩存條目依賴于web服務(wù)的定制高速緩存依存關(guān)系類的行動(dòng)。
6.如權(quán)利要求1所述的方法,其特征在于,訪問將要向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容的一部分的所述行動(dòng)包括訪問將要包括在web頁內(nèi)的內(nèi)容的一部分的行動(dòng)。
7.如權(quán)利要求1所述的方法,其特征在于,訪問將要向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容的一部分的所述行動(dòng)包括訪問來自數(shù)據(jù)庫表的內(nèi)容的一部分的行動(dòng)。
8.如權(quán)利要求1所述的方法,其特征在于,訪問將要向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容的一部分的所述行動(dòng)包括訪問來自web服務(wù)的內(nèi)容的一部分的行動(dòng)。
9.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建將所述定制依存關(guān)系與所訪問的內(nèi)容的一部分相關(guān)聯(lián)的高速緩存條目的所述行動(dòng)包括創(chuàng)建使來自數(shù)據(jù)庫表的內(nèi)容依賴于所述數(shù)據(jù)庫表的高速緩存條目的行動(dòng)。
10.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建將所述定制依存關(guān)系與所訪問的內(nèi)容的一部分相關(guān)聯(lián)的高速緩存條目的所述行動(dòng)包括創(chuàng)建使來自數(shù)據(jù)庫表的內(nèi)容依賴于聚集依存關(guān)系的高速緩存條目的行動(dòng)。
11.如權(quán)利要求1所述的方法,其特征在于,創(chuàng)建將所述定制依存關(guān)系與所訪問的內(nèi)容的一部分相關(guān)聯(lián)的高速緩存條目的所述行動(dòng)包括創(chuàng)建使來自web服務(wù)的內(nèi)容依賴于所述web服務(wù)的高速緩存條目的行動(dòng)。
12.如權(quán)利要求1所述的方法,其特征在于,將所述高速緩存條目插入高速緩存以使所述高速緩存條目的有效性依賴于所述定制依存關(guān)系的所述行動(dòng)包括插入依賴于數(shù)據(jù)庫表的高速緩存條目的行動(dòng)。
13.如權(quán)利要求1所述的方法,其特征在于,將所述高速緩存條目插入高速緩存以使所述高速緩存條目的有效性依賴于所述定制依存關(guān)系的所述行動(dòng)包括插入依賴于聚集依存關(guān)系的高速緩存條目的行動(dòng)。
14.如權(quán)利要求1所述的方法,其特征在于,不需要指定開始時(shí)間屬性來調(diào)用所述可擴(kuò)展高速緩存依存關(guān)系基類的功能。
15.在向請求客戶計(jì)算機(jī)系統(tǒng)提供web頁的服務(wù)器計(jì)算機(jī)系統(tǒng)中,所述web頁可能包括來自所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置的內(nèi)容,所述服務(wù)器計(jì)算機(jī)系統(tǒng)包括儲(chǔ)存先前從所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部接收到的高速緩存的內(nèi)容的部分的高速緩存,一種用于清除高速緩存條目的方法,其特征在于,所述方法包括以下行動(dòng)監(jiān)控與定制高速緩存依存關(guān)系的實(shí)例相關(guān)聯(lián)的一個(gè)或多個(gè)自定義依存關(guān)系條件的行動(dòng);確定是否滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的行動(dòng);接收滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的指示的行動(dòng);以及作為對接收所述指示的響應(yīng),在所述服務(wù)器計(jì)算機(jī)系統(tǒng)上清除高速緩存條目的行動(dòng)。
16.如權(quán)利要求15所述的方法,其特征在于,監(jiān)控與定制高速緩存依存關(guān)系的實(shí)例相關(guān)聯(lián)的一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括監(jiān)控?cái)?shù)據(jù)庫表依存關(guān)系的行動(dòng)。
17.如權(quán)利要求15所述的方法,其特征在于,監(jiān)控與定制高速緩存依存關(guān)系的實(shí)例相關(guān)聯(lián)的一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括監(jiān)控web服務(wù)依存關(guān)系的行動(dòng)。
18.如權(quán)利要求15所述的方法,其特征在于,監(jiān)控與定制高速緩存依存關(guān)系的實(shí)例相關(guān)聯(lián)的一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括監(jiān)控聚集依存關(guān)系的行動(dòng)。
19.如權(quán)利要求15所述的方法,其特征在于,確定是否滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括確定標(biāo)記條目是否增加的行動(dòng)。
20.如權(quán)利要求15所述的方法,其特征在于,確定是否滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括確定是否滿足與聚集依存關(guān)系關(guān)聯(lián)的依存關(guān)系條件的行動(dòng)。
21.如權(quán)利要求15所述的方法,其特征在于,確定是否滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的所述行動(dòng)包括在發(fā)生由定制高速緩存依存關(guān)系類的實(shí)例指定的某一事件時(shí)調(diào)用通知依存關(guān)系改變方法。
22.如權(quán)利要求15所述的方法,其特征在于,接收滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的指示的所述行動(dòng)包括從通知依存關(guān)系改變方法接收滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的指示的行動(dòng)。
23.如權(quán)利要求15所述的方法,其特征在于,作為對接收所述指示的響應(yīng)在所述服務(wù)器計(jì)算機(jī)系統(tǒng)上清除高速緩存條目的所述行動(dòng)包括清除依賴于數(shù)據(jù)庫表的高速緩存條目的行動(dòng)。
24.如權(quán)利要求15所述的方法,其特征在于,作為對接收所述指示的響應(yīng)在所述服務(wù)器計(jì)算機(jī)系統(tǒng)上清除高速緩存條目的所述行動(dòng)包括清除依賴于web服務(wù)的高速緩存條目的行動(dòng)。
25.如權(quán)利要求15所述的方法,其特征在于,作為對接收所述指示的響應(yīng)在服務(wù)器計(jì)算機(jī)系統(tǒng)上清除高速緩存條目的所述行動(dòng)包括清除依賴于聚集依存關(guān)系的高速緩存條目的行動(dòng)。
26.如權(quán)利要求15所述的方法,其特征在于,它還包括釋放為了保留所述清除的高速緩存條目而被消耗的資源的行動(dòng)。
27.如權(quán)利要求26所述的方法,其特征在于,釋放為了保留所述清除的高速緩存條目而被消耗的資源的所述行動(dòng)包括調(diào)用與定制高速緩存依存關(guān)系相關(guān)聯(lián)的依存關(guān)系處置方法,所述定制高速緩存依存關(guān)系從可擴(kuò)展高速緩存依存關(guān)系基類衍生。
28.一種在服務(wù)器計(jì)算機(jī)系統(tǒng)中使用的計(jì)算機(jī)程序產(chǎn)品,所述服務(wù)器計(jì)算機(jī)系統(tǒng)向請求客戶計(jì)算機(jī)系統(tǒng)提供web頁,所述web頁可能包括來自所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置的內(nèi)容,所述服務(wù)器計(jì)算機(jī)系統(tǒng)包括儲(chǔ)存先前從所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置接收的高速緩存的內(nèi)容的部分的高速緩存,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品用于注入一種使高速緩存條目依賴于定制依存關(guān)系的方法,所述計(jì)算機(jī)程序包括一個(gè)或多個(gè)在其上儲(chǔ)存計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀媒質(zhì),當(dāng)由處理器執(zhí)行所述計(jì)算機(jī)可執(zhí)行指令時(shí),使所述服務(wù)器計(jì)算機(jī)系統(tǒng)執(zhí)行以下步驟訪問可擴(kuò)展高速緩存依存關(guān)系基類;從所述可擴(kuò)展高速緩存依存關(guān)系基類衍生定制高速緩存依存關(guān)系類,所述定制高速緩存依存關(guān)系類用于實(shí)現(xiàn)所述定制依存關(guān)系;訪問將要向客戶計(jì)算機(jī)系統(tǒng)傳送的內(nèi)容的一部分;創(chuàng)建將所述定制依存關(guān)系與所述訪問的內(nèi)容的部分相關(guān)聯(lián)的高速緩存條目;以及將所述高速緩存條目插入高速緩存,使所述高速緩存條目的有效性依賴于所述定制依存關(guān)系。
29.一種在服務(wù)器計(jì)算機(jī)系統(tǒng)中使用的計(jì)算機(jī)程序產(chǎn)品,所述服務(wù)器計(jì)算機(jī)系統(tǒng)向請求客戶計(jì)算機(jī)系統(tǒng)提供web頁,所述web頁可能包括來自所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置的內(nèi)容,所述服務(wù)器計(jì)算機(jī)系統(tǒng)包括儲(chǔ)存先前從所述服務(wù)器計(jì)算機(jī)系統(tǒng)外部的位置接收的高速緩存的內(nèi)容的部分的高速緩存,其特征在于,所述計(jì)算機(jī)程序產(chǎn)品用于注入一種清除高速緩存條目的方法,所述計(jì)算機(jī)程序產(chǎn)品包括在其上儲(chǔ)存計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀媒質(zhì),當(dāng)由處理器執(zhí)行所述計(jì)算機(jī)可讀指令時(shí),使所述服務(wù)器計(jì)算機(jī)系統(tǒng)執(zhí)行以下步驟監(jiān)控與定制高速緩存的實(shí)例相關(guān)聯(lián)的一個(gè)或多個(gè)自定義依存關(guān)系條件;確定是否滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件;接收滿足所述一個(gè)或多個(gè)自定義依存關(guān)系條件的指示;以及作為對接收所述指示的響應(yīng)在服務(wù)器計(jì)算機(jī)系統(tǒng)上清除高速緩存條目。
30.一種web頁服務(wù)器,其特征在于,它包括處理器;以及一個(gè)或多個(gè)計(jì)算機(jī)可讀媒質(zhì),其上儲(chǔ)存以下內(nèi)容高速緩存;框架,其中,所述框架包括用于衍生自定義依存關(guān)系類的可擴(kuò)展高速緩存依存關(guān)系基類,其中,所述自定義依存關(guān)系類用來定義至少一個(gè)事件,所述事件的出現(xiàn)使得所述高速緩存中包含的高速緩存條目被清除。
全文摘要
說明了用于衍生自定義高速緩存依存關(guān)系的系統(tǒng)、方法和計(jì)算機(jī)產(chǎn)品。揭示了一種包括可擴(kuò)展高速緩存依存關(guān)系基類的框架,所述可擴(kuò)展高速緩存依存關(guān)系基類可用來衍生用于在某些自定義條件下將高速緩存條目無效化的自定義高速緩存依存關(guān)系類。在一些實(shí)施例中,web頁服務(wù)器包括高速緩存以及包括可擴(kuò)展高速緩存依存關(guān)系基類的框架。披露了用于引發(fā)高速緩存條目依賴于定制高速緩存依存關(guān)系并用于基于定制高速緩存依存關(guān)系將高速緩存條目無效化的方法。例如,高速緩存條目可以依賴于數(shù)據(jù)庫表和web服務(wù),并基于其依存關(guān)系被清除。
文檔編號(hào)G06F17/30GK1573690SQ20041006189
公開日2005年2月2日 申請日期2004年6月23日 優(yōu)先權(quán)日2003年6月23日
發(fā)明者A·W·史密斯, R·M·海華德, P·Y·-K·吳 申請人:微軟公司