專利名稱:通信網(wǎng)絡(luò)中的對象傳輸控制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及通信網(wǎng)絡(luò)領(lǐng)域,尤其涉及通過中間元件由第一網(wǎng)絡(luò)元件到第二網(wǎng)絡(luò)元件的對象傳輸,第二網(wǎng)絡(luò)元件相對第一網(wǎng)絡(luò)元件來說是遠(yuǎn)程的。
背景技術(shù):
現(xiàn)代通信網(wǎng)絡(luò)上的信息傳輸如公眾因特網(wǎng)或內(nèi)部網(wǎng)是基于具體的傳輸協(xié)議的,以萬維網(wǎng)為例,它組成了因特網(wǎng)的主要方面,用超文本傳輸協(xié)議(HTTP)來交換文件包括文本、圖像、聲音、視頻和其它內(nèi)容。
除了其可以服務(wù)的文件外,任何WWW服務(wù)器都包含一個HTTP元件,該元件用來等待HTTP請求,并在該請求到達(dá)時對其進(jìn)行處理。WWW瀏覽器可看作一個配置為發(fā)送HTTP請求到WWW服務(wù)器的HTTP客戶端。無論何時瀏覽器用戶都可通過“打開”一個WWW文件(通過在統(tǒng)一資源定位器中鍵入(URL))或單擊一個超文本鏈接輸入一個文件請求,該瀏覽器會為該文件構(gòu)建一個相應(yīng)的HTTP請求并將其發(fā)送給目標(biāo)地址。目標(biāo)服務(wù)器中的HTTP元件將收到該HTTP請求,并返回所請求文件。
請求文件可由包含HTML代碼的超文本鏈接標(biāo)示語言(HTML)頁組成。當(dāng)瀏覽器從服務(wù)器上收到該HTML頁并發(fā)現(xiàn)其代碼還包含有進(jìn)一步對象如(背景)圖像、聲音、腳本或HTML框架時,為了獲取該HTML代碼中的進(jìn)一步對象,瀏覽器就會向服務(wù)器發(fā)出進(jìn)一步HTTP請求,其中的HTML代碼本身就可看作對象。一旦接收到進(jìn)一步HTTP請求,服務(wù)器會向?yàn)g覽器發(fā)送包含請求對象如圖像的HTTP響應(yīng)。
圖1中變得明顯,HTTP響應(yīng)從服務(wù)器發(fā)給瀏覽器,其在客戶端運(yùn)行的順序和瀏覽器發(fā)出HTTP請求的順序是一致的。
瀏覽器請求任何包含在HTML頁的HTML代碼中的附加對象的順序,通常取決于HTML頁是如何編寫的。例如,包含在HTML代碼開始的對象沒必要顯示在HTML頁的頂端,原因是特征如表、層和框架允許HTML作者使用復(fù)雜的布局。另外,瀏覽器發(fā)出HTTP請求的順序也取決于內(nèi)部瀏覽器算法,例如,一些瀏覽器通過開始就請求出現(xiàn)在HTML代碼中的前四個對象的方式,用復(fù)雜的啟發(fā)式算法來生成HTTP請求。前四個對象請求完后,請求每兩個始于當(dāng)前用戶可見范圍頂部的對象,然后每四個對象等。其它瀏覽器使用更簡單的算法,該算法按照它們出現(xiàn)在HTML代碼中的那樣逐一請求對象。從上面可以看出,明顯的,通常難以預(yù)測HTML代碼所指對象HTTP請求生成的順序。
而且,難以預(yù)測瀏覽器接收請求對象的順序。盡管當(dāng)前HTTP標(biāo)準(zhǔn)(HTTP/1.1)要求,在每一個傳輸控制協(xié)議(TCP)連接上,服務(wù)器發(fā)送給瀏覽器HTTP響應(yīng)的順序應(yīng)該和服務(wù)器接收HTTP請求的順序一致,但是當(dāng)一個以上的連接對服務(wù)器開放時,HTTP響應(yīng)接收的順序就變得無法預(yù)測了。原因在于下列事實(shí),即由于網(wǎng)絡(luò)條件的變化和請求處理時間的不同,一些連接傳輸HTTP響應(yīng)比另一些連接快。
需要有一種方法和設(shè)備,使從第一網(wǎng)絡(luò)元件到第二網(wǎng)絡(luò)元件對象傳輸性能有所提高,其第二網(wǎng)絡(luò)元件相對第一網(wǎng)絡(luò)元件來說是遠(yuǎn)程的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一方面,該需求可通過這種方法滿足在通信網(wǎng)絡(luò)中,控制通過中間元件(硬件或軟件)由第一元件到第二元件的對象傳輸,這里第二元件相對第一元件來說是遠(yuǎn)程的。其中對象傳輸?shù)幕A(chǔ)是多個對象請求,對象請求涉及的對象在通信網(wǎng)絡(luò)中的第二元件或其它元件所要處理的一個或多個代碼中提到,并且其中中間元件執(zhí)行步驟如下發(fā)送對象請求給第一元件,從第一元件中接收請求對象,更新和/或評估請求對象的優(yōu)先權(quán),依據(jù)至少對象請求和涉及該請求對象的代碼其中之一的分析,為該請求對象分配初始優(yōu)先權(quán),并且依據(jù)請求對象的優(yōu)先權(quán),延遲或向第二元件轉(zhuǎn)寄該請求對象。對象本身可以包含涉及一個或多個深層對象的代碼部分,此外,代碼本身也可組成對象(比如先前請求的對象)。
從用戶的觀點(diǎn)來看,依據(jù)已分配的優(yōu)先權(quán)有意延遲對象傳輸,可提高對象傳輸?shù)目傮w性能(即使要傳輸數(shù)據(jù)總數(shù)未減少),原因是優(yōu)先傳輸了重要對象。而且,通過執(zhí)行合適的優(yōu)先權(quán)分配計(jì)劃,從第一網(wǎng)絡(luò)元件向第二網(wǎng)絡(luò)元件的對象傳輸就變的更可預(yù)測了。例如,對用戶來說,對象越重要則其分配的優(yōu)先權(quán)就越高,由此就優(yōu)先將其傳輸給第二元件;另一方面,相對不重要的對象可能被延遲。在極端的情況下,不重要的對象可能被延遲到這樣一種程度根本不傳輸給第二元件。這就允許控制第二元件接收對象的順序。
可動態(tài)執(zhí)行對象(或?qū)ο箢?絕對或相對優(yōu)先權(quán)的分配。一旦初始分配了一個優(yōu)先權(quán),那么就可以評估該優(yōu)先權(quán)的具體絕對值如門限,或其它對象的優(yōu)先權(quán)。根據(jù)評估情況決定是否延遲一個對象。評估之前可以重新估計(jì)對象已分配的初始優(yōu)先權(quán),以決定是否更新該初始優(yōu)先權(quán)。
操作中間元件以便為從第一元件中收到的對象重新排序。優(yōu)先執(zhí)行對象延遲,以使中間元件收到來自第一元件的對象的順序不同于轉(zhuǎn)寄給第二元件對象的順序。根據(jù)即將傳輸對象的優(yōu)先權(quán),進(jìn)行重新排序。在重新排序過程中可能出現(xiàn)這種情況,一些對象延遲導(dǎo)致其它對象傳輸實(shí)際加速。
發(fā)送給第一元件的對象請求可由中間元件生成。當(dāng)中間元件收到請求對象時,無需收到第二元件明確的對象請求,就將該請求對象“推進(jìn)”給第二元件。作為選擇,對象請求也可由第二元件生成并發(fā)送給中間元件。一旦收到來自第二元件的對象請求,可由中間元件進(jìn)行處理并發(fā)送給第一元件。
中間元件從第一元件中收到請求對象時,或者延遲該請求對象或者直接轉(zhuǎn)寄給第二元件。至于中間元件收到的請求對象如何延遲存在各種可能性,例如,請求對象的延遲可以至少包含下列操作中的一個通知第二元件重復(fù)對象請求;掛起到第二網(wǎng)絡(luò)元件的連接,通過該連接轉(zhuǎn)寄請求對象;通知第二元件請求對象將在以后一個時間點(diǎn)上自動(例如,無需任何來自第二元件的進(jìn)一步對象請求)轉(zhuǎn)寄給第二組件。
如果請求對象的延遲包括通知第二元件重傳對象請求,那么中間元件可執(zhí)行如下步驟分配一個特殊屬性給要延遲的對象;通知第二元件該屬性;從第二元件那里收到該屬性的一個參考(如該屬性本身或從該屬性中獲得的準(zhǔn)確參考;并且一旦接收到該屬性參考,發(fā)送延遲對象給第二元件或進(jìn)一步延遲該延遲對象。是發(fā)送該延遲對象給第二元件還是進(jìn)一步延遲,取決于新評估的重復(fù)請求對象的相對優(yōu)先權(quán)。
可將屬性看作一個公分母,它使得中間元件和第二元件能夠在該屬性所屬對象的傳輸問題上進(jìn)行協(xié)調(diào)。通常的,屬性的形式取決于用于對象傳輸?shù)膫鬏攨f(xié)議特征。以HTTP為例,該屬性可能由中間元件創(chuàng)建的虛擬URL組成。應(yīng)當(dāng)指出,通知第二元件重傳對象請求的基于屬性的延遲計(jì)劃,通常可用來延遲對象,并且不需要分配給要傳輸對象的優(yōu)先權(quán)。
在基于屬性的延遲計(jì)劃中,為了響應(yīng)一個從第二元件處接收到的對象請求,可以將來自中間元件的請求發(fā)送給第二元件,或按照一個推進(jìn)計(jì)劃進(jìn)行,即,不考慮來自第二元件的請求。如果延遲計(jì)劃是基于來自第二對象的對象請求,那么在指令重復(fù)該對象請求的情況下,通知第二元件該屬性。在這種情況下中間元件在來自第二元件重復(fù)請求的環(huán)境中接受到該屬性的參考。
通過中間元件和第二元件之間的單個或多個連接,可將即將傳輸給第二元件的對象轉(zhuǎn)寄給第二元件。在這樣一個多連接方案中,已選的連到第二元件的一個連接是否會被延遲取決于該請求對象的優(yōu)先權(quán)(初始的或已更新的),通過已選的連接可將該請求對象轉(zhuǎn)寄給第二元件。因此中間元件可通過掛起一個或多個連接,以使高優(yōu)先權(quán)的對象能充分利用附加帶寬,該附加帶寬就是由中間元件和第二元件之間的鏈接釋放的。為了避免帶寬浪費(fèi),優(yōu)先配置中間元件,以確保在其中一個或多個連接被掛起之前,充分利用了兩個以上連接組成的鏈接。
存在各種延遲連接的技術(shù),例如,可凍結(jié)通過該連接的傳輸一段具體時間,而將連接本身開放(中間狀態(tài)=開放);或者,該連接是關(guān)閉的(中間狀態(tài)=關(guān)閉的),同時保存該連接的狀態(tài)。在這種情況下,可在以后的時間點(diǎn)上以同樣的狀態(tài)再次打開該連接,該狀態(tài)就是關(guān)閉時的狀態(tài)。根據(jù)第三種可能,完全關(guān)閉連接,不保存任何連接狀態(tài)的信息。無論哪一種情況,都可通知第二元件,或者作為(重復(fù))對象請求的響應(yīng)或者與該請求無關(guān),稍后都發(fā)送要通過該已關(guān)閉連接傳輸?shù)囊粋€或多個對象。
代替或除了掛起個別連接,還可以根據(jù)基于優(yōu)先級的傳輸速度的調(diào)整來延遲對象傳輸。為此,動態(tài)分配給每個對象或每個連接一份具體的處理能力份額。在多連接情況下,所有的連接或至少一些連接可獲得一份CPU時間,即一份網(wǎng)絡(luò)帶寬。當(dāng)一個或多個對象通過相關(guān)連接傳送時,可以更改分配給該指定連接的處理能力份額(例如,經(jīng)常減少)。
上面提到的對象傳輸是基于許多對象請求的,該對象請求涉及的對象在一個或多個代碼中提到。根據(jù)本發(fā)明的第一變型,一個代碼至少對第二和中間元件中的一個是可用的。根據(jù)本發(fā)明的第二變型,該代碼必須由第二和中間組件中任何一個裝載。在后一情況下,中間元件可以將一個由第二元件或由中間元件生成的代碼請求,發(fā)送給第一元件或不同于第一元件的第三元件。當(dāng)中間元件接受到來自第一元件或第三元件的請求代碼時,就通過代碼中包含的對象參考分析該代碼。然后評估任何包含在代碼中的對象參考,以便為接收代碼中提到的對象分配(初始的)優(yōu)先權(quán),最終收到的第一或第三元件的代碼會由中間元件轉(zhuǎn)寄給第二元件。
一旦接收到來自第一元件響應(yīng)的接收,可通過收到對象的優(yōu)先權(quán)來評估包含在該響應(yīng)中的請求對象。例如,為此至少分析其中之一對象大小、對象內(nèi)容和響應(yīng)的報頭,然后決定是否必須更新收到對象的初始優(yōu)先權(quán)。
更好的,例如,中間元件至少存儲一些關(guān)于每一個對象或?qū)ο蟮拿恳粋€類的信息。該存儲信息可包含單個對象的優(yōu)先權(quán)信息或一類對象的優(yōu)先權(quán)信息,最好以一個優(yōu)先權(quán)清單的形式出現(xiàn)。該優(yōu)先級清單被反復(fù)評估這樣一個評估至少涉及下列操作中之一更新優(yōu)先權(quán)信息,刪除來自優(yōu)先權(quán)清單的對象或?qū)ο箢悺?br>
該發(fā)明可作為一個硬件解決方案來執(zhí)行,也可作為一個軟件解決方案來執(zhí)行。以軟件方案為例,本發(fā)明可以包含程序代碼部分的計(jì)算機(jī)程序產(chǎn)品的形式實(shí)現(xiàn),該程序產(chǎn)品用來執(zhí)行本發(fā)明的單獨(dú)步驟。計(jì)算機(jī)程序產(chǎn)品可存儲在計(jì)算機(jī)可讀媒質(zhì)上。
根據(jù)本發(fā)明的優(yōu)先實(shí)施例,將中間元件作為一個代理元件執(zhí)行,其形式為運(yùn)行在通信網(wǎng)絡(luò)第一或第二元件上的一塊軟件。如果發(fā)明按硬件方案實(shí)施,中間組件可由單獨(dú)的硬件構(gòu)成,比如在通信網(wǎng)絡(luò)中第一和第二組件之間的代理服務(wù)器。中間元件可包括一個或多個正確配置的通信接口,該通信接口至少用來進(jìn)行與通信網(wǎng)絡(luò)上的第一和第二元件的通信,還包括在對象延遲的條件下執(zhí)行處理的單元一樣。
在通信網(wǎng)絡(luò)中,中間元件與第一元件之間存在一個第一鏈接;中間元件與第二元件之間存在一個第二鏈接。最好第一鏈接和第二鏈接有不同的傳輸速率,例如,可以提供給中間元件和第一元件之間一個較快的鏈接,在中間元件和第二元件之間提供一個相對較慢的鏈接。通常,當(dāng)?shù)谝辉蔷W(wǎng)絡(luò)服務(wù)器,第二元件是網(wǎng)絡(luò)客戶端,并且中間元件位于網(wǎng)絡(luò)服務(wù)器上或位于網(wǎng)絡(luò)服務(wù)器附近(就網(wǎng)絡(luò)鏈接而言)時,就是這種情況。但是,中間元件也可以位于網(wǎng)絡(luò)客戶端上或網(wǎng)絡(luò)客戶端附近(就網(wǎng)絡(luò)鏈接而言),在這種情況下,中間元件與第二元件(網(wǎng)絡(luò)客戶端)之間的鏈接和中間元件與第一元件(網(wǎng)絡(luò)服務(wù)器)之間的鏈接相比,性能更高反應(yīng)更快。
應(yīng)該注意到,本發(fā)明不只局限于第一元件作為網(wǎng)絡(luò)服務(wù)器和第二元件作為網(wǎng)絡(luò)客戶端的情況。特別的,中間元件也可以用來提高兩個網(wǎng)絡(luò)客戶端之間或兩個網(wǎng)絡(luò)服務(wù)器之間對象傳輸?shù)男阅堋?br>
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,中間元件可作為無線通信網(wǎng)絡(luò)如GSM、GPRS等蜂窩網(wǎng)絡(luò)的一部分。在這樣一個網(wǎng)絡(luò)中第二元件可由一個移動終端組成。
附圖簡述通過閱讀本發(fā)明優(yōu)選實(shí)施例詳細(xì)描述及附圖參考,其深層方面和優(yōu)點(diǎn)將變得明顯,在附圖中圖1是說明網(wǎng)絡(luò)服務(wù)器和網(wǎng)絡(luò)客戶端之間對象傳輸?shù)脑韴D,與HTTP相一致。
圖2是一個網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)圖,根據(jù)本發(fā)明,該系統(tǒng)包含一個以HTTP代理服務(wù)器形式出現(xiàn)的中間元件。
圖3是圖2中的HTTP代理服務(wù)器的結(jié)構(gòu)圖。
圖4是一個原理圖,描述圖2所描述的網(wǎng)絡(luò)系統(tǒng)中基于重定向的對象延遲。
圖5是一個流程圖,反映對象延遲之前的步驟。
圖6是一個流程圖,根據(jù)本發(fā)明描述涉及對象延遲的決定。并且圖7是一個結(jié)構(gòu)圖,根據(jù)本發(fā)明描述定位于網(wǎng)絡(luò)客戶端的代理元件。
優(yōu)選實(shí)施例描述盡管本發(fā)明可在任何通信網(wǎng)絡(luò)中實(shí)行,在這些通信網(wǎng)絡(luò)中可通過中間元件執(zhí)行基于請求的對象傳輸。下文有關(guān)優(yōu)選實(shí)施例的描述示例性針對與WWW上HTTP協(xié)議相一致的HTML代碼的傳輸進(jìn)行的。原則上,不同于HTTP協(xié)議的傳輸協(xié)議,比如就像WAP傳輸協(xié)議或一些遠(yuǎn)程程序調(diào)用(RPC)機(jī)制。而且,以及不同于HTML的代碼,例如,WAP標(biāo)示語言(WML)或可擴(kuò)展標(biāo)示語言的任何派生語言(XML),同樣可使用。盡管后面的描述主要考慮的是從服務(wù)器到客戶端的對象傳輸,但是,該對象傳輸也可以在任何兩個或多個網(wǎng)絡(luò)元件之間執(zhí)行。
圖2中,依據(jù)本發(fā)明描述網(wǎng)絡(luò)系統(tǒng)10的結(jié)構(gòu)圖。從圖2可見,網(wǎng)絡(luò)系統(tǒng)10包含一個形式為服務(wù)器20的第一元件,一個形式為HTTP代理服務(wù)器30的中間元件和形式為客戶端40的第二元件。將代理服務(wù)器30安排到網(wǎng)絡(luò)系統(tǒng)10中以使該網(wǎng)絡(luò)有一個通向服務(wù)器20的快速鏈接12和一個通向客戶端40的相對慢速鏈接14,鏈接12、14中的每一個都由許多TCP連接50組成,配置每個TCP50,以允許在服務(wù)器20和客戶端40之間傳輸HTTP請求和HTTP響應(yīng)。
代理服務(wù)器30執(zhí)行一些典型的代理功能如對象緩沖和對象過濾。另外,要對代理服務(wù)器30進(jìn)行配置,以人工延遲從服務(wù)器20處收到并且即將轉(zhuǎn)寄給客戶端40的對象??赏ㄟ^使用連接50上的數(shù)據(jù)傳輸臨時延遲及HTTP重定向消息的組合,完成該功能。其中重定向消息會在一個特殊時間段之后,強(qiáng)制客戶端40上運(yùn)行的瀏覽器重新發(fā)送請求對象。通過使用這些機(jī)制,代理服務(wù)器30將對來自服務(wù)器20的HTTP響應(yīng)重新排序,方式為對象優(yōu)先權(quán)越高則越早發(fā)送給客戶端40。為實(shí)現(xiàn)該目的,代理服務(wù)器30會為即將轉(zhuǎn)寄給客戶端40的對象動態(tài)分配優(yōu)先權(quán)。為了確保不太重要對象的延遲不會引起代理服務(wù)器30和客戶端40間的鏈接14空閑,代理服務(wù)器30還要不斷監(jiān)測或至少要重復(fù)監(jiān)測鏈接14上的傳輸情況。
圖3中詳細(xì)描述了代理服務(wù)器30的結(jié)構(gòu),從圖3可見代理服務(wù)器30包含一個通信接口32,在服務(wù)器20的第一鏈接12和客戶端40的第二鏈接14之間有一對這樣的接口。配置該接口以使其能發(fā)送來自服務(wù)器20發(fā)送對像請求并能接受來自服務(wù)器20的請求對象。代理服務(wù)器30的處理單元34可和該接口32通信,處理單元34允許評估和/或調(diào)整對象的優(yōu)先權(quán),其對象是通過第一鏈接12從服務(wù)器20處收到的任何對象。此外,至少根據(jù)對象請求和請求對象相關(guān)代碼二者之一的分析,處理器34才允許給請求對象分配初始優(yōu)先權(quán)。稍后詳細(xì)討論可能的分配計(jì)劃。
處理單元34依據(jù)請求對象初始的或更新的優(yōu)先權(quán)對通信接口32進(jìn)行控制,以延遲收到來自服務(wù)器20的請求對象,或通過第二鏈接14將其轉(zhuǎn)寄給客戶端40。如果來自服務(wù)器20的請求對象被延遲,那么就臨時將其存儲在緩沖器36中。至于緩沖器36,通信接口32和處理單元34都可對其進(jìn)行評估。可選或另外,緩沖器36還可作為處理單元34的軟件元件或硬件元件來實(shí)現(xiàn)。
除了上述任務(wù),此外還要能將處理單元34配置為允許分配一個具體屬性給一個要延遲的對象(稍后詳細(xì)描述該屬性的一個示例性格式)。處理單元34能夠控制通信接口32以使該通信接口32可將該屬性告知客戶端40。如果通信接口32從客戶端40處收到了該屬性的參考,那么處理單元34就會評估該參考并對通信接口32進(jìn)行控制,使得將之前分配該屬性及現(xiàn)在存儲于緩沖器36中的延遲對象,或發(fā)送給客戶端40或進(jìn)一步延遲。如果必須先將較高優(yōu)先權(quán)的對象轉(zhuǎn)寄給客戶端40,那么進(jìn)一步延遲存儲于緩沖器36中的對象就是必需的。
下面舉例描述圖2中所示的網(wǎng)絡(luò)系統(tǒng)10的優(yōu)選操作模式。
當(dāng)用戶輸入URL,單擊鏈接或跟隨書簽時,客戶端40上運(yùn)行的瀏覽器就會向相應(yīng)含有HTML代碼的HTML頁發(fā)送一個HTTP請求。代理服務(wù)器30通過鏈路14收到該HTTP請求并再通過鏈接12將其轉(zhuǎn)寄給目標(biāo)服務(wù)器20。作為響應(yīng),服務(wù)器20會將用于該請求頁的HTML代碼發(fā)送給代理服務(wù)器30,代理服務(wù)器30再分析此HTML代碼,然后給任何類型的對象分配初始優(yōu)先權(quán),這些對象例如鏈路、幀、腳本、圖像及其它在HTML代碼中提到的對象(第一分析階段)。
不考慮該HTML代碼的分析,通過鏈接14代理服務(wù)器30直接將該代碼轉(zhuǎn)寄給客戶端40。當(dāng)運(yùn)行在客戶端40上的瀏覽器收到包含HTML代碼的HTML頁時,就會處理該HTML代碼,如果瀏覽器發(fā)現(xiàn)HTML代碼中含有進(jìn)一步對象,那么就為HTML碼中涉及的對象發(fā)送進(jìn)一步HTTP請求。這些進(jìn)一步對象的HTTP請求將由代理服務(wù)器30接收和評估。對于多數(shù)請求對象,在代理服務(wù)器30對其已經(jīng)轉(zhuǎn)送給服務(wù)器40的HTML代碼的先前分析過程中已經(jīng)分配了初始優(yōu)先權(quán)。但是在第二分析階段,代理服務(wù)器30或?yàn)槟切┪捶峙涑跏純?yōu)先權(quán)的對象分配初始優(yōu)先權(quán),或?yàn)槟切┮逊峙涑跏純?yōu)先權(quán)對象更新優(yōu)先權(quán)。優(yōu)先權(quán)的更新基于來自客戶端40的HTTP請求中的附加可用信息。
代理服務(wù)器30將任何來自客戶端40附加對象的HTTP請求轉(zhuǎn)寄給服務(wù)器20。服務(wù)器20通過將請求對象發(fā)送給代理服務(wù)器30作為答復(fù)。在第三分析階段,代理服務(wù)器30會分析來自服務(wù)器20的HTTP響應(yīng),并且如果有必要則更新包含在HTTP響應(yīng)中的對象的優(yōu)先權(quán)。另外,代理服務(wù)器30會參考以前收到仍存儲在緩沖器36(參考圖3)中的對象的優(yōu)先權(quán),以及即將收到的期望對象的優(yōu)先權(quán)。評估任何已收到對象的相對優(yōu)先權(quán),關(guān)于即將從服務(wù)器20收到的對象的相關(guān)信息,可從之前轉(zhuǎn)寄給客戶端40的HTML代碼中獲得,或可從來自客戶端40的HTTP請求中獲得,該客戶端40還未收到來自服務(wù)器20的相應(yīng)對象。作為選擇或此外,對代理服務(wù)器30進(jìn)行配置,以使剛從服務(wù)器40接收的對象的優(yōu)先權(quán)可以和一個像優(yōu)先權(quán)門限一樣的絕對值相比較。
根據(jù)對象絕對和/或相對優(yōu)先權(quán)的評估,并根據(jù)鏈路14上當(dāng)前的和/或以后的傳輸情況,代理服務(wù)器30決定,是否延遲該對象,例如是否將該對象暫時存儲在緩沖器36中,是否仍不將HTTP的請求轉(zhuǎn)寄給服務(wù)器20,或是否立刻將該對象轉(zhuǎn)寄給客戶端40。
從用戶的觀點(diǎn)來看,單個對象的有目的延遲可提高整個對象傳輸?shù)男阅?。例如,眾所周知的,包含在網(wǎng)頁中的各種對象的相對重要性變化非常大對網(wǎng)頁瀏覽來說,用來建立圖形菜單的圖像是必需的,而背景圖像只是為了網(wǎng)頁看起來更漂亮。因此,可用本發(fā)明來先為用戶提供較重要的信息。一旦用戶的屏幕上顯示了一個網(wǎng)頁的足夠信息,不用等待該網(wǎng)頁正在傳輸?shù)氖S?不重要)部分,用戶就可以決定點(diǎn)擊一個鏈接和請求另一個網(wǎng)頁。結(jié)果是在看到重要的對象之前,用戶不需要等待一些不感興趣對象的傳輸。這在和移動網(wǎng)絡(luò)的協(xié)作中尤其有用,通常移動網(wǎng)絡(luò)與固定網(wǎng)絡(luò)相比更慢更貴。
優(yōu)先權(quán)的分配和調(diào)整根據(jù)以上描述明顯地,在三個不同的階段中代理服務(wù)器30都可分配或調(diào)整即將發(fā)送給客戶端20的對象的優(yōu)先權(quán),也就是說,當(dāng)在即將轉(zhuǎn)寄給客戶端40的HTML代碼(例如,在以前對象中)中發(fā)現(xiàn)該對象的參考時,當(dāng)運(yùn)行在客戶端40上的瀏覽器發(fā)送涉及該對象的HTTP請求時,或當(dāng)從服務(wù)器20處收到相應(yīng)的包含請求對象的HTTP響應(yīng)時,代理服務(wù)器30都可分配或調(diào)整即將發(fā)送給客戶端20的對象的優(yōu)先權(quán)。
下面舉例描述了三個階段中的每一個階段優(yōu)先權(quán)分配和更新的各種計(jì)劃。三個階段的任何一個階段中,或生成或更新一個含有單個對象或?qū)ο箢悆?yōu)先權(quán)信息的優(yōu)先權(quán)清單。在優(yōu)先級清單中,根據(jù)優(yōu)先權(quán)遞增或遞減以對單個對象或?qū)ο箢愡M(jìn)行排序。優(yōu)先權(quán)清單中的對象順序可看作是優(yōu)先權(quán)信息。但是,作為選擇或附加的,附加優(yōu)先權(quán)信息如絕對優(yōu)先權(quán)或相對優(yōu)先權(quán)的值(編號)可作為優(yōu)先權(quán)清單的一部分。
分配給特殊對象或?qū)ο箢惖臏?zhǔn)確優(yōu)先權(quán)應(yīng)與執(zhí)行有關(guān),并且在示例實(shí)施例中,可由代理服務(wù)器30的操作者或運(yùn)行在客戶端40上的瀏覽器的使用者進(jìn)行配置。例如,為了允許代理服務(wù)器20的操作者更好地控制一些對象的優(yōu)先權(quán),應(yīng)存在一個或多個URL(使用模式匹配)列表以允許操作者增加或減少出現(xiàn)在這些清單上的對象的優(yōu)先權(quán)。例如操作者可決定增加或減少所有從廣告公司處下載下來的圖像的優(yōu)先權(quán)。這些相同的可能性對用戶來說也應(yīng)該是可行的,例如,用戶應(yīng)可以將其優(yōu)先選擇發(fā)送給代理服務(wù)器30,通過運(yùn)行在客戶端40上的一個具體軟件,或通過使用由代理服務(wù)器30直接提供的指定網(wǎng)頁和允許用戶設(shè)置其優(yōu)先選擇,可完成該功能。
在第一分析階段,通過分析由客戶端40請求的來自服務(wù)器20的HTML代碼,代理服務(wù)器30可將一個初始優(yōu)先權(quán)分配給一個對象。尤其是,可評估HTML代碼中提到的對象參考。在這種方式下將生成一個優(yōu)先權(quán)清單,該清單以如下順序列出HTML代碼中提到的單個對象(先列出優(yōu)先權(quán)高的對象)轉(zhuǎn)到其它頁的鏈接框架內(nèi)嵌的圖像(如果IMG標(biāo)簽項(xiàng)包括寬度和高度信息,那么根據(jù)期望的尺寸,可用該信息來細(xì)調(diào)圖像的優(yōu)先權(quán),使得小圖像的優(yōu)先權(quán)比大圖像的大)頁面風(fēng)格腳本(JavaScrip,VBScrip等),內(nèi)嵌對象和小程序背景圖像(頁背景,表背景,頁面風(fēng)格等)任何已經(jīng)發(fā)送給客戶端40的對象獲得最低優(yōu)先權(quán)另外,如果對象不在同樣的服務(wù)器20上或在與當(dāng)前HTML頁一樣的同樣域上,那么該特殊對象的優(yōu)先權(quán)就可能更低。
當(dāng)瀏覽器發(fā)出對象請求,并且代理服務(wù)器30收到對象請求時,更有可能出現(xiàn)該對象優(yōu)先權(quán)的分配或調(diào)整。在這種情況下,代理服務(wù)器30將在URL環(huán)境中(第二分析階段)分析該HTTP請求。既然在導(dǎo)致了HTTP請求的HTML代碼的分析期間已經(jīng)分配了初始優(yōu)先權(quán),那么對該HTTP請求的分析就一般導(dǎo)致初始優(yōu)先權(quán)的調(diào)整,但是某些情況下也會導(dǎo)致優(yōu)先權(quán)分配(參考上面)。
可根據(jù)可用的附加信息,執(zhí)行第二階段中初始優(yōu)先權(quán)的調(diào)整或分配,該附加信息例如可在HTTP請求的報頭獲得??梢詧?zhí)行以下規(guī)則中的一個或多個以更新優(yōu)先權(quán)分析將導(dǎo)致這樣的結(jié)果,瀏覽器已經(jīng)請求過該對象一次,為了避免瀏覽器造成無限循環(huán),應(yīng)優(yōu)先給該對象分配極高優(yōu)先權(quán),無限循環(huán)不符合HTTP/1.1標(biāo)準(zhǔn)而且忽視了Rty-After報頭(該報頭將在后面詳細(xì)討論)。
對象仍沒有優(yōu)先權(quán),但是其文件擴(kuò)展看起來像HTML(”.HTML”,”.HTM”)或XML(“.XML”),或看起來像目錄索引(結(jié)尾”/”)。這樣的優(yōu)先權(quán)分配可確保,從書簽得到的HTML頁或直接鍵入的HTML頁,以高優(yōu)先權(quán)請求。
使用if-modified-since或相似條件,瀏覽器可為對象制作條件HTTP請求。這表明瀏覽器可能已經(jīng)緩存了對象復(fù)制,如果該緩存復(fù)制仍然有效(HTTP答復(fù)代碼“304未修改”),那么期望該響應(yīng)是小的。
分解以前的HTML頁時,發(fā)現(xiàn)了請求對象的URL。
分解一個先前頁的HTML標(biāo)簽時,未插入到清單中的任何對象很可能是由腳本間接請求的,該對象與其它大多數(shù)請求對象相比,獲得一個較低的優(yōu)先權(quán)。
在第三分析階段,對象優(yōu)先權(quán)的調(diào)整是基于對來自服務(wù)器20的HTTP響應(yīng)的分析。在該第三階段(以及在上面提到的第二階段)中的優(yōu)先權(quán)調(diào)整可以計(jì)算為一些標(biāo)準(zhǔn)原則的加權(quán)和。所述加權(quán)可由代理服務(wù)器30的操作者配置,也可由運(yùn)行在服務(wù)器40上的瀏覽器的使用者配置。
在第三分析階段,所有對象總會被分配一個優(yōu)先級。但是,該優(yōu)先級可再將請求對象發(fā)送給客戶40之前更新。為了調(diào)整優(yōu)先權(quán),可以評估來自服務(wù)器20的HTTP響應(yīng)的內(nèi)容和報頭,然后根據(jù)以下規(guī)則中的一個或多個進(jìn)行調(diào)整答復(fù)代碼評估HTTP響應(yīng)的相對優(yōu)先權(quán)取決于答復(fù)代碼的第一個數(shù)字,錯誤代碼(4xx,5xx)與正常答復(fù)(2xx)相比,優(yōu)先權(quán)更高。
內(nèi)容類型評估HTML代碼的優(yōu)先權(quán)應(yīng)比任何圖像的優(yōu)先權(quán)都高。
對象大小評估(如果在報頭中指定,那么就從內(nèi)容-長度中獲得,或如果對象已經(jīng)被緩存那么從總大小中獲得)小對象的優(yōu)先權(quán)應(yīng)該比大對象的優(yōu)先權(quán)稍高。
內(nèi)容分析例如,分配給動態(tài)圖像的優(yōu)先權(quán)應(yīng)該比靜態(tài)圖像的優(yōu)先權(quán)低,如果對象大小在HTTP報頭中不可得并且對象未緩存,那么內(nèi)容分析也可以作為對象大小評估的基礎(chǔ)。
如果答復(fù)代碼是永久的或臨時的重定向(3xx),該重定向?yàn)檎埱髮ο笾付ㄒ粋€新的地點(diǎn),則分配給該新地點(diǎn)的優(yōu)先權(quán)和原始對象的一樣。
在以上三個階段的描述中,代理服務(wù)器30將設(shè)置并更新即將傳輸給客戶端40的對象的優(yōu)先權(quán)。因此代理服務(wù)器30它要為每個對象保持一些信息如對象的URL、優(yōu)先權(quán)、上次請求時間,并且如果需要的話還有一些更深層的信息。但是這些信息不能永遠(yuǎn)保存,否則代理服務(wù)器30的存儲器將被用完。如果一個高優(yōu)先權(quán)的對象從未被請求過,那么最好采取措施以使其不會阻止其它對象傳輸。
由于以上三個原因,需要執(zhí)行一個例行程序以確保刪除舊的或不再要求的信息,最后,使用下列機(jī)制中的一個或多個將所有已經(jīng)成功傳送給客戶端的對像標(biāo)志為已傳送的,或?qū)⑵湟迫胍粡堃褌魉徒o客戶端40的分開的對象清單中。
設(shè)置并配置含有相關(guān)信息一個或多個清單的最大尺度,以使舊的對象或優(yōu)先權(quán)最低的對象先終止。
在對象完全傳輸之前(意味著用戶終止下載并選擇了另一頁),無論用戶端何時重新設(shè)置TCP連接,都將即將發(fā)送的對象信息清除。
以前解答辦法還存在另一種可選方案,為了將每個HTML頁和其包含的對象關(guān)聯(lián)起來或者相反,為每個對象保持交叉參考。當(dāng)客戶端40重新設(shè)置TCP連接時,只刪除含在同一HTML頁中的對象。
在一段指定的時間之后,或在一定數(shù)量的HTTP請求或響應(yīng)處理完之后,可降低所有對象的優(yōu)先權(quán)。
對象的重新排序以前章節(jié)中,描述了如何生成即將傳送給客戶端40的請求對象清單,或描述了優(yōu)先權(quán)清單的更新機(jī)制。通常,代理服務(wù)器30接收來自服務(wù)器20的請求對象的順序不同于優(yōu)先權(quán)清單中所示的順序。其結(jié)果是,代理服務(wù)器30必須對收到的對象進(jìn)行重新排序,排序方式為,盡可能按照優(yōu)先權(quán)清單中所示的順序排列要轉(zhuǎn)寄給客戶端40的請求對象。通過有意延遲低優(yōu)先權(quán)的對象和在沒有明顯延遲的情況下轉(zhuǎn)寄高優(yōu)先權(quán)的對象給客戶端40,代理服務(wù)器30就實(shí)現(xiàn)了從服務(wù)器20接收的對象的重新排序。
代理服務(wù)器30利用不同延遲機(jī)制的組合,對從服務(wù)器20接收的對象重新排序。下文將對這些延遲機(jī)制中的兩個進(jìn)行描述,即TCP連接掛起和HTTP重定向。
TCP連接中止。
根據(jù)圖2明顯的,代理服務(wù)器30和客戶端40間的鏈接14是由許多TCP50組成的,依據(jù)通過單獨(dú)連接50轉(zhuǎn)寄的請求對象的優(yōu)先權(quán),可中止一個或多個用于低優(yōu)先權(quán)對象傳輸?shù)倪B接。該個別連接的中止會釋放鏈路14上的一些帶寬,對于優(yōu)先傳輸?shù)母邇?yōu)先權(quán)對象來說,這些帶寬就可用了。結(jié)果是,高優(yōu)先權(quán)對象將在低優(yōu)先權(quán)對象之前傳輸。
執(zhí)行連接50的掛起,使得該連接是打開的并在一段時間內(nèi)不傳輸對象。作為選擇,掛起該連接50可通過關(guān)閉連接50而完成,中止前或存儲或不存儲連接50的狀態(tài)。當(dāng)存儲時,可在以后一個時間點(diǎn)以其被中止時同樣的狀態(tài)將其打開。
連接50的掛起有這樣的好處,通過鏈接14沒有發(fā)送額外的數(shù)據(jù)。最好的,僅在釋放的帶寬被其它的傳輸高優(yōu)先權(quán)對象的連接50充分利用的情況下,掛起該連接50。
為了避免可用帶寬的浪費(fèi),配置代理服務(wù)器30以使在掛起連接50之前檢查鏈接14是否已被充分利用。一個可能的程序,用以預(yù)測鏈接14是否現(xiàn)在或?qū)硎强臻e的,會包括比較轉(zhuǎn)向客戶端40所有連接50(在過去的N秒里)的平均流通量和當(dāng)前在代理服務(wù)器30(參考圖3)緩沖36中緩存或緩沖并將被發(fā)送的數(shù)據(jù)總量。特別的,如果通過其它方法也可知道該鏈接14上的可用帶寬,那么別的或尤其較簡單的用來估計(jì)連接14利用率的技術(shù)也可完成該功能。
HTTP重定向如果代理服務(wù)器30期望立刻將高優(yōu)先權(quán)的對象發(fā)送個客戶端14(例如,由于將HTML頁的HTML代碼轉(zhuǎn)寄給客戶端40時,代理服務(wù)器30早先發(fā)現(xiàn)了這些對象的鏈接),并且如果當(dāng)前其它連接50上沒有什么傳輸導(dǎo)致該連接的掛起浪費(fèi)一些帶寬,那么代理服務(wù)器30就可用另一個延遲計(jì)劃。在這種情況下,可能可用的延遲計(jì)劃包含在稍后一個時間點(diǎn)上通知客戶端40重復(fù)該對象請求。
盡管HTTP指定,將任何HTTP響應(yīng)發(fā)送給客戶端40的順序必須和運(yùn)行在客戶端40上的瀏覽器發(fā)出HTTP請求的順序一樣,但是通知瀏覽器稍后重試HTTP請求還是可能的。通過將一個狀態(tài)為“302”、報頭字段為“Retry-After”的HTTP響應(yīng)發(fā)送給客戶端40,可完成此功能。該報頭字段會告訴客戶端40,在一個特定時間量之后重試其HTTP請求。為了響應(yīng)狀態(tài)代碼“302”的接收(可能包含“Retry-After”報頭字段),當(dāng)前瀏覽器在處理完所有的未決的請求之后,就重新為HTTP請求安排時間。
HTTP標(biāo)準(zhǔn)1.1中指定的狀態(tài)碼“302”告訴瀏覽器,在一個不同于已請求地點(diǎn)的地點(diǎn)找到(暫時)了一個給定對象,發(fā)送給客戶端40的HTTP響應(yīng)包含該對象的新字段。根據(jù)本發(fā)明,可使用該機(jī)制來完成延遲計(jì)劃。
根據(jù)本發(fā)明,代理服務(wù)器30以即將延遲對象的新(虛擬)URL的形式生成一個屬性,然后通知運(yùn)行在客戶端40上的瀏覽器重試HTTP請求,將該臨時屬性(例如URL)用作對象的新地點(diǎn)。然后通知瀏覽器在稍后一個時間點(diǎn)上為HTTP請求重新計(jì)劃定時。當(dāng)瀏覽器重復(fù)其HTTP請求(包括臨時屬性,例如虛擬URL)時,代理服務(wù)器30會將該屬性轉(zhuǎn)換成原始URL并將該HTTP請求轉(zhuǎn)寄給服務(wù)器20。作為選擇,在原始HTTP請求被代理服務(wù)器30接收之后,會被轉(zhuǎn)寄給服務(wù)器20。在這種情況下,代理服務(wù)器30將臨時存儲該來自服務(wù)器20的響應(yīng),直到它接收到來自服務(wù)器40的重復(fù)HTTP請求。
下面,通過參考圖4和5,更詳細(xì)地描述上述發(fā)明的延遲機(jī)制。據(jù)認(rèn)為,代理服務(wù)器30從客戶端40處收到的HTTP請求涉及到這樣一個對象,它認(rèn)為該對象的優(yōu)先權(quán)較低。
在圖4第一步402中,通過鏈接14,代理服務(wù)器30從客戶端40處收到一個HTTP請求,在HTTP的示例例子中,該來自客戶端的第一請求有下列格式GET http//example.com/some/image.png HTTP/1.1Hostexample.com (主機(jī))User-AgentMozilla/5.0(xll;Linux i686;en-Us;rv0.99)(用戶-代理機(jī)構(gòu))Gecko/20020311Connectionclose (連接關(guān)閉)為了響應(yīng)第402步中收到的來自客戶端40的HTTP請求,代理服務(wù)器30重改客戶端40的方向給一個新的(虛擬)地點(diǎn),并通知該客戶端在重試HTTP請求之前等待一段時間(延遲)。根據(jù)HTTP標(biāo)準(zhǔn)1.1中指定的狀態(tài)碼“302”,來自代理服務(wù)器30的重定向信息有下列格式HTTP/1.1 302 FoundDateThu,21 Mar 2002 15:12:47 (日期)SeverPrioTest/0.9 (服務(wù)器)Locationhttp//example.com/some/()image(0001).png(地點(diǎn))Retry-After5
Connectionclose (連接)Transfer-Encodingchunked (傳輸-編碼)Content_Typetext/html;charset=iso-8859-1(內(nèi)容_類型)(下面是一些可以讀懂的文本)在從客戶端40處收到初始HTTP請求(第402步)之后,并在決定將對象發(fā)送給客戶端40(第406和408步)之后,代理服務(wù)器30可在任何時候請求來自服務(wù)器20的對象。
接收到上述重定向消息之后,客戶端40將等待一段時間,該時間在重定向消息中指定,例如5秒(或直到傳輸完所有的對象)。然后在第412步中,客戶端40重復(fù)其HTTP請求,該請求表明新的(虛擬)地點(diǎn)如下GET http//example.com/some/()image(00001).pngHTTP/1.1Hostemample.comUser-AgentMozilla/5.0(Xll;Linux i686;en-US;rv0.9.9)Gecko/200220311Connectionclose關(guān)于來自客戶端40的重復(fù)HTTP請求的接收,代理服務(wù)器30決定是否進(jìn)一步延遲請求對象(例如,通過掛起連接50或通過進(jìn)一步的重定向消息),或是否將延遲對象轉(zhuǎn)寄給客戶端40。如果代理服務(wù)器30決定無需任何進(jìn)一步延遲轉(zhuǎn)寄延遲對象,那么該功能可通過如下格式完成HTTP/1.1 200OKDateThu,21 Mar 2002 15:12:50SeverApache/1.3.23(Unix)Conent-Typeimage/pngConent-Length1520(下面是圖像的內(nèi)容)現(xiàn)在通過參考圖5解釋代理服務(wù)器30在參考圖4所描述的重定向子程序期間所采取的決定。
在第502步中,代理服務(wù)器30從客戶端40處收到HTTP請求,在緊接著的504步中,它確定是否包含在HTTP請求中的URL是一個已修改的URL,例如,是以前重定向的結(jié)果。如果情況確實(shí)是這樣,那么代理服務(wù)器30就對URL進(jìn)行譯碼并在第506步中保存該原始地點(diǎn),并通過節(jié)點(diǎn)508移到節(jié)點(diǎn)510。否則,通過節(jié)點(diǎn)508直接從504步移到510步。
在第510步中,代理服務(wù)器30確定是否由HTTP請求方式請求的對象已經(jīng)是可用的,例如,存儲在代理服務(wù)器30(參閱圖3)的緩沖30中。如果該對象仍然未緩存,那么代理服務(wù)器30就從服務(wù)器20處請求該對象,或?qū)ζ渥鰳?biāo)記以隨后在514步中獲取。通過節(jié)點(diǎn)512該方法從514步轉(zhuǎn)到516步。在客戶端40請求的對象已經(jīng)可用的情況下,通過節(jié)點(diǎn)512,可直接從510步轉(zhuǎn)到516步。
第516步中,包含請求對象的HTTP響應(yīng)即將發(fā)送給客戶端40,這與圖6流圖中的第一步相符,下面進(jìn)行討論原則上,當(dāng)執(zhí)行第502或516步時,或516步以后,可在任何時間將該重定向消息(圖4第404步)發(fā)送給客戶端40,應(yīng)該指出的是,對象的有用性(例如,是否請求對象已經(jīng)被緩存、正在傳輸或是否該對象還未被請求)是影響該請求對象初始優(yōu)先權(quán)的進(jìn)一步因素。
重新排序決定一旦HTTP請求即將發(fā)送給客戶端40(圖5第516步),則必須決定是否應(yīng)將包含在其中的對象也發(fā)送給客戶端40,是否應(yīng)改變客戶端40的方向,或是否應(yīng)掛起借以將該對象發(fā)送給客戶端40的連接50。在這點(diǎn)上,圖6描述了一個用以描述示例決定計(jì)劃的流圖。
第602步中,HTTP響應(yīng)即將發(fā)送給客戶端,在緊接著的604步中,評估該對象的優(yōu)先權(quán)涉及到,是否更新該優(yōu)先權(quán)。如果必須更新該對象的優(yōu)先權(quán),那么就在604步中對其進(jìn)行調(diào)整。
下一步606步中,評估對象的當(dāng)前優(yōu)先權(quán)以找出,是否該對象是所有正在傳輸?shù)幕蚣磳⑹盏降膶ο笾袃?yōu)先權(quán)最高的。如果在該步中確定該請求對象的優(yōu)先權(quán)確實(shí)最高,那么通過節(jié)點(diǎn)610方法轉(zhuǎn)到612步,在612步中將請求對象發(fā)送給客戶端40。
如果在606步中當(dāng)前請求對象優(yōu)先權(quán)和其它對象優(yōu)先權(quán)比較的結(jié)果是,該請求對象沒有最高優(yōu)先權(quán),那么轉(zhuǎn)到614步。關(guān)于第606步,應(yīng)當(dāng)指出,除了比較當(dāng)前請求對象優(yōu)先權(quán)和其它對象優(yōu)先權(quán)外,還可比較當(dāng)前對象優(yōu)先權(quán)和一個固定門限,或在比較中增加一個偏移量,使得兩個優(yōu)先權(quán)之差必須大于預(yù)定門限,該差方可被認(rèn)定為足夠大。在其偏差較大之前有足夠的不同。
604步中,代理服務(wù)器30估計(jì)是否客戶端40(參考圖2)的鏈接14是或?qū)⑹强臻e的,如上面所解釋的,存在幾種方法可完成此功能。其中之一包括計(jì)算最大數(shù)據(jù)量的運(yùn)行平均,其中數(shù)據(jù)是所有通過連接50轉(zhuǎn)向同樣客戶端40在最后N秒內(nèi)發(fā)送的或承認(rèn)的數(shù)據(jù)。該方法給出一個最大流通量的可用估計(jì)。
然后,將獲得的估計(jì)結(jié)果和即將在未掛起連接50發(fā)送的數(shù)據(jù)量做比較。至少在一個完整的來回旅程過程中,如果代理服務(wù)器30未發(fā)現(xiàn)足夠的發(fā)送來填滿該鏈接的數(shù)據(jù),那么,就認(rèn)為在到客戶端40的連接14上有多余的帶寬,并轉(zhuǎn)到616步。
在616步中,執(zhí)行一個與606步中的比較相似的比較,如果在該步中確定當(dāng)前請求對象的優(yōu)先權(quán)比其它期待對象的優(yōu)先權(quán)高,那么,通過節(jié)點(diǎn)610,代理服務(wù)器30繼續(xù)612步,并立刻將該該請求對象發(fā)送給客戶端40。否則進(jìn)行618步并發(fā)送重定向消息(狀態(tài)代碼“302”)給客戶端40,就像上面與圖4聯(lián)合討論的一樣。
第616步中所采取的決定要受到當(dāng)前請求對象大小(如果已知)的影響。如果已知該對象是小的(例如,小于重定向消息大小的兩倍),那么該代理服務(wù)器將不發(fā)送重定向消息,而是發(fā)送該對象,即使到那時該對象被分配了一個很低的優(yōu)先權(quán)(這可看作是更新優(yōu)先權(quán)的一種方式)。
如果在614步中確定存在足夠的通過發(fā)送以填滿鏈接14的數(shù)據(jù),那么繼續(xù)620步,并中止通過其傳輸當(dāng)前請求對象的連接客戶端40的連接50。
方法可從612、618和620步中的任一步到達(dá)622步,在622步中,代理服務(wù)器30將重新評估所有連接50,以找出是否要重新打開任何一個掛起連接50。
HTTP/1.1協(xié)議支持流水線操作選項(xiàng),該選項(xiàng)允許客戶端40無需等待以前的答復(fù),直接在相同的TCP連接上將一些請求發(fā)送給服務(wù)器20,或發(fā)送給TCP連接代理服務(wù)器30。在使用流水線操作的情況下,通過同樣的連接50,可將多個即將發(fā)送的對象發(fā)送給客戶端40。顯然的,在該情況下,低優(yōu)先權(quán)對象會阻礙第二個即將在同樣連接50上傳輸?shù)母邇?yōu)先權(quán)對象。如果有一些等待相同連接50的對象,那么可在第606和616步中確定并考慮這些對象的最大優(yōu)先權(quán)或平均優(yōu)先權(quán)。這確保低優(yōu)先權(quán)對象不會阻礙高優(yōu)先權(quán)對象。
可能的擴(kuò)展關(guān)于參考圖1-6描述的示例實(shí)施案例,可實(shí)現(xiàn)的一些擴(kuò)展,其中一些已經(jīng)簡略描述過。
根據(jù)即將傳輸對象的優(yōu)先權(quán),在這些擴(kuò)展中有一個擴(kuò)展涉及到限制鏈接14上的傳輸速度。例如,根據(jù)即將傳輸對象的優(yōu)先權(quán),通過為每個連接50分配一份特定份額的處理能力,可實(shí)現(xiàn)該功能。當(dāng)處理正在進(jìn)行時,減少該單獨(dú)對象的優(yōu)先權(quán),如果代理服務(wù)器30在round-robin方式下處理連接50,通過從該對象優(yōu)先權(quán)中獲得的數(shù)字,限制每循環(huán)每連接50上的傳輸數(shù)據(jù)量,通過該限制可完成此功能。處理能力的動態(tài)分配能有利地和上述的掛起、重定向機(jī)制組合起來。處理能力也可包含對象或傳輸代碼的任何變換。
根據(jù)本發(fā)明的進(jìn)一步擴(kuò)展,運(yùn)行在客戶端40上的瀏覽器直接為對象分配優(yōu)先權(quán),然后根據(jù)它們的優(yōu)先權(quán),為單個對象的HTTP請求進(jìn)行計(jì)劃定時。如果瀏覽器直接分配優(yōu)先權(quán),那么則存在一些用以細(xì)調(diào)每個對象優(yōu)先權(quán)的附加因素對象在頁中的位置(坐標(biāo))可見范圍的相對位置(可見范圍之外的對象有較低的優(yōu)先權(quán))如果圖像加載或腳本執(zhí)行無效,那么瀏覽器立刻知道無需為這些對象分配優(yōu)先權(quán)。
另外,瀏覽器了解何時用戶根據(jù)書簽或通過輸入新的URL選擇一個新HTML。因此瀏覽器清空不再需要的對象的清單。
本發(fā)明的進(jìn)一步擴(kuò)展涉及到一個代理元件,該代理元件與瀏覽器位于同一臺電腦(客戶端)上或就網(wǎng)絡(luò)連接而言該代理元件位于該電腦(客戶端)附近。這種情況在圖7中描述。
根據(jù)圖7明顯的,客戶端40不僅包括一個瀏覽元件42,而且包含一個附加的與瀏覽元件42進(jìn)行通信的代理服務(wù)器30(有圖3所示的結(jié)構(gòu))。在這種情況下,代理元件30和瀏覽元件42之間的鏈接14與代理元件和服務(wù)器20(圖7中未描述)之間的鏈接12相比處理能力更高延遲更小。
結(jié)果,客戶端旁的代理元件30會影響該請求流,原因是它無法處理關(guān)于該響應(yīng)流的很多工作。基于從當(dāng)前HTTP請求和以前HTTP請求獲得的優(yōu)先權(quán)信息(例如,涉及進(jìn)一步對象的先前的HTML代碼),并基于其鏈接可用性的估計(jì),該代理元件將決定,是否將HTTP請求轉(zhuǎn)寄給服務(wù)器和/或是否立刻回復(fù)一個重定向消息。
即將采取的決定比圖6流程圖中采取的決定簡單,特別的,該決定可簡化為,評估是否當(dāng)前請求對象與一些正在傳輸或?qū)⒈粋鬏數(shù)膶ο笙啾葍?yōu)先權(quán)更低,是否該鏈接被充分利用。如果兩個條件都成立,那么發(fā)送方向更改消息給瀏覽元件42。在其它情況下,立刻將HTTP請求轉(zhuǎn)寄給服務(wù)器。
如果在一個特定的鏈接上使用HTTP流水線操作,并且如果一些以前的HTTP請求正在處理,那么客戶端旁的代理元件30就可掛起該HTTP請求,直到它采取了決定。最遲在接收完以前對象時,該代理元件必須采取一個決定。
本發(fā)明的又一個擴(kuò)展涉及到一些對象下載的凍結(jié),該凍結(jié)基于這些對象的優(yōu)先權(quán)。這意味著分配給對象的優(yōu)先權(quán)完全可用來凍結(jié)對象。如果在優(yōu)先權(quán)上設(shè)置了一個門限,那么不為客戶端40發(fā)送任何優(yōu)先權(quán)低于該門限的對象。在這種情況下,當(dāng)代理服務(wù)器(或代理元件)30發(fā)現(xiàn)這樣一個對象時,簡單地,就將HTTP/1.1標(biāo)準(zhǔn)中定義的“4XX”和“5XX”中之一返回給客戶端40??赡艿拇a狀態(tài)為“403禁止”、“409沖突”或“503服務(wù)不可用”。
作為一個附加擴(kuò)展,分配給對象的優(yōu)先權(quán)可用來進(jìn)行預(yù)取。該預(yù)取機(jī)制允許代理服務(wù)器30,在客戶端40真正請求一些對象之前,將他們填充到緩沖36(參考圖3)中。這樣的預(yù)取機(jī)制可以基于一個HTML代碼的分析,其中的HTML代碼是從代理服務(wù)器30發(fā)送到客戶端40的代碼,并包含有進(jìn)一步對象的參考。根據(jù)這些對象參考的分析,代理服務(wù)器30為單獨(dú)對象分配優(yōu)先權(quán),并基于分配定義即將預(yù)取的對象和順序。最好,預(yù)取對象始于優(yōu)先權(quán)最高的對象。
依據(jù)可與上述預(yù)取機(jī)制一起組合的靜態(tài)深層擴(kuò)展,執(zhí)行特定的推進(jìn)計(jì)劃,使得無需從客戶端40處接收到明顯的對象請求,就允許將對象從代理服務(wù)器30傳輸?shù)娇蛻舳?0。
優(yōu)選實(shí)施例的各種修改是可能的,并未偏離本發(fā)明的精神及范圍。盡管本發(fā)明連同優(yōu)選實(shí)施例一起描述,但是應(yīng)該理解該描述并不是為了將本發(fā)明局限于此。相反,本發(fā)明可用于,未偏離本發(fā)明的精神及范圍的所有的修改和/或上面提到描述的附加。
權(quán)利要求
1.一種在通信網(wǎng)絡(luò)(10)中用于控制通過中間元件(30)由第一元件(20)到第二元件(40)的對象傳輸?shù)目刂品椒?,這里第二元件(40)相對第一元件(20)來說是遠(yuǎn)程的,其中對象傳輸是以多個對象請求為基礎(chǔ)的,所述對象請求涉及的對象在由第二元件(40)或由該通信網(wǎng)絡(luò)(10)另一個元件處理的一個或多個代碼中提到,中間元件執(zhí)行步驟如下發(fā)送對象請求給第一元件(20)從第一元件(20)中接收請求對象;更新和/或評估請求對象的優(yōu)先權(quán),其中依據(jù)至少對象請求和該請求對象所涉及代碼其中之一的分析,為該請求對象分配初始優(yōu)先權(quán),并且依據(jù)請求對象的優(yōu)先權(quán),延遲請求對象或向第二元件(40)轉(zhuǎn)發(fā)該請求對象。
2.權(quán)利要求1的方法,其中執(zhí)行延遲使得從第一元件(20)處接收對象的順序不同于對象轉(zhuǎn)寄給第二元件的順序(40)。
3.權(quán)利要求1或2的方法,其中,對象請求從第二元件(40)處收到,或由中間元件(30)生成。
4.權(quán)利要求1到3之一的方法,其中請求對象的延遲至少包含下列中的一個通知第二元件(20)重新傳輸對象請求;掛起到第二元件(40)的連接,通過該元件轉(zhuǎn)寄請求對象;通知第二元件(40)請求對象將在以后一個時間點(diǎn)上自動進(jìn)行轉(zhuǎn)寄。
5.權(quán)利要求3的方法,其中通知第二元件(40)重復(fù)請求對象包括分配一個特殊屬性給要延遲的對象;通知第二元件(40)該屬性;從第二元件處接收該屬性的一個參考,并連接收到屬性參考時,發(fā)送延遲對象給第二元件或進(jìn)一步延遲該延遲對象。
6.權(quán)利要求1到5之一的方法,其中通過多個連接到第二元件(40)的連接(50),將請求對象轉(zhuǎn)寄給第二元件(40)。
7.權(quán)利要求6的方法,其中已選的連到第二元件(40)的連接(50)是否會掛起取決于該請求對象的優(yōu)先權(quán),所述請求對象是從第一元件(20)處收到并通過已選的連接之一即將被轉(zhuǎn)寄給第二元件(50)的對象。
8.權(quán)利要求6或7的方法,其中為每個連接動態(tài)分配一份特定的處理能力份額。
9.權(quán)利要求1到8之一的方法,進(jìn)一步包括發(fā)送代碼請求給第一(20)或第三元件;從第一(20)或第三元件處收到請求代碼;分析接收到的關(guān)于對象參考的代碼;評估對象參考以便為接收代碼中提到的對象分配初始優(yōu)先權(quán)。
10.權(quán)利要求1到9之一的方法,其中一旦接收到包含第一元件(20)請求的對象的響應(yīng),評估關(guān)于該響應(yīng)的接收對象優(yōu)先權(quán),以便決定是否必須更新接收對象的初始優(yōu)先權(quán)。
11.權(quán)利要求1到10之一的方法,進(jìn)一步包括生成包含有單獨(dú)對象或?qū)ο箢惖膬?yōu)先權(quán)消息的優(yōu)先權(quán)清單。
12.權(quán)利要求11的方法進(jìn)一步包括重復(fù)評估優(yōu)先權(quán)清單,至少涉及下列操作中之一更新優(yōu)先權(quán)信息,從優(yōu)先權(quán)清單刪除對象或?qū)ο箢惢蛳鄳?yīng)信息。
13.權(quán)利要求1到12之一的方法,其中這些步驟由位于第一元件、第二元件上的代理元件執(zhí)行,或由配置為通信網(wǎng)絡(luò)分離硬件元件(30)的代理元件執(zhí)行。
14.一種延遲方法,在通信網(wǎng)絡(luò)(10)中,用于延遲通過中間元件(30)由第一元件(20)到第二元件(40)的對象傳輸,這里第二元件(40)相對第一元件(20)來說是遠(yuǎn)程的。其中對象傳輸?shù)幕A(chǔ)是許多對象請求,對象請求涉及的對象在由第二元件(40)或由該通信網(wǎng)絡(luò)(10)另一個元件處理的一個或多個代碼中提到,中間元件執(zhí)行步驟如下分配特定屬性給即將延遲的對象;通知第二元件(40)該屬性;從第二元件(40)處收到該屬性的參考,并且一旦接收到該屬性參考,將延遲的已分配該屬性的對象發(fā)送給第二元件(40)或進(jìn)一步延遲該延遲對象。
15.權(quán)利要求14的方法,其中按照推進(jìn)計(jì)劃或作為收到來自第二元件(40)對象請求的響應(yīng),將該對象發(fā)送給第二元件(40)。
16.權(quán)利要求15的方法,其中在一個重復(fù)對象請求的通知下告知第二元件(40)該屬性,并在一個重復(fù)對象請求的條件下從第二元件處接收到該屬性的參考。
17.一個包含程序代碼部分的計(jì)算機(jī)程序產(chǎn)品,該代碼部分用于當(dāng)計(jì)算機(jī)程序產(chǎn)品在計(jì)算機(jī)系統(tǒng)上運(yùn)行(30)時執(zhí)行權(quán)利要求1到16的步驟。
18.權(quán)利要求17的計(jì)算機(jī)程序產(chǎn)品,存儲在計(jì)算機(jī)可讀記錄媒質(zhì)上。
19.一個中間元件(30),在通信網(wǎng)絡(luò)(10)中,用于控制通過中間元件(30)由第一元件(20)到第二元件(40)的對象傳輸,這里第二元件(40)相對第一元件(20)來說是遠(yuǎn)程的。其中對象傳輸?shù)幕A(chǔ)是許多對象請求,對象請求涉及的對象在第二或其它元件所要處理的一個或多個代碼中提到,中間元件(30)包含一個通信接口(32),用于發(fā)送對象請求給第一元件(20),從第一元件(20)中接收請求對象,一個用于更新和/或評估請求對象的優(yōu)先權(quán)的處理單元(34),依據(jù)至少對象請求和該請求對象所涉及代碼其中之一的分析,為該請求對象分配初始優(yōu)先權(quán),并且其中處理單元依據(jù)請求對象的優(yōu)先權(quán),延遲請求對象或控制通信接口(32)向第二元件(40)轉(zhuǎn)發(fā)該請求對象。
20.一個中間元件(30),在通信網(wǎng)絡(luò)(10)中,用于延遲通過中間元件(30)由第一元件(20)到第二元件(40)的對象傳輸,這里第二元件(40)相對第一元件(20)來說是遠(yuǎn)程的。其中對象傳輸?shù)幕A(chǔ)是許多對象請求,對象請求涉及的對象在通信網(wǎng)絡(luò)第二或其它元件所要處理的一個或多個代碼中提到,中間元件(30)包含一個處理單元(34),用于分配特定屬性給將被延遲的對象;還包含一個通信接口(32),用于通知第二元件(40)該屬性,從第二元件(40)處接收該屬性的參考,并且,在接收到該屬性參考時,將延遲的已分配該屬性的對象發(fā)送給第二元件(40)或進(jìn)一步延遲該被延遲對象。
21.權(quán)利要求19或20的中間元件,該中間組件配置為代理服務(wù)器(30)。
22.至少包含權(quán)利要求19到21元件(30)之一的網(wǎng)絡(luò)系統(tǒng)(10)。
23.權(quán)利要求22的網(wǎng)絡(luò)系統(tǒng),進(jìn)一步包含中間元件(30)與第一元件(20)之間的一個第一鏈接(12)和中間元件(30)與第二元件(40)之間的一個第二鏈接(14),第一鏈接(12)和第二鏈接(14)有不同的傳輸速率。
24.權(quán)利要求22或23的網(wǎng)絡(luò)系統(tǒng),包含一個形式為移動終端的第二元件(40)。
全文摘要
一種方法和一個中間元件,在通信網(wǎng)絡(luò)中用來控制通過中間元件由第一網(wǎng)絡(luò)元件到第二網(wǎng)絡(luò)元件的對象傳輸,第二網(wǎng)絡(luò)元件相對第一網(wǎng)絡(luò)元件來說是遠(yuǎn)程的。對象傳輸?shù)幕A(chǔ)是許多對象請求,該對象請求涉及的對象會在第二網(wǎng)絡(luò)元件或其它網(wǎng)絡(luò)元件所要處理的一個或多個代碼中提到。中間元件執(zhí)行這些步驟發(fā)送對象請求給第一網(wǎng)絡(luò)元件,從第一網(wǎng)絡(luò)元件中接收請求對象,更新和/或評估請求對象的優(yōu)先權(quán),并且,依據(jù)請求對象的優(yōu)先權(quán),延遲請求對象或向第二網(wǎng)絡(luò)元件轉(zhuǎn)寄請求對象。至少基于對象請求和該請求對象相關(guān)代碼二者之一的分析,為該請求對象分配初始優(yōu)先權(quán)。
文檔編號G06F17/30GK1625877SQ02828708
公開日2005年6月8日 申請日期2002年4月5日 優(yōu)先權(quán)日2002年4月5日
發(fā)明者R·奎內(nèi)特, D·沙夫拉斯 申請人:艾利森電話股份有限公司