專利名稱:用于高速緩存萬維網(wǎng)內(nèi)容的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于高速緩存萬維網(wǎng)內(nèi)容的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,特別涉及為動(dòng)態(tài)門戶頁面產(chǎn)生高速緩存信息,并且在現(xiàn)存的高速緩存代理基礎(chǔ)結(jié)構(gòu)中產(chǎn)生它們的高速緩存。
背景技術(shù):
使用萬維網(wǎng)的高速緩存已經(jīng)有很長(zhǎng)時(shí)間了。在下層的HTTP協(xié)議中定義了基本的標(biāo)準(zhǔn),其允許萬維網(wǎng)頁面的高速緩存。這些協(xié)議主要側(cè)重于靜態(tài)頁面所需的高速緩存。如果假設(shè)全是動(dòng)態(tài)頁面,則總是將它們作為由一個(gè)URL單獨(dú)請(qǐng)求的不可分離的完整的頁面。
門戶服務(wù)器應(yīng)用程序(之后稱為門戶)已經(jīng)引入了萬維網(wǎng)頁面內(nèi)容的靈活性的新的方面。門戶頁面(見圖1)包括多個(gè)部分,它們具有不同的狀態(tài)并且具有針對(duì)它們各自內(nèi)容的不同高速緩存需求。Portlet是在門戶中運(yùn)行的應(yīng)用程序。這些應(yīng)用程序的UI包括由門戶提供的門戶頁面的子部分?;谒鼈儍?nèi)部的狀態(tài),這些Portlet根據(jù)請(qǐng)求動(dòng)態(tài)地產(chǎn)生它們的標(biāo)記(markup)片段。由布局應(yīng)用程序(主題/皮膚)產(chǎn)生門戶的外觀和感覺。布局應(yīng)用程序是動(dòng)態(tài)應(yīng)用程序,其可以根據(jù)它們的狀態(tài)來控制外觀和感覺。迄今對(duì)完整提供的門戶頁面還沒有進(jìn)行高速緩存。僅僅可以高速緩存所產(chǎn)生的頁面的非常小的子集,因?yàn)橐阎浑S時(shí)間而改變它們的內(nèi)容。
門戶頁面是高度動(dòng)態(tài)的。由多個(gè)動(dòng)態(tài)應(yīng)用程序組件的等級(jí)結(jié)構(gòu)和如在可以隨時(shí)間改變的頁面上的Portlet的組合的狀態(tài)、在頁面上的Portlet的狀態(tài)、可以隨時(shí)間改變的這些Portlet的內(nèi)容、以及依照當(dāng)前配置和當(dāng)前狀態(tài)的最可能導(dǎo)航元素,來產(chǎn)生它們頁面的內(nèi)容。
Portlet是有狀態(tài)的應(yīng)用程序而且根據(jù)每個(gè)請(qǐng)求提供它們的標(biāo)記。不僅標(biāo)記自身是動(dòng)態(tài)的,而且所提供的標(biāo)記的壽命也是在Portlet的執(zhí)行時(shí)動(dòng)態(tài)地計(jì)算的。標(biāo)記片段的所期望壽命依賴于Portlet的當(dāng)前狀態(tài)。
門戶頁面的高度動(dòng)態(tài)特性使得它們不可以高速緩存。
作為緩解措施,依照每個(gè)獨(dú)立的片段的失效時(shí)間,今天的一些門戶產(chǎn)品支持單個(gè)頁面片段的高速緩存。對(duì)進(jìn)來的請(qǐng)求,將這些片段匯集從而制成完整的門戶頁面。由門戶自己來進(jìn)行這個(gè)工作,所以對(duì)門戶頁面的每個(gè)請(qǐng)求都需要通過網(wǎng)絡(luò)的全部路線到達(dá)起始服務(wù)器。
今天還沒有技術(shù)能夠利用高速緩存機(jī)制來允許高度動(dòng)態(tài)的門戶頁面的高速緩存。
本發(fā)明的目的是提供方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,其能夠在不改變現(xiàn)存的高速緩存基礎(chǔ)結(jié)構(gòu)或?qū)⑹褂玫膫鬏攨f(xié)議的情況下,允許動(dòng)態(tài)門戶頁面的高速緩存。
發(fā)明內(nèi)容
本發(fā)明提供一種方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,其能夠在不改變現(xiàn)存的高速緩存代理基礎(chǔ)結(jié)構(gòu)或?qū)⑹褂玫膫鬏攨f(xié)議的情況下,通過提供高級(jí)的高速緩存組件,允許動(dòng)態(tài)門戶頁面的高速緩存。
該高級(jí)的高速緩存組件提供功能,其中提供額外的動(dòng)態(tài)頁面特定高速緩存信息作為包括門戶頁面的響應(yīng)的部分。
在門戶中每個(gè)組件都額外地提供動(dòng)態(tài)組件特定高速緩存信息,該門戶動(dòng)態(tài)地把將被匯集的頁面片段提供給門戶頁面,該動(dòng)態(tài)組件特定高速緩存信息包括組件特定高速緩存范圍值和組件特定高速緩存失效值。使用所有的這些單一組件特定高速緩存范圍和高速緩存失效值,來計(jì)算動(dòng)態(tài)頁面特定高速緩存信息,結(jié)果是產(chǎn)生將被匯集的門戶頁面的公共最小高速緩存范圍和公共最小高速緩存失效值。該動(dòng)態(tài)頁面特定高速緩存信息確保正確地選擇從組件提供來的最小高速緩存范圍和不超過任何組件特定高速緩存失效值的最小高速緩存失效。提供動(dòng)態(tài)頁面特定高速緩存信息,作為包括門戶頁面的響應(yīng)的頭部的部分。然后高速緩存評(píng)估沒有變動(dòng)的動(dòng)態(tài)頁面特定高速緩存信息。
在下面的詳細(xì)文字說明中本發(fā)明的上面及其他的目的、特點(diǎn)和優(yōu)點(diǎn)將變得非常明顯。
在所附權(quán)利要求中闡明了本發(fā)明的新穎特點(diǎn)。當(dāng)結(jié)合附圖閱讀時(shí),參照下面說明性實(shí)施例的詳細(xì)描述,可以最好地理解本發(fā)明自身、其優(yōu)選使用模式、進(jìn)一步的目的及其優(yōu)點(diǎn),其中圖1示出了典型的門戶頁面;圖2示出了將被本發(fā)明使用的現(xiàn)有技術(shù)的代理高速緩存基礎(chǔ)結(jié)構(gòu)在不改變時(shí)的情況;圖3A示出了在現(xiàn)存的門戶中本發(fā)明的高級(jí)高速緩存組件的基本實(shí)現(xiàn);圖3B示出了本發(fā)明的高速緩存機(jī)制,用于為門戶頁面計(jì)算高速緩存范圍和高速緩存失效;圖3C示出了根據(jù)本發(fā)明的高速緩存信息的靜態(tài)配置;和圖4示出了計(jì)算總高速緩存信息所需的數(shù)據(jù)的概觀圖。
具體實(shí)施例方式
參照?qǐng)D2,其示出了本發(fā)明使用的現(xiàn)有技術(shù)的“代理高速緩存基礎(chǔ)結(jié)構(gòu)”在不改變時(shí)的情況。
當(dāng)說到高速緩存時(shí),HTTP1.1規(guī)范(RFC 2616)使用術(shù)語“共享高速緩存”和“非共享高速緩存”。在那個(gè)專利申請(qǐng)中將兩種類型的高速緩存都稱為高速緩存。它們位于請(qǐng)求起始進(jìn)程之外,在大多數(shù)情況下完全位于起始服務(wù)器機(jī)器之外。起始服務(wù)器可以使用HTTP協(xié)議(使用頭部變量),來將當(dāng)前交付的信息(如網(wǎng)頁、門戶頁面或圖像)的所期望壽命傳送到其他組件,這些組件參加這個(gè)通訊流。由高速緩存來評(píng)估作為HPPT響應(yīng)頭部而提供的元數(shù)據(jù),從而允許起始服務(wù)器在時(shí)間間隔進(jìn)行控制,在該時(shí)間間隔中高速緩存將假設(shè)所接收的內(nèi)容還是有效的。
HTTP規(guī)范提供了關(guān)于協(xié)議使用的細(xì)節(jié)以便允許起始服務(wù)器將所交付的內(nèi)容的有效性發(fā)送給高速緩存。高速緩存評(píng)估這個(gè)信息,并且相應(yīng)地對(duì)相同的來源的隨后請(qǐng)求的進(jìn)程的處理進(jìn)行操作。HTTP協(xié)議沒有為起始服務(wù)器提供方法,以通過HTTP請(qǐng)求和響應(yīng)來主動(dòng)地使特定條目無效。唯一的無效機(jī)制是失效超時(shí),并且其可以是管理行為。
HTTP頭部相關(guān)HTTP 1.1頭部是(該頭部對(duì)于頁面請(qǐng)求的內(nèi)容高速緩存特別關(guān)注)對(duì)于高速緩存范圍cache-controlpublic,cache-controlprivate,
cache-controlno-cache對(duì)于高速緩存失效cache-controlmax-age delta-seconds對(duì)于客戶范圍(變化頭部)user-agentaccept-languageother-configuration-header-fields在這里列出的這些HTTP頭部是為了使讀者容易地在HTTP1.1規(guī)范中查找關(guān)于這些特性的更多信息。
指示響應(yīng)可以用任何高速緩存進(jìn)行高速緩存,即使其通常是不可高速緩存的或僅僅在非共享高速緩存內(nèi)是可高速緩存的,也如此。
指示所有或部分響應(yīng)消息是針對(duì)單一用戶的,并且必須不由共享高速緩存進(jìn)行高速緩存。這允許起始服務(wù)器聲明響應(yīng)的特定部分是針對(duì)僅僅一個(gè)用戶,并且對(duì)其他用戶的請(qǐng)求不是有效響應(yīng)。專用(非共享)高速緩存可以對(duì)該響應(yīng)進(jìn)行高速緩存。
如果no-cache指示沒有指定field-name,則在沒有與起始服務(wù)器成功地進(jìn)行重新生效的情況下,高速緩存必須不使用該響應(yīng)來滿足隨后的請(qǐng)求。這允許起始服務(wù)器防止由已經(jīng)被配置用于將過時(shí)的響應(yīng)返回給客戶請(qǐng)求的高速緩存進(jìn)行的高速緩存。
當(dāng)在高速緩存響應(yīng)中出現(xiàn)max-age cache-control指示時(shí),如果響應(yīng)的當(dāng)前壽命比在對(duì)那個(gè)來源有新請(qǐng)求時(shí)給出的壽命值大(以秒計(jì)),則所述響應(yīng)是過時(shí)的。有關(guān)響應(yīng)的max-age指示暗示了除非還出現(xiàn)一些其他更具有限制性的高速緩存指示,否則該響應(yīng)是可以進(jìn)行高速緩存的(即,“public”)。
服務(wù)器應(yīng)該使用vary-header-field來通知高速緩存使用了什么樣的request-header-fields來在可高速緩存的響應(yīng)的多個(gè)表示中進(jìn)行選擇,該可高速緩存的響應(yīng)服從于server-driven協(xié)商。已知由vary-field-value命名的系列頭部字段作為“選擇的”request-header。
Vary-field-value指示在響應(yīng)是新的時(shí),request-header字段系列完全確定是否允許高速緩存使用響應(yīng)來應(yīng)答隨后的請(qǐng)求而不用重新生效。
這是HTTP協(xié)議提供的系列功能,以便由http交談(talking)組件來使用。這個(gè)受限制的系列功能使得今天的門戶服務(wù)主要以非可高速緩存來交付它們的響應(yīng)。
圖3A示出了在門戶中的高級(jí)高速緩存組件的基本實(shí)現(xiàn)。
使用本發(fā)明的高級(jí)的高速緩存組件60擴(kuò)展了現(xiàn)有技術(shù)的門戶30。最好在門戶匯集組件50中嵌入該高級(jí)的高速緩存組件60。
門戶匯集組件接收有關(guān)門戶頁面的用戶請(qǐng)求,并且產(chǎn)生請(qǐng)求80到獨(dú)立的組件40,例如Portlet,主題,然后該組件動(dòng)態(tài)地提供門戶頁面片段,該片段包括它們的組件特定動(dòng)態(tài)高速緩存信息81-84。
組件特定動(dòng)態(tài)高速緩存信息81-84包括組件特定動(dòng)態(tài)高速緩存范圍值和組件特定動(dòng)態(tài)高速緩存失效值(時(shí)間)。該組件自己負(fù)責(zé)產(chǎn)生組件特定動(dòng)態(tài)高速緩存信息81-84。在特定實(shí)施中,從與內(nèi)容自身相同的應(yīng)用程序檢索組件特定動(dòng)態(tài)高速緩存信息81-84。比如,Backend系統(tǒng)是內(nèi)容管理應(yīng)用程序,可以從內(nèi)容元信息檢索組件特定動(dòng)態(tài)高速緩存信息。在另一個(gè)特定實(shí)施中,組件自己實(shí)施邏輯??梢栽趩为?dú)組件內(nèi)與該邏輯一起來定義組件特定動(dòng)態(tài)高速緩存信息81-84。
本高級(jí)的高速緩存組件從組件響應(yīng)來提取組件特定動(dòng)態(tài)高速緩存信息81-84,并且為將被匯集的門戶頁面計(jì)算動(dòng)態(tài)頁面特定高速緩存信息90。動(dòng)態(tài)頁面特定高速緩存信息包括用于所得門戶頁面的公共最小高速緩存失效值和公共最小高速緩存范圍值。在后面的章節(jié),說明計(jì)算算法。將完整的門戶頁面作為從門戶服務(wù)器30來的響應(yīng)的部分提供給高速緩存,該完整的門戶頁面包括動(dòng)態(tài)頁面特定高速緩存信息90。高速緩存20可以評(píng)估包含在用于對(duì)隨后請(qǐng)求的頁面進(jìn)行高速緩存的響應(yīng)之中的高速緩存信息90??梢杂筛咚倬彺?0來響應(yīng)對(duì)于將被高速緩存的頁面的隨后請(qǐng)求,而不涉及門戶30。如果在門戶頁面中嵌入的高速緩存信息90不允許進(jìn)行高速緩存,則將該請(qǐng)求從高速緩存20導(dǎo)向門戶30。
可以如下所述來實(shí)現(xiàn)用于Portlet的可能的接口,該P(yáng)ortlet提供帶有組件特定動(dòng)態(tài)高速緩存信息81-84的門戶片段在運(yùn)行時(shí)提供由Portlet產(chǎn)生的組件特定動(dòng)態(tài)高速緩存信息。門戶APT(應(yīng)用編程接口)定義在運(yùn)行時(shí)(runtime)將被指定的EXPIRATION CACHE設(shè)置。本高級(jí)的高速緩存組件使用組件特定動(dòng)態(tài)高速緩存失效的這個(gè)設(shè)置??梢允褂猛瑯拥臋C(jī)制來利用動(dòng)態(tài)高速緩存范圍信息。
所說明的是Portlet程序員如何在運(yùn)行時(shí)公布高速緩存信息(如,遠(yuǎn)程高速緩存)的例子。
RemoteCacheInfo.MetaData.SCOPE=“Portlet.remote-cache-scope”;RenderResponse.setProperty(“EXPIRATION_CACHE”,(newInteger(3000)).toString());RenderResponse.setProperty(“CACXHE-SCOPE”,“PRIVATE”);圖3B示出了用于計(jì)算門戶頁面的公共高速緩存范圍和公共高速緩存失效的本發(fā)明的高速緩存機(jī)制。
上面說明的處理流程確保最小執(zhí)行時(shí)間。一旦任何給定組件阻止整個(gè)頁面的高速緩存的情況變得清楚,則計(jì)算就完成了。
本高級(jí)的高速緩存組件將所有被尋址組件的組件特定動(dòng)態(tài)高速緩存信息10、30、50進(jìn)行集合,該所有被尋址組件提供門戶頁面片段(仍參見圖3A)?;谶@些單一的值,為完整的門戶頁面來計(jì)算公共高速緩存信息。典型地,200、300獨(dú)立地執(zhí)行門戶頁面的公共高速緩存范圍的計(jì)算和門戶頁面的公共高速緩存失效的計(jì)算。在優(yōu)選實(shí)施例中,在高速緩存范圍計(jì)算前,進(jìn)行公共高速緩存失效時(shí)間的計(jì)算。
為了計(jì)算某個(gè)門戶頁面的公共最小高速緩存失效值,本高級(jí)的高速緩存組件確定在由每個(gè)門戶片段提供的失效時(shí)間中的最小失效時(shí)間,特別地將每個(gè)組件特定動(dòng)態(tài)高速緩存失效時(shí)間與組件特定動(dòng)態(tài)高速緩存失效時(shí)間的當(dāng)前最小值進(jìn)行比較。如果新的組件特定動(dòng)態(tài)高速緩存失效時(shí)間小于當(dāng)前識(shí)別的最小值,則將新的組件特定動(dòng)態(tài)高速緩存失效時(shí)間作為新的最小值。當(dāng)比較了所有組件特定動(dòng)態(tài)高速緩存失效時(shí)間時(shí),或者一個(gè)組件要求稱為立即失效(失效時(shí)間=0)的最小可能的失效時(shí)間,則發(fā)現(xiàn)了最小即公共頁面高速緩存失效值。一旦發(fā)現(xiàn)要求立即失效(失效時(shí)間=0)的組件,本高級(jí)的高速緩存組件可以停止組件失效時(shí)間中最小公共失效時(shí)間的計(jì)算,在這種情況下,停止計(jì)算并且將公共失效時(shí)間定義為立即失效(失效時(shí)間段=0)。如果所計(jì)算的公共高速緩存失效時(shí)間要求立即失效,則不要求公共高速緩存范圍計(jì)算并且將其設(shè)置為專用。
為了計(jì)算門戶頁面的公共最小高速緩存范圍值,本高級(jí)的高速緩存組件在由每個(gè)門戶片段提供的組件特定動(dòng)態(tài)高速緩存范圍中,導(dǎo)出最小組件特定動(dòng)態(tài)高速緩存范圍。一旦發(fā)現(xiàn)只允許在專用范圍(非可高速緩存的)進(jìn)行高速緩存的組件,本高級(jí)的高速緩存組件可以停止公共高速緩存范圍的計(jì)算。在那種情況下,停止計(jì)算,并且本高級(jí)的高速緩存組件將公共高速緩存范圍定義為專用75或非可高速緩存的(85),90(100)、110(120),130(140)。
圖3C示出了高速緩存信息的靜態(tài)配置。如果組件不提供組件特定動(dòng)態(tài)高速緩存信息,門戶服務(wù)器落回默認(rèn)的、為給定組件而配置的默認(rèn)組件特定高速緩存信息。門戶服務(wù)器的管理員35可以為每個(gè)組件定義默認(rèn)的高速緩存信息36。
圖4示出計(jì)算總高速緩存信息的所要求數(shù)據(jù)的概觀圖。其內(nèi)容將在下面進(jìn)行解釋。
組件特定動(dòng)態(tài)高速緩存信息的組成有門戶、當(dāng)前請(qǐng)求的頁面目標(biāo)(頁面)、與該頁面目標(biāo)相關(guān)的布局應(yīng)用程序、關(guān)于針對(duì)當(dāng)前所請(qǐng)求的頁面目標(biāo)的所有Portlet的Portlet定義、和用于當(dāng)前所請(qǐng)求的頁面目標(biāo)的Portlet窗口。
除門戶以外的所有這些組件都提供關(guān)于組件特定高速緩存失效值(以秒計(jì))和組件特定高速緩存范圍(有效值為“shared(共享的)”和“non-shared(非共享的)”)的信息。
Portlet窗口還為高速緩存提供獲得狀態(tài)(render state)信息。使用Portlet的這種方法,可以動(dòng)態(tài)地公布這個(gè)信息。這種設(shè)計(jì)甚至允許單一Portlet的幾個(gè)觀看狀態(tài)(view state)都是可以高速緩存的。通過使用在JSR168 Portlet API規(guī)范中定義的獲得參數(shù)(render parameter),可以用已經(jīng)編碼每個(gè)Portlet的狀態(tài)的URL來尋址Portlet觀看狀態(tài)。因?yàn)樵揢RL是高速緩存的唯一關(guān)鍵字,所以它是重要的特征,該特征是這個(gè)專利的總設(shè)計(jì)能夠被有效實(shí)行的先決條件。Portlet獲得將它們的當(dāng)前視圖指示為可高速緩存的可能性,該可能性可以被Portlet服務(wù)器使用來計(jì)算高速緩存的整個(gè)頁面失效時(shí)間。使用這個(gè)設(shè)計(jì),我們可以假設(shè)可以被高速緩存的頁面的總數(shù)對(duì)于利用高速緩存基礎(chǔ)結(jié)構(gòu)是足夠大的。比如新的Portlet可以示出幾個(gè)視圖,即,象文章的幾個(gè)報(bào)紙頁面。這些Portlet視圖在合理的時(shí)間中是不變的,但是它們不同并且可以通過URL被直接地尋址,該URL編碼Portlet的視圖狀態(tài)。
它當(dāng)然依照于高速緩存的特點(diǎn)和是否將其按照HTTP 1.1規(guī)范中所說明的高速緩存控制頭部的解釋來實(shí)施。但是,在基礎(chǔ)結(jié)構(gòu)中沒有高速緩存的情況下,如果由門戶來公布這些高速緩存控制頭部,則沒有不妥之處。只是在基礎(chǔ)結(jié)構(gòu)中沒有可以充分利用高速緩存控制頭部的組件可能會(huì)簡(jiǎn)單些。
應(yīng)用程序的任務(wù)在專利申請(qǐng)中所述的本發(fā)明要求對(duì)頁面內(nèi)容提供頁面片段的所有組件額外地提供所提供的內(nèi)容的失效值的信息。要么通過由門戶處理的配置參數(shù),要么組件自己或由在運(yùn)行時(shí)動(dòng)態(tài)地提供失效值,組件可以發(fā)送它們所產(chǎn)生的內(nèi)容部分的失效值。
比如,在獲得時(shí)Portlet自己可以決定其輸出是不是可高速緩存的以及如果是可高速緩存的則是多長(zhǎng)時(shí)間。這個(gè)發(fā)明的優(yōu)選實(shí)施例也可以假設(shè)如果在獲得時(shí)Portlet沒有公布任何高速緩存信息,則落回到由Portlet定義提供的信息是可以的。在那種情況下,將只考慮由Portlet定義提供的值。
門戶的任務(wù)門戶負(fù)責(zé)交付完整的門戶頁面。門戶負(fù)責(zé)將門戶頁面的失效時(shí)間提供給高速緩存。這個(gè)信息作為在HTTP協(xié)議規(guī)范中定義的高速緩存指示來提供。這允許在不要求對(duì)現(xiàn)存高速緩存進(jìn)行任何改變的情況下,來應(yīng)用本專利。僅僅要求在門戶和其組件中進(jìn)行改變。為了到達(dá)這些目的,門戶服務(wù)器需要與所產(chǎn)生的HTTP響應(yīng)一起來提供額外的高速緩存信息。需要與每個(gè)所產(chǎn)生頁面一起提供的高速緩存信息至少是高速緩存范圍可以將這個(gè)頁面高速緩存嗎?和高速緩存失效時(shí)間在高速緩存中的這一項(xiàng)目在多長(zhǎng)時(shí)間內(nèi)有效?這些信息以頭部字段的形式來提供,該頭部字段是門戶服務(wù)器的HTTP響應(yīng)的部分。
典型地,高速緩存接受輸入請(qǐng)求的URL作為存儲(chǔ)在高速緩存中的項(xiàng)目的關(guān)鍵字。因?yàn)殚T戶中標(biāo)記的產(chǎn)生并不僅僅依賴于URL,所以這可能成為問題。門戶還可能考慮從請(qǐng)求來的‘user-agent’和‘a(chǎn)ccept-language’頭部字段而產(chǎn)生標(biāo)記。對(duì)這個(gè)潛在問題的解決方案是使用‘vary’頭部字段來指示輸入請(qǐng)求的哪個(gè)其他頭部字段需要與存儲(chǔ)在高速緩存中的值相同,從而不需要生效和到服務(wù)器的來回旅程。
門戶從參與產(chǎn)生結(jié)果頁面的不同的組件收集這個(gè)信息。每個(gè)將門戶頁面片段提供給門戶頁面的組件,同樣提供組件特定高速緩存失效值。要么通過由門戶處理的配置參數(shù),要么組件自己或由在運(yùn)行時(shí)動(dòng)態(tài)地提供組件特定高速緩存失效值,組件可以發(fā)送它們的組件特定高速緩存失效值。如果沒有由組件要么動(dòng)態(tài)地要么通過配置,來提供組件特定高速緩存值或組件特定高速緩存范圍值,則假設(shè)為默認(rèn)的值。
由組件提供的所有組件特定動(dòng)態(tài)高速緩存信息都需要被合并,從而必須計(jì)算公共最小高速緩存范圍和公共最小高速緩存失效值。應(yīng)該注意,根據(jù)HTTP規(guī)范為一個(gè)門戶頁面只可以指定一個(gè)系列的值。
本發(fā)明確保
1、公共最小高速緩存失效不超過從組件提供的任何值,以及2、按照從組件提供的,正確地選擇公共最小高速緩存范圍。
用數(shù)學(xué)方式將其定義如下將公共最小高速緩存范圍定義如下所有Portlet定義pdi,所有Portlet窗口pvi(視圖),在頁面上的布局應(yīng)用程序th和頁面目標(biāo)cm自己已經(jīng)與個(gè)性化高速緩存范圍聯(lián)系cache-scope(pdi),cache-scope(pvi),cache-scope(th),cache-scope(cm)其可以采用帶有如non-share<shared所定義的‘<’的關(guān)系的{non-share,shared}的值。
將公共最小高速緩存失效時(shí)間定義如下所有Portlet定義pdi,Portlet窗口pvi(視圖),在頁面上的布局應(yīng)用程序th和頁面目標(biāo)cm自己已經(jīng)與組件特定失效值-時(shí)間聯(lián)系cache-scope(pdi),cache-scope(pvi),cache-scope(th),cache-scope(cm)其分別具有>=0(秒)的值。
將作為所有值的最小值來計(jì)算所獲得的門戶頁面視圖的公共最小高速緩存失效時(shí)間cache-expiration(page)=min{cache-expiration(pd1),......cache-expiration(pdn),
cache-expiration(pv1),......cache-expiration(pvn),cache-expiration(th),cache-expiration(cm)}將作為所有值的最小值來計(jì)算所獲得的門戶頁面視圖的公共最小高速緩存范圍remote-cache-scope(page)=min{cache-scope(pd1),......cache-scope(pdn),cache-scope(pv1),......cache-scope(pvn),cache-scope(th),cache-scope(cm)}當(dāng)根據(jù)給定公式來計(jì)算公共最小高速緩存范圍和公共最小高速緩存失效值時(shí),可以將這個(gè)值用于為整個(gè)的結(jié)果門戶頁面來設(shè)置相應(yīng)的值。
使用這個(gè)發(fā)明,可以設(shè)計(jì)門戶來有效利用高速緩存,而不改變基本的傳輸協(xié)議或現(xiàn)存高速緩存基礎(chǔ)結(jié)構(gòu)。將門戶片段提供給門戶標(biāo)記的組件還可以額外地控制高速緩存范圍和它們的門戶片段的失效時(shí)間。在每次獲得新內(nèi)容時(shí),可以計(jì)算和發(fā)送組件內(nèi)容的高速緩存失效時(shí)間和范圍。使用這個(gè)信息來計(jì)算門戶標(biāo)記的失效時(shí)間和范圍。
使用這個(gè)新的發(fā)明,將可能在非常精細(xì)的水平上區(qū)分可高速緩存的和非高速緩存的門戶頁面。在對(duì)其本質(zhì)為靜態(tài)的頁面有很多點(diǎn)擊的情況下,和當(dāng)需要處理高負(fù)載時(shí),特別在不用再通過門戶來獲得內(nèi)容的一些情況下,本發(fā)明為門戶增加了價(jià)值。
權(quán)利要求
1.一種為門戶中的動(dòng)態(tài)門戶頁面動(dòng)態(tài)地產(chǎn)生高速緩存信息的方法,其中每個(gè)門戶包括門戶匯集組件(50),該組件(50)接收用戶請(qǐng)求(90)、提供用戶請(qǐng)求給單一組件(80)、接收從所述組件來的以門戶頁面片段形式的響應(yīng)、并且匯集所述門戶片段來制成完整的門戶網(wǎng)頁,該方法包括步驟結(jié)合每個(gè)門戶頁面片段,動(dòng)態(tài)地產(chǎn)生組件特定高速緩存信息(81-84),其中所述組件特定高速緩存信息至少包括組件特定高速緩存范圍值和組件特定高速緩存失效值;從門戶頁面片段提取所述組件特定動(dòng)態(tài)高速緩存信息;計(jì)算動(dòng)態(tài)頁面特定高速緩存信息(90),其中所述動(dòng)態(tài)頁面特定高速緩存信息包括公共最小高速緩存范圍和公共最小高速緩存失效值;和將所述動(dòng)態(tài)頁面特定高速緩存信息插入到所述門戶頁面,該門戶頁面將被匯集為完整的門戶頁面。
2.根據(jù)權(quán)利要求1所述的方法,其中所述組件特定高速緩存信息是在運(yùn)行時(shí)產(chǎn)生的。
3.根據(jù)權(quán)利要求1所述的方法,還包括步驟如果沒有將組件特定高速緩存信息與所述門戶頁面片段一起提供,則使用組件特定默認(rèn)高速緩存值。
4.根據(jù)權(quán)利要求1所述的方法,其中將所述動(dòng)態(tài)頁面特定高速緩存信息(90)插入到響應(yīng)的頭部,該響應(yīng)包括所述完整的門戶頁面。
5.根據(jù)權(quán)利要求1所述的方法,其中通過確定門戶頁面是專用、公共或不高速緩存的來計(jì)算所述公共最小高速緩存范圍。
6.根據(jù)權(quán)利要求1所述的方法,其中通過確定最低的組件特定動(dòng)態(tài)失效值來計(jì)算所述公共最小失效值。
7.根據(jù)權(quán)利要求1所述的方法,其中在用于計(jì)算所述公共最小失效時(shí)間的所述方法步驟之后,進(jìn)行用于計(jì)算所述公共最小高速緩存范圍的所述方法步驟,并且對(duì)于門戶頁面如果所述公共最小失效時(shí)間的結(jié)果為“0”,則不進(jìn)行所述公共最小高速緩存范圍的計(jì)算。
8.根據(jù)權(quán)利要求1所述的方法,其中通過使用HTTP協(xié)議將所述門戶頁面提供給高速緩存。
9.一種門戶,包括門戶匯集組件(50),用于調(diào)用產(chǎn)生門戶片段的組件、從所述組件接收所述門戶片段、并且將所述門戶片段匯集到完整的門戶頁面中;組件(40),用于提供動(dòng)態(tài)門戶頁面片段;其特征在于高級(jí)的高速緩存組件(60),用于接收所述門戶片段以及它們的組件特定高速緩存信息(81-84),該組件特定高速緩存信息(81-84)是對(duì)于每個(gè)門戶片段動(dòng)態(tài)地產(chǎn)生的;用于基于所述組件特定高速緩存信息,計(jì)算動(dòng)態(tài)頁面特定高速緩存信息(90);并且用于將所述動(dòng)態(tài)頁面特定高速緩存信息插入到所述響應(yīng)中,該響應(yīng)包括所述完整的門戶頁面。
10.根據(jù)權(quán)利要求5所述的門戶,其中所述高級(jí)的高速緩存組件(60)是門戶匯集組件(50)的部分。
11.根據(jù)權(quán)利要求5所述的門戶,其中如果沒有將組件特定高速緩存信息與所述門戶頁面片段一起提供,則所述高級(jí)的高速緩存組件(60)提供額外的功能來提供組件特定默認(rèn)高速緩存值。
12.根據(jù)權(quán)利要求5所述的門戶,其中所述高級(jí)的高速緩存組件(60)提供功能來將所述動(dòng)態(tài)頁面特定高速緩存信息插入到響應(yīng)的頭部,該響應(yīng)包括所述完整的門戶頁面。
13.一種方法,用于在高速緩存(20)中高速緩存門戶頁面,其中所述高速緩存(20)具有到運(yùn)行門戶(30)的門戶服務(wù)器的連接,該方法包括步驟接收響應(yīng),該響應(yīng)包括門戶頁面和動(dòng)態(tài)頁面特定高速緩存信息,該信息是根據(jù)權(quán)利要求1至8之一已經(jīng)為所述門戶頁面而產(chǎn)生的;如果公共最小高速緩存范圍允許所述門戶頁面的高速緩存,則高速緩存所述響應(yīng),該公共最小高速緩存范圍是所述動(dòng)態(tài)頁面特定高速緩存信息(90)的部分;只要不超過所述公共最小高速緩存失效值,則用所高速緩存的響應(yīng)來對(duì)所述門戶頁面的請(qǐng)求進(jìn)行響應(yīng),該所述公共最小高速緩存失效值是所述動(dòng)態(tài)頁面特定高速緩存信息的部分。
14.一種高速緩存(20),其中所述高速緩存(20)具有到運(yùn)行門戶(30)的門戶服務(wù)器的連接,所述高速緩存(20)包括用于接收響應(yīng)的裝置,該響應(yīng)包括門戶頁面和動(dòng)態(tài)頁面特定高速緩存信息,該信息根據(jù)權(quán)利要求1至8之一已經(jīng)為所述門戶頁面而產(chǎn)生;高速緩存裝置,如果公共最小高速緩存范圍允許所述門戶頁面的高速緩存,則該高速緩存裝置高速緩存所述響應(yīng),該公共最小高速緩存范圍是所述動(dòng)態(tài)頁面特定高速緩存信息的部分;用于響應(yīng)的裝置,只要不超過所述公共最小高速緩存失效值,則該裝置用所高速緩存的響應(yīng)來對(duì)所述門戶頁面的請(qǐng)求進(jìn)行響應(yīng),該所述公共最小高速緩存失效值是所述動(dòng)態(tài)頁面特定高速緩存信息的部分。
15.根據(jù)權(quán)利要求14所述的高速緩存,其中所述高速緩存可以是代理高速緩存、瀏覽器高速緩存、或門戶的高速緩存。
16.計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品存儲(chǔ)在計(jì)算機(jī)可用介質(zhì)上,該計(jì)算機(jī)可用介質(zhì)包括計(jì)算機(jī)可讀程序裝置,該裝置用于當(dāng)所述計(jì)算機(jī)程序產(chǎn)品在計(jì)算機(jī)上執(zhí)行時(shí),使計(jì)算機(jī)執(zhí)行權(quán)利要求1到8中任何一個(gè)的方法。
全文摘要
本發(fā)明提供了方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,其通過提供一種高級(jí)的高速緩存組件來允許動(dòng)態(tài)門戶頁面的高速緩存,而不改變現(xiàn)存的高速緩存代理基礎(chǔ)結(jié)構(gòu)或?qū)⒈皇褂玫膫鬏攨f(xié)議。該高級(jí)的高速緩存組件提供功能,其中將額外的動(dòng)態(tài)頁面特定高速緩存信息作為包括門戶頁面的響應(yīng)的部分來提供。在門戶中的每個(gè)組件都額外地提供動(dòng)態(tài)組件特定高速緩存信息,該信息包括組件特定高速緩存范圍值和組件特定高速緩存失效值。將這兩個(gè)值用于計(jì)算動(dòng)態(tài)頁面特定高速緩存信息,結(jié)果產(chǎn)生是公共最小高速緩存范圍和失效值。作為包括門戶頁面的響應(yīng)的頭部的部分來提供動(dòng)態(tài)頁面特定高速緩存信息。然后高速緩存評(píng)估動(dòng)態(tài)頁面特定高速緩存信息而不被改變。
文檔編號(hào)H04L29/06GK1760862SQ20051008139
公開日2006年4月19日 申請(qǐng)日期2005年6月30日 優(yōu)先權(quán)日2004年10月12日
發(fā)明者雷納·齊爾宗, 卡斯滕·勒, 斯蒂芬·利施, 托馬斯·謝克 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司