專利名稱:客戶端計(jì)算機(jī)顯示數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的方法,用于在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行軟件代碼以及客戶端計(jì)算機(jī)。本發(fā)明基于在先申請EP 04 292 833.3,通過參考將其引入于此。
背景技術(shù):
因特網(wǎng)上的web服務(wù)器提供通常以HTML(超文本標(biāo)記語言)編碼的具有圖形網(wǎng)頁的網(wǎng)站,其中連接到因特網(wǎng)的或者通過本地網(wǎng)絡(luò),例如局域網(wǎng)(LAN)與web服務(wù)器連接的客戶端計(jì)算機(jī)可以訪問這些網(wǎng)站??蛻舳擞?jì)算機(jī)使用允許用戶下載網(wǎng)頁以及在客戶端計(jì)算機(jī)上顯示網(wǎng)頁的瀏覽器。
基于web的用戶界面通常是緩慢的。當(dāng)web服務(wù)器和客戶端計(jì)算機(jī)之間的因特網(wǎng)連接很弱(例如64kB/s),用戶數(shù)目巨大,提供頁面的服務(wù)器配有較小的內(nèi)存和/或CPU資源或者客戶端設(shè)備很小,例如是PDA(個人數(shù)字助理)、商務(wù)電話、移動電話或者智能電話時,該界面就更加緩慢了。
為了加快基于web的用戶界面的響應(yīng)時間,已知在客戶端側(cè)(瀏覽器高速緩存)或者中間代理(客戶端和服務(wù)器之間的代理)上使用高速緩存技術(shù)。但是,高速緩存僅僅在已經(jīng)下載了相同的頁面時加速頁面的下載。
該網(wǎng)頁可以具有保持不變的靜態(tài)數(shù)據(jù)和在網(wǎng)頁上變化的動態(tài)數(shù)據(jù)。
例如,JSP頁面(JSP=Java服務(wù)器端頁面)使將網(wǎng)頁的動態(tài)部分從靜態(tài)HTML分離成為可能。人們簡單地以通常的方式編寫常規(guī)的HTML并且在特定的標(biāo)簽中包括用于動態(tài)數(shù)據(jù)的代碼。人們所寫的通??雌饋砀癯R?guī)的HTML文件而不是小服務(wù)程序(servlet),然后在后臺,JSP頁面才轉(zhuǎn)換成通常的小服務(wù)程序。這通常在該頁面被第一次請求時完成。小服務(wù)程序輸出與小服務(wù)程序服務(wù)方法相關(guān)聯(lián)的靜態(tài)HTML。這種頁面不總是相同的,使得人們在客戶端側(cè)或者代理上都無法對其進(jìn)行高速緩存。利用JSP技術(shù),JSP頁面無法高速緩存并且該頁面由小服務(wù)程序容器進(jìn)行分析,這占用服務(wù)器的時間和資源。這種問題同樣存在于其它種類的動態(tài)網(wǎng)頁上,例如ASP、PHP或者SSI頁面(ASP=動態(tài)服務(wù)器頁面;PHP=超文本預(yù)處理器;SSI=服務(wù)器端包含)。
當(dāng)網(wǎng)頁包含動態(tài)數(shù)據(jù)時,網(wǎng)頁必須周期性地進(jìn)行刷新或者重新載入,以正確地反映任何變動的數(shù)據(jù)。瀏覽器必須持續(xù)地下載網(wǎng)頁數(shù)據(jù)并更新已經(jīng)下載的網(wǎng)頁。一些瀏覽器試圖通過在將網(wǎng)頁下載到瀏覽器時使用高速緩存方案來存儲HTML網(wǎng)頁以提高效率。當(dāng)網(wǎng)頁必須被刷新時,瀏覽器重新下載整個網(wǎng)頁,接受那些在已經(jīng)在高速緩存中的在網(wǎng)頁上使用的文件。如果請求刷新動態(tài)數(shù)據(jù),則傳統(tǒng)的瀏覽器簡單地重新載入整個網(wǎng)頁,但是該整個的重新載入是緩慢的并且占用大量系統(tǒng)資源。另一個在瀏覽器上刷新網(wǎng)頁的方法是在網(wǎng)頁上包括刷新小程序,其指示瀏覽器以預(yù)先確定的時間間隔更新網(wǎng)頁。
但是,所有這些方法在更新下載到瀏覽器上的網(wǎng)頁時都不區(qū)分網(wǎng)站上的靜態(tài)和動態(tài)數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明的目標(biāo)是加速基于web的界面的響應(yīng)時間。
本發(fā)明的目標(biāo)通過在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的方法來實(shí)現(xiàn),該方法包括以下步驟從web服務(wù)器發(fā)送網(wǎng)頁特別是HTML頁面到客戶端計(jì)算機(jī),該網(wǎng)頁包括圖形用戶界面的靜態(tài)數(shù)據(jù)以及至少一個用于包括網(wǎng)頁動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序;將網(wǎng)頁存儲在客戶端計(jì)算機(jī)的高速緩存中;將腳本從網(wǎng)絡(luò)服務(wù)器傳送到客戶端計(jì)算機(jī),該腳本包括由該程序產(chǎn)生的動態(tài)數(shù)據(jù);通過動態(tài)數(shù)據(jù)將動態(tài)部分包括到網(wǎng)頁的靜態(tài)部分中;以及通過在客戶端計(jì)算機(jī)上執(zhí)行的瀏覽器顯示該網(wǎng)頁。本發(fā)明的目標(biāo)進(jìn)一步由用于在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行軟件代碼來實(shí)現(xiàn),該代碼包括該代碼包括將從web服務(wù)器發(fā)送到客戶端計(jì)算機(jī)的代碼,該代碼指定了一個網(wǎng)頁,特別是HTML頁面,其中該網(wǎng)頁包含圖形用戶界面的靜態(tài)數(shù)據(jù)和至少一個用于包括該網(wǎng)頁的動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序;以及用于通過由該程序產(chǎn)生的并且通過該腳本從該網(wǎng)絡(luò)服務(wù)器傳送到該客戶端計(jì)算機(jī)的動態(tài)數(shù)據(jù)將該動態(tài)部分包括到該網(wǎng)頁的靜態(tài)部分中的代碼。本發(fā)明的目標(biāo)進(jìn)一步通過客戶端計(jì)算機(jī)來實(shí)現(xiàn),其包括用于從web服務(wù)器獲取網(wǎng)頁的通信單元;用于存放網(wǎng)頁特別是HTML頁面的存儲器,該網(wǎng)頁包括圖形用戶界面的靜態(tài)數(shù)據(jù)以及至少一個用于包括該網(wǎng)頁動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序,該腳本包含由該程序產(chǎn)生的動態(tài)數(shù)據(jù);以及瀏覽器,其適于將從該web服務(wù)器獲取的該網(wǎng)頁存儲在高速緩存中,通過由該腳本傳送的所述動態(tài)數(shù)據(jù)將該動態(tài)部分包括到該網(wǎng)頁的靜態(tài)部分中,并且顯示該網(wǎng)頁。
本發(fā)明使得將靜態(tài)部分,即靜態(tài)GUI(圖形用戶界面)從動態(tài)部分(動態(tài)數(shù)據(jù))中完全分離出來成為可能,并且允許最大化的使用經(jīng)典的高速緩存技術(shù)以減少將在客戶端和服務(wù)器之間傳送的數(shù)據(jù)量。其還從用戶體驗(yàn)的角度提高了速度感。
在因特網(wǎng)上通常的數(shù)據(jù)庫驅(qū)動的/數(shù)據(jù)集中的網(wǎng)頁應(yīng)用程序中,50%到90%的網(wǎng)頁內(nèi)容是靜態(tài)信息。結(jié)合最大化使用經(jīng)典的高速緩存技術(shù)獲得的優(yōu)勢,本發(fā)明所達(dá)到的時間響應(yīng)優(yōu)勢在35%到75%之間。本發(fā)明提高了響應(yīng)時間、高速緩存的利用,并且允許靜態(tài)GUI和動態(tài)數(shù)據(jù)之間的分離,從而引入了可以由不同開發(fā)者完成工作的決策模型。
進(jìn)一步,本發(fā)明使得將圖形用戶界面的靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)托管在因特網(wǎng)上的不同服務(wù)器上成為可能。優(yōu)選地,靜態(tài)數(shù)據(jù),即HTML網(wǎng)頁,和動態(tài)數(shù)據(jù),即服務(wù)器端程序,例如小服務(wù)程序,由不同種類的適用于各自數(shù)據(jù)的特定要求的服務(wù)器基礎(chǔ)設(shè)施來處理。例如,通過web服務(wù)基礎(chǔ)設(shè)施的不同地理分布服務(wù)器托管HTML網(wǎng)頁,而通過專用的應(yīng)用程序服務(wù)器托管小服務(wù)程序。這種方法提高了系統(tǒng)的速度和可靠性。
進(jìn)一步的優(yōu)點(diǎn)由附屬權(quán)利要求指示的本發(fā)明的實(shí)施例來實(shí)現(xiàn)。
嵌入由一個標(biāo)準(zhǔn)嵌入來完成,例如,標(biāo)準(zhǔn)javascript嵌入,但是URL(統(tǒng)一資源定位符)不是一個javascript文件而是將腳本輸出到其標(biāo)準(zhǔn)輸出上的程序(ASP,JSP,PHP,小服務(wù)程序,C/C++程序或者任何語言編寫的程序)優(yōu)選地,網(wǎng)頁是指定圖形用戶界面(GUI)的靜態(tài)部分并且具有一個javascript嵌入集合的HTML頁面。HTML頁面編碼了包括窗口小部件、文本、動態(tài)行為(表示“如果...那么將禁用該按鈕”的函數(shù))的圖形用戶界面。如果該GUI被設(shè)計(jì)得很好,則其可以完全獨(dú)立于傳到該GUI的數(shù)據(jù)。因此,可以說該GUI是“靜態(tài)的”。動態(tài)數(shù)據(jù)包括可以實(shí)例化GUI以填充域的信息?;诰W(wǎng)頁的javascript嵌入的嵌入機(jī)制將動態(tài)部分包括到靜態(tài)部分中而不影響高速緩存(代理或者客戶端側(cè))機(jī)制。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,客戶端計(jì)算機(jī)執(zhí)行自動使用由嵌入提供的數(shù)據(jù)以填充域的自動數(shù)據(jù)填充機(jī)制。下載到客戶端計(jì)算機(jī)的網(wǎng)頁包含適于執(zhí)行該自動填充過程的腳本??蛻舳擞?jì)算機(jī)使用該自動數(shù)據(jù)填充過程來填充網(wǎng)頁域,即利用由嵌入所提供的對應(yīng)動態(tài)數(shù)據(jù)填充HTML域。
動態(tài)部分可以總結(jié)為變量賦值,例如,javascript變量集合。優(yōu)選地,存在一個命名慣例要求HTML表單域和那些javascript變量取相同的名字。網(wǎng)絡(luò)服務(wù)器包括一個或者多個代表javascript中動態(tài)數(shù)據(jù)的javascript變量??蛻舳擞?jì)算機(jī)使用包含在獲取的腳本中的對應(yīng)javascript變量自動地填充具有與這些javascript變量相同名字的HTML表單域。這個過程提供了強(qiáng)大的機(jī)制將動態(tài)部分包括進(jìn)靜態(tài)部分而不影響高速緩存機(jī)制。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,客戶端計(jì)算機(jī)執(zhí)行函數(shù),該函數(shù)讀取當(dāng)前的查詢串,用獲取的查詢串計(jì)算文件路徑并且用鏈接的結(jié)果動態(tài)地構(gòu)建用于包括網(wǎng)頁動態(tài)部分的嵌入。
該方案解決了查詢串發(fā)布問題。例如,人們想要描述一個列出用戶的GUI。為了訪問第五個用戶,URL可以是http//myServer/user.html?id=5考慮getUser是為給定用戶提供數(shù)據(jù)的程序。user.html文件是包括使用下列指令的動態(tài)數(shù)據(jù)的javascript嵌入的靜態(tài)HTML文件。
<script language=“javascript”src=“/servlets/getUser”></script>
這里的問題是getUser程序不知道需要顯示哪個用戶。必須告訴getUser程序想要第五個用戶的數(shù)據(jù)。換句話說,想要將原始的查詢串(在原始URL中的“?”字符之后的所有字符)告知在javascript中調(diào)用的程序。這必須通過使用稱為insertJSFile()的javascript函數(shù)而不是使用<script>標(biāo)簽來完成,如下例所示<script>insertJSFile(“/servlets/getUser”);</script>
insertJSFile(filePath)函數(shù)讀取當(dāng)前的查詢串,將該filePath和獲取的查詢串鏈接起來,并且用鏈接的結(jié)果來編寫<script>標(biāo)簽。
例如,該函數(shù)將動態(tài)的構(gòu)建下列標(biāo)簽<script language=“javascript”src=“/servlets/getUser?id=5”></script>
根據(jù)本發(fā)明的另一個優(yōu)選的實(shí)施例,客戶端計(jì)算機(jī)在其上執(zhí)行能夠自動產(chǎn)生隨機(jī)數(shù)字并且將其加入到該嵌入的查詢串中的函數(shù)。該方法防止對程序的腳本輸出進(jìn)行高速緩存。當(dāng)參照程序使用<script>標(biāo)簽時,一些瀏覽器將不會正確地工作。例如,Internet Explorer會高速緩存程序的javascript輸出,這是內(nèi)存空間的一種浪費(fèi),因?yàn)樗鼈兪遣槐乇桓咚倬彺娴膭討B(tài)數(shù)據(jù)。因?yàn)楦咚倬彺媪藙討B(tài)數(shù)據(jù),瀏覽器將總是會返回相同的數(shù)據(jù)(高速緩存中的信息),即使數(shù)據(jù)已經(jīng)改變了。函數(shù)自動地產(chǎn)生隨機(jī)化的數(shù)字并且將其加到查詢串的末端,使得瀏覽器將永遠(yuǎn)不能高速緩存該動態(tài)數(shù)據(jù),因?yàn)闉g覽器使用完整的URL和查詢串一起來識別要高速緩存的文件。
根據(jù)本發(fā)明的一個優(yōu)選實(shí)施例,客戶端計(jì)算機(jī)執(zhí)行對下一個文件的后臺預(yù)先裝載??蛻舳擞?jì)算機(jī)執(zhí)行對于以后可能需要的文件的后臺預(yù)先裝載機(jī)制。預(yù)先裝載機(jī)制選擇、下載可能需要的文件并將其存儲到客戶端計(jì)算機(jī)的高速緩存中。利用這種后臺預(yù)先裝載,用戶甚至在低帶寬下也會體驗(yàn)到非常小的響應(yīng)時間。當(dāng)裝載一個網(wǎng)頁時,用戶通常需要思考一會兒,然后才使用他的輸入設(shè)備(鍵盤、鼠標(biāo)、PDA筆等)執(zhí)行一些動作。用戶的思考時間和對鍵盤、鼠標(biāo)或者任何輸入設(shè)備的使用被用來在后臺下載用戶可能使用的下一個文件。優(yōu)選地,使用隱藏框在后臺完成預(yù)先裝載,使得在需要之前用戶將不會看見該網(wǎng)頁。優(yōu)選地,從web服務(wù)器下載的網(wǎng)頁具有用于隱藏框的腳本,并且該腳本適于執(zhí)行網(wǎng)頁特定的預(yù)先裝載機(jī)制,并且客戶端計(jì)算機(jī)在后臺在瀏覽器的隱藏框內(nèi)執(zhí)行該網(wǎng)頁特定的預(yù)先裝載機(jī)制。
優(yōu)選地,下一個文件利用下面的算法進(jìn)行預(yù)先裝載建立用來指示可能需要的后續(xù)網(wǎng)頁的圖形,其中該圖形代表訪問這些頁面的概率。游歷過程優(yōu)選那些具有最高概率的分支對圖形進(jìn)行游歷。游歷過程選擇一些網(wǎng)頁。在隱藏框中,在后臺下載每一個選擇的網(wǎng)頁。在下載期間,相關(guān)聯(lián)的文件(例如,圖像,CSS=層疊樣式表單,javascripts)也通過使用網(wǎng)頁中的超鏈接引用自動地下載。所有文件放置在瀏覽器的高速緩存中,使得當(dāng)用戶傳送后續(xù)的頁面時,所有靜態(tài)的東西都會從高速緩存中下載,即使用戶第一次看見該頁面。只有動態(tài)數(shù)據(jù)將會在網(wǎng)絡(luò)上下載。
通過結(jié)合附圖閱讀下面的當(dāng)前優(yōu)選示例性實(shí)施例的詳細(xì)描述將會更好地理解本發(fā)明的這些和其它特征和優(yōu)點(diǎn),其中圖1是通過通信網(wǎng)絡(luò)互連的服務(wù)器和客戶端計(jì)算機(jī)的框圖,框圖說明了對網(wǎng)頁的第一次訪問。
圖2是根據(jù)圖1的服務(wù)器和客戶端計(jì)算機(jī)的框圖,其中框圖說明了對該網(wǎng)頁的第二次訪問。
圖3是舉例說明根據(jù)本發(fā)明的執(zhí)行方法的功能性視圖。
具體實(shí)施例方式
圖1表示了通信網(wǎng)絡(luò)1、兩個服務(wù)器2和3以及客戶端計(jì)算機(jī)4。
通信網(wǎng)絡(luò)1是使用IP協(xié)議(IP=因特網(wǎng)協(xié)議)作為公共第三通信層的數(shù)據(jù)網(wǎng)絡(luò)。通信網(wǎng)絡(luò)1可以由各種不同的物理網(wǎng)絡(luò),例如,ATM網(wǎng)絡(luò)、MPLS網(wǎng)絡(luò)或者以太網(wǎng)(ATM=異步傳輸模式,MPLS=多協(xié)議標(biāo)簽交換)組成。進(jìn)一步,客戶端計(jì)算機(jī)4可以通過無線接入網(wǎng)絡(luò),例如GSM網(wǎng)絡(luò)、UMTS網(wǎng)絡(luò)或者WLAN網(wǎng)絡(luò)(GSM=全球移動通信系統(tǒng),UMTS=通用移動通信系統(tǒng))與服務(wù)器2和服務(wù)器3連接。
優(yōu)選地,通信網(wǎng)絡(luò)1是因特網(wǎng)。
服務(wù)器3是在通信網(wǎng)絡(luò)1中提供網(wǎng)頁的web服務(wù)器。從功能的角度來看,服務(wù)器3具有用于存儲多個網(wǎng)頁,例如網(wǎng)頁32和網(wǎng)頁33的數(shù)據(jù)庫31,以及適于將這種網(wǎng)頁下載到請求的客戶端計(jì)算機(jī)的控制單元34。
優(yōu)選地,服務(wù)器3代表了具有各種本地分布的web服務(wù)器的服務(wù)器基礎(chǔ)設(shè)施,其中web服務(wù)器在各自的專用的區(qū)域提供存儲在數(shù)據(jù)庫31中的網(wǎng)頁的內(nèi)容(即根據(jù)獲取各自網(wǎng)頁的客戶端計(jì)算機(jī)的位置將各自網(wǎng)頁的URL(統(tǒng)一資源定位符)映射到不同的web服務(wù)器)。這種服務(wù)系統(tǒng)加速了服務(wù)器3上托管的網(wǎng)頁的下載。
服務(wù)器2是服務(wù)特定的基于web的應(yīng)用程序的網(wǎng)絡(luò)服務(wù)器,例如,因特網(wǎng)支付服務(wù)。從功能的角度來看,服務(wù)器2包括提供基于web的應(yīng)用程序之動態(tài)數(shù)據(jù)的程序容器21、數(shù)據(jù)庫26以及,可選地,向容器21的程序提供服務(wù)的另一些程序的集合25。將容器21的程序編碼成ASP、JSP、PHP、小服務(wù)程序、C/C++程序或者其它任何語言的程序(ASP=動態(tài)服務(wù)器頁面;JSP=Java服務(wù)器頁面;PHP=PHP超文本預(yù)處理器)。通過通信網(wǎng)絡(luò)1經(jīng)由分配的URL對這些程序進(jìn)行尋址并可進(jìn)行訪問。程序輸出包含基于web的應(yīng)用程序之動態(tài)數(shù)據(jù)的腳本作為標(biāo)準(zhǔn)輸出。容器21的程序訪問由數(shù)據(jù)庫26提供的數(shù)據(jù)源和程序25的服務(wù),以產(chǎn)生基于web的應(yīng)用程序的動態(tài)數(shù)據(jù)。進(jìn)一步,容器21的程序可以作為代理對象的集合,例如,java-beans,來與由程序25提供的服務(wù)邏輯進(jìn)行接口連接。
優(yōu)選地,容器21是小服務(wù)程序容器并且容器21的程序是java小服務(wù)程序。
進(jìn)一步,可以由相同的物理服務(wù)器或者服務(wù)基礎(chǔ)設(shè)施提供服務(wù)器2和服務(wù)器3的功能,即網(wǎng)頁和容器21的程序托管于同一個服務(wù)器。
客戶端計(jì)算機(jī)4是個人計(jì)算機(jī)、PDA(個人數(shù)字助理)或者電話,例如智能電話或者其它任何種類的增強(qiáng)蜂窩電話。
客戶端計(jì)算機(jī)4包括具有至少一個微處理器和數(shù)據(jù)存儲的電路,由至少一個微處理器執(zhí)行的軟件代碼,用于通過通信網(wǎng)絡(luò)1通信的通信設(shè)備以及多種輸入/輸出設(shè)備,例如液晶顯示器、小鍵盤、麥克風(fēng)、擴(kuò)音器或者鼠標(biāo)板??蛻舳擞?jì)算機(jī)4的功能是通過基于由客戶端計(jì)算機(jī)4的組件提供的硬件平臺執(zhí)行軟件代碼來實(shí)現(xiàn)的。從功能的角度來看,客戶端計(jì)算機(jī)4包括通信單元41、高速緩存43、瀏覽器42和輸出單元44。
通信單元41包括通過通信網(wǎng)絡(luò)1進(jìn)行通信所需要的客戶端計(jì)算機(jī)4的物理和邏輯組件。例如,通信單元41包含處理TCP/IP協(xié)議棧(TCP=傳輸控制協(xié)議,IP=因特網(wǎng)協(xié)議)的必要功能。瀏覽器4是標(biāo)準(zhǔn)的瀏覽器應(yīng)用程序,例如,Internet Explorer。輸出單元44代表了瀏覽器42使用的輸出設(shè)備,例如,液晶顯示器或者監(jiān)視器和擴(kuò)音器。
當(dāng)生成基于web的應(yīng)用程序時,用戶界面被編碼成兩個獨(dú)立的部分第一,靜態(tài)圖形用戶界面(GUI),其包括網(wǎng)頁的集合,其中網(wǎng)頁包括窗口小部件、文本、動態(tài)行為(例如表示“如果...那么將禁用該按鈕”的函數(shù))。例如,網(wǎng)頁32和網(wǎng)頁33指定了GUI的靜態(tài)部分。
第二,動態(tài)部分,其包括用來實(shí)例化GUI的動態(tài)數(shù)據(jù)。動態(tài)部分通過容器21的程序來編碼,例如,通過程序22、23和24。
將網(wǎng)頁32和網(wǎng)頁33編碼成可以被瀏覽器42高速緩存的標(biāo)準(zhǔn)的HTML頁面。這些HTML頁面包含嵌入,即將文件裝載進(jìn)網(wǎng)頁的函數(shù),用來包括網(wǎng)頁的動態(tài)部分。嵌入的URL不是一個文件而是在其標(biāo)準(zhǔn)輸出輸出腳本的程序22到24中的一個。優(yōu)選地,嵌入是標(biāo)準(zhǔn)的javascript嵌入,而URL不是javascript文件而是程序22到24中的一個。例如,網(wǎng)頁32具有下面的嵌入指令<script language=“javascript”src=“/servlets/myServlet”></script>
在此例中,程序“myServlet”會顯示下面的javascript指令<script>
var firstname=“John”var lastname=“Woo”var authoring=true;</script>
用戶第一次請求網(wǎng)頁32時,瀏覽器42通過通信網(wǎng)絡(luò)1發(fā)送相應(yīng)的請求消息。該請求消息路由到web服務(wù)器3。web服務(wù)器3通過通信網(wǎng)絡(luò)1將所請求的網(wǎng)頁32下載到瀏覽器42,其中網(wǎng)頁32例如是DHML頁面(DHTML=動態(tài)超文本標(biāo)記語言)。如先前示例,網(wǎng)頁32包含圖形用戶界面的靜態(tài)數(shù)據(jù)以及至少一個用于包括網(wǎng)頁的動態(tài)部分的嵌入。該至少一個嵌入指向位于網(wǎng)絡(luò)服務(wù)器2的程序并且適于輸出腳本。瀏覽器42將網(wǎng)頁32存儲在高速緩存32中。進(jìn)一步,其執(zhí)行網(wǎng)頁32的嵌入,聯(lián)系服務(wù)器2中的相應(yīng)的程序22到24,并且從這些包含了將要在網(wǎng)頁32中包括的動態(tài)數(shù)據(jù)的程序中獲取腳本。例如,瀏覽器42獲取javascript 61,其包含了程序“myServlet”的上述指定的輸出?,F(xiàn)在,網(wǎng)頁的靜態(tài)部分必須使用動態(tài)部分,并且瀏覽器必須將接收的動態(tài)數(shù)據(jù)包括進(jìn)網(wǎng)頁32。這是通過所謂的“自動數(shù)據(jù)填充”機(jī)制來完成的。這個機(jī)制自動地將包括在獲取的腳本中的動態(tài)數(shù)據(jù)填充到相應(yīng)的HMTL表單域中,例如,textInput、checkbox、droplist等。例如,腳本61中的值“firstname”,“l(fā)astname”和“authoring”填充在網(wǎng)頁32的相應(yīng)HTML表單域中。
優(yōu)選地,存在一個命名慣例,其中網(wǎng)頁32和網(wǎng)頁33的HTML表單域和那些由程序22、23和24輸出的javascript變量取相同的名字。泛型代碼(generic code)存儲在javascript庫中,其中javascript庫包括在網(wǎng)頁32和網(wǎng)頁33的所有文件中。該泛型代碼用來自動地將所獲取的腳本的javascript變量填充到網(wǎng)頁32和網(wǎng)頁33的合適的域中。在網(wǎng)頁32的下載期間,通過使用網(wǎng)頁32中的超鏈接引用,相關(guān)聯(lián)的文件(圖像、CSS、javascript等)也被自動下載(從服務(wù)器3)并且存儲在高速緩存43中。
網(wǎng)頁32的第二個請求中,所有靜態(tài)的東西已經(jīng)在本地可用并且從高速緩存43中下載。只有動態(tài)數(shù)據(jù)必須通過通信網(wǎng)絡(luò)1下載。這在下面通過圖2的輔助來舉例說明。
圖2示出了通信網(wǎng)絡(luò)1、服務(wù)器2和服務(wù)器3以及客戶端計(jì)算機(jī)4。網(wǎng)頁32和它們相關(guān)聯(lián)的文件存儲在客戶端計(jì)算機(jī)4的高速緩存43中。當(dāng)用戶或者客戶端計(jì)算機(jī)4的刷新函數(shù)或者用戶請求訪問網(wǎng)頁32時,網(wǎng)頁32和其相關(guān)聯(lián)的文件被自動地從高速緩存43中下載到瀏覽器42。只要瀏覽器對導(dǎo)向服務(wù)器2的程序的網(wǎng)頁32的嵌入進(jìn)行處理,瀏覽器就聯(lián)系該程序并且獲取腳本,例如腳本62,其包含有將要包括進(jìn)靜態(tài)GUI的更新的動態(tài)數(shù)據(jù)。
下面,通過圖3的輔助來舉例說明本發(fā)明進(jìn)一步的細(xì)節(jié)。
圖3示出了具有網(wǎng)頁32和網(wǎng)頁33的數(shù)據(jù)庫31、瀏覽器42、高速緩存43以及具有程序22、23和24的容器21。
用戶第一次請求網(wǎng)頁33時,服務(wù)器3將網(wǎng)頁33下載到瀏覽器42。網(wǎng)頁33是DHTML頁面,具有多個指定靜態(tài)數(shù)據(jù)的HTML標(biāo)簽和指向容器21中的程序的嵌入。例如,網(wǎng)頁33包含標(biāo)簽72和標(biāo)簽74以及嵌入71和嵌入73,其中標(biāo)簽72和標(biāo)簽74包含這種靜態(tài)數(shù)據(jù),而嵌入71和嵌入73指向容器21中的程序。
進(jìn)一步,網(wǎng)頁33包括具有程序代碼的腳本73,由瀏覽器42執(zhí)行該腳本時,嵌入71和嵌入73提供的動態(tài)數(shù)據(jù)自動地填充標(biāo)簽72和標(biāo)簽74的HTML域。
進(jìn)一步,網(wǎng)頁33包括用于網(wǎng)頁33中的隱藏框的腳本76。腳本76包含用于網(wǎng)頁特定的預(yù)先裝載機(jī)制的數(shù)據(jù)和代碼,其中網(wǎng)頁特定的預(yù)先裝載機(jī)制在由瀏覽器42執(zhí)行時會選擇、下載可能需要的文件并將其存儲到客戶端計(jì)算機(jī)4的高速緩存43中。
因此,網(wǎng)頁33包含指定圖形用戶界面的靜態(tài)數(shù)據(jù)即文本72和文本74的代碼;用于包括網(wǎng)頁的動態(tài)部分的嵌入71和嵌入73;以及代碼,即腳本75,用于通過動態(tài)數(shù)據(jù)將動態(tài)部分包括進(jìn)網(wǎng)頁的靜態(tài)部分,其中動態(tài)數(shù)據(jù)由程序22到程序24產(chǎn)生并且通過腳本從網(wǎng)絡(luò)服務(wù)器2傳送到客戶端計(jì)算機(jī)4。
當(dāng)?shù)谝淮蜗螺d網(wǎng)頁33到瀏覽器42時,瀏覽器42將網(wǎng)頁33和由網(wǎng)頁33中的超鏈接引用包括的相關(guān)聯(lián)文件存儲到高速緩存43中。進(jìn)一步,瀏覽器在后臺在隱藏框45之內(nèi)執(zhí)行腳本76中指定的預(yù)先裝載機(jī)制。預(yù)先裝載機(jī)制預(yù)先裝載以后可能需要的文件。將可能的下一個網(wǎng)頁放置在一個圖形中,其中訪問該頁面的概率與該圖形的每一個分支相關(guān)聯(lián)。游歷過程優(yōu)選那些具有最高概率的分支對圖形進(jìn)行游歷。例如,在登錄頁面之后的下一個頁面90%是主頁并且10%是錯誤頁面。進(jìn)一步指定用戶首選項(xiàng)的用戶特定的配置文件可以用來建立或者修改圖形。進(jìn)一步,游歷過程選擇地考慮用戶輸入或者其它種類的外部數(shù)據(jù)并且其會影響由后臺預(yù)先裝載機(jī)制完成的選擇。
預(yù)先裝載在后臺在隱藏框45之內(nèi)完成。在后臺下載由游歷過程選擇的每一個網(wǎng)頁,并且因此自動地將其存儲在高速緩存43中。例如,下載網(wǎng)頁81、82和83并且將其存儲到高速緩存43中。在下載期間,還自動地下載通過超鏈接引用包括在所選擇的網(wǎng)頁中的相關(guān)聯(lián)文件(圖像、CSS和javascript),并將其存儲在高速緩存43中。當(dāng)可能需要的文本文件的所有或者大多數(shù)相關(guān)部分已經(jīng)存儲到高速緩存中時,很有可能當(dāng)用戶點(diǎn)擊進(jìn)入下一個頁面時,所有靜態(tài)的東西會從高速緩存中下載,即使用戶是第一次見該頁面。
在可見框46中,當(dāng)顯示網(wǎng)頁33時瀏覽器42執(zhí)行網(wǎng)頁33的嵌入71和嵌入73,聯(lián)系容器21中的相關(guān)聯(lián)程序并且獲取腳本91和腳本92,其中腳本91和腳本92包括必須要被包括進(jìn)GUI靜態(tài)部分中的GUI的動態(tài)數(shù)據(jù)。網(wǎng)頁33的腳本75提供自動將包括在腳本91和腳本92中的動態(tài)數(shù)據(jù)填充到標(biāo)簽72和標(biāo)簽74的合適HTML表單域中的泛型代碼。
優(yōu)選地,腳本75包含具有額外函數(shù)的代碼,其讀取當(dāng)前查詢串,將文件路徑和獲取的查詢串鏈接起來,并且動態(tài)地用鏈接的結(jié)果構(gòu)建用于包括網(wǎng)頁動態(tài)部分的嵌入。優(yōu)選地,該函數(shù)會進(jìn)一步自動地產(chǎn)生隨機(jī)化數(shù)字,并且將其添加到查詢串,使得瀏覽器42將不會高速緩存動態(tài)數(shù)據(jù)。
例如,如果人們想要描述用于列出用戶的GUI,可訪問第五個用戶并且getUser會是為給定用戶提供數(shù)據(jù)的程序,insertJSFile()函數(shù)將為“/servlets/getUser”構(gòu)建下面的HTML指令<script language=“javascript”src=“/servlets/getUser?id=5&rand=345101615109701”></script>。
由函數(shù)insertJSFile()創(chuàng)建的該HTML指令在由瀏覽器42執(zhí)行時告訴getUser程序需要第五個用戶的數(shù)據(jù),并且包含用來防止高速緩存動態(tài)數(shù)據(jù)的隨機(jī)數(shù)字。
權(quán)利要求
1.一種在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的方法,該方法包括以下步驟從web服務(wù)器發(fā)送網(wǎng)頁特別是HTML頁面到該客戶端計(jì)算機(jī),該網(wǎng)頁包含圖形用戶界面的靜態(tài)數(shù)據(jù)和至少一個用于包括該網(wǎng)頁動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器的程序并且適于輸出腳本;將該網(wǎng)頁存儲在該客戶端計(jì)算機(jī)的高速緩存中;將該腳本從該網(wǎng)絡(luò)服務(wù)器傳送到該客戶端計(jì)算機(jī),該腳本包含由該程序產(chǎn)生的動態(tài)數(shù)據(jù);通過所述動態(tài)數(shù)據(jù)將該動態(tài)部分包括到該網(wǎng)頁的靜態(tài)部分中;以及通過在該客戶端計(jì)算機(jī)上執(zhí)行的瀏覽器顯示該網(wǎng)頁。
2.根據(jù)權(quán)利要求1所述的方法,其中該客戶端計(jì)算機(jī)執(zhí)行以后可能需要的文件的后臺預(yù)先裝載機(jī)制,其中該預(yù)先裝載機(jī)制選擇、下載可能需要的文件并將其存儲到客戶端計(jì)算機(jī)的高速緩存中。
3.根據(jù)權(quán)利要求2所述的方法,其中該方法還包括以下步驟建立指示可能需要的后續(xù)網(wǎng)頁的圖形,該圖形代表訪問這些網(wǎng)頁的概率;優(yōu)選具有最高概率的分支對該圖形進(jìn)行游歷;并且預(yù)先裝載與在該游歷過程中所選擇的網(wǎng)頁的相關(guān)聯(lián)文件。
4.根據(jù)權(quán)利要求2或者3所述的方法,其中該方法還包括以下步驟在該網(wǎng)頁中包括用于隱藏框的腳本,該腳本適于執(zhí)行網(wǎng)頁特定的預(yù)先裝載機(jī)制;用該腳本下載和高速緩存該網(wǎng)頁;以及在該瀏覽器的該隱藏框內(nèi)在后臺執(zhí)行該預(yù)先裝載機(jī)制。
5.根據(jù)權(quán)利要求1所述的方法,其中該方法還包括以下步驟在該網(wǎng)頁中包括腳本,該腳本適于執(zhí)行自動填充過程;并且通過該自動填充過程,使用由該嵌入提供的對應(yīng)的動態(tài)數(shù)據(jù)填充網(wǎng)頁中的域。
6.根據(jù)權(quán)利要求1所述的方法,其中該方法還包括以下步驟在該網(wǎng)絡(luò)服務(wù)器上包括一個或者多個代表該腳本中動態(tài)數(shù)據(jù)的javascript變量;將該網(wǎng)頁的HTML表單域命名為和javascript變量相同的名字;并且自動地在該客戶端計(jì)算機(jī)上由包含在所獲取的腳本中的對應(yīng)javascript變量來填充HTML表單域。
7.根據(jù)權(quán)利要求1所述的方法,其中該客戶端計(jì)算機(jī)執(zhí)行函數(shù),該函數(shù)讀取當(dāng)前的查詢串,將文件路徑與該獲取的查詢串進(jìn)行鏈接,以及動態(tài)地用該鏈接的結(jié)果構(gòu)建用于包括該網(wǎng)頁動態(tài)部分的嵌入。
8.根據(jù)權(quán)利要求1所述的方法,其中該客戶端計(jì)算機(jī)執(zhí)行函數(shù),該函數(shù)自動產(chǎn)生隨機(jī)數(shù)字并且將該隨機(jī)數(shù)字添加到該嵌入的查詢串中。
9.用于在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行軟件代碼,該代碼包括將從web服務(wù)器發(fā)送到客戶端計(jì)算機(jī)的代碼,該代碼指定一個網(wǎng)頁,特別是HTML頁面,其中該網(wǎng)頁包含圖形用戶界面的靜態(tài)數(shù)據(jù)和至少一個用于包括該頁面的動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序;以及用于通過由該程序產(chǎn)生的并且通過該腳本從該網(wǎng)絡(luò)服務(wù)器傳送到該客戶端計(jì)算機(jī)的動態(tài)數(shù)據(jù)將該動態(tài)部分包括到該網(wǎng)頁的靜態(tài)部分中的代碼。
10.一種客戶端計(jì)算機(jī),包括用于從web服務(wù)器獲取網(wǎng)頁的通信單元;用于存放網(wǎng)頁特別是HTML頁面的存儲器,該網(wǎng)頁包括圖形用戶界面的靜態(tài)數(shù)據(jù)以及至少一個用于包括該網(wǎng)頁動態(tài)部分的嵌入,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序,該腳本包含由該程序產(chǎn)生的動態(tài)數(shù)據(jù);以及瀏覽器,其適于將從該web服務(wù)器獲取的該網(wǎng)頁存儲在高速緩存中,通過由該腳本傳送的所述動態(tài)數(shù)據(jù)將該動態(tài)部分包括到該網(wǎng)頁的靜態(tài)部分中,并且顯示該網(wǎng)頁。
全文摘要
本發(fā)明涉及用于在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的方法,以及用于在客戶端計(jì)算機(jī)上顯示數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行軟件代碼和客戶端計(jì)算機(jī)??蛻舳擞?jì)算機(jī)獲取包括圖形用戶界面的靜態(tài)數(shù)據(jù)和至少一個用于包括網(wǎng)頁動態(tài)數(shù)據(jù)的嵌入的網(wǎng)頁,其中所述嵌入指向位于網(wǎng)絡(luò)服務(wù)器上并且適于輸出腳本的程序??蛻舳擞?jì)算機(jī)將網(wǎng)頁存儲在高速緩存中。將包括由程序所產(chǎn)生的動態(tài)數(shù)據(jù)的腳本從網(wǎng)絡(luò)服務(wù)器傳送到客戶端計(jì)算機(jī)??蛻舳擞?jì)算機(jī)的瀏覽器通過包括在所獲取的腳本中的動態(tài)數(shù)據(jù)將動態(tài)部分包括到網(wǎng)頁的靜態(tài)部分中。
文檔編號G06F17/30GK1783079SQ20051011665
公開日2006年6月7日 申請日期2005年10月26日 優(yōu)先權(quán)日2004年11月30日
發(fā)明者塞爾日·巴庫, 馬蒂厄·科德巴爾德 申請人:阿爾卡特公司