專利名稱::用于使通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸量最小化的系統(tǒng)和方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò),并且特別地涉及使需要傳輸通過網(wǎng)絡(luò)的數(shù)據(jù)量最小化。
背景技術(shù):
:現(xiàn)今,諸如客戶端計(jì)算機(jī)、服務(wù)器和因特網(wǎng)之類的計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)為大家所公知。公知的web瀏覽器程序(諸如由AOl/M、Compuserve和RoadRunnerTM提供的web瀏覽器程序)被安裝在客戶端計(jì)算機(jī)上以經(jīng)由因特網(wǎng)與web服務(wù)器進(jìn)行交互。例如,用戶可以通過web瀏覽器經(jīng)由因特網(wǎng)從web服務(wù)器請求網(wǎng)頁。網(wǎng)頁可以是對于位于web服務(wù)器處的web應(yīng)用的用戶界面,并/或?qū)?shù)據(jù)提供給客戶端計(jì)算機(jī)的用戶。通常,以HTML的形式將網(wǎng)頁下載到客戶端計(jì)算機(jī)。還可以用例如XML或JSON形式將web文件下載到客戶端。在web服務(wù)器與客戶端計(jì)算機(jī)之間存在三類通信媒體。通常,在web服務(wù)器與因特網(wǎng)服務(wù)提供商("ISP")或者用于客戶端計(jì)算機(jī)的其它路由器、交換機(jī)和/或網(wǎng)關(guān)計(jì)算機(jī)之間存在高速連接。然而,當(dāng)從web服務(wù)器所請求的網(wǎng)頁的量變得過大時(shí),甚至連高速連接和相關(guān)聯(lián)的網(wǎng)絡(luò)設(shè)備都被淹沒(overwhelm),也即"帶寬,,不夠。此外,某些客戶端計(jì)算機(jī)具有到它們的ISP或網(wǎng)關(guān)計(jì)算機(jī)的相對低的連接(諸如"撥號"電話線),而且下載網(wǎng)頁或包含許多數(shù)據(jù)的其它數(shù)據(jù)文件是費(fèi)時(shí)的。本發(fā)明的一個(gè)目標(biāo)是使需要從web服務(wù)器中下載到客戶端計(jì)算機(jī)的數(shù)據(jù)量最小化。
發(fā)明內(nèi)容本發(fā)明屬于一種用于減少與針對網(wǎng)頁的請求相關(guān)聯(lián)的數(shù)據(jù)傳輸?shù)挠?jì)算機(jī)系統(tǒng)、方法和程序。響應(yīng)于來自客戶端計(jì)算機(jī)的對第一網(wǎng)頁的第一請求,服務(wù)器將所述第一網(wǎng)頁下載到客戶端計(jì)算機(jī),并且客戶端計(jì)算機(jī)存儲(chǔ)所述第一網(wǎng)頁。響應(yīng)于來自所述客戶端計(jì)算機(jī)的對第二網(wǎng)頁的第二、后續(xù)的請求,服務(wù)器將第二網(wǎng)頁與第一網(wǎng)頁之間的差異下載到客戶端計(jì)算機(jī)。客戶端計(jì)算機(jī)基于第一網(wǎng)頁以及第二網(wǎng)頁與第一網(wǎng)頁之間的差異來構(gòu)建所述第二網(wǎng)頁。根據(jù)本發(fā)明的特征,所述差異包括第二網(wǎng)頁的HTML容器,其中第二網(wǎng)頁的容器中的至少一個(gè)字符不同于第一網(wǎng)頁的對應(yīng)容器中的至少一個(gè)對應(yīng)字符。所述客戶端計(jì)算機(jī)通過用所述第二網(wǎng)頁的HTML容器替代所述第一網(wǎng)頁的對應(yīng)的HTML容器來構(gòu)建所述第二網(wǎng)頁。根據(jù)本發(fā)明的另一特征,所述服務(wù)器存儲(chǔ)第一網(wǎng)頁并且逐個(gè)容器地比較第二網(wǎng)頁的HTML和第一網(wǎng)頁的HTML,以標(biāo)識(shí)第二網(wǎng)頁中的哪些HTML容器不同于第一網(wǎng)頁中的對應(yīng)的HTML容器,以確定所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的差異。圖1是具有根據(jù)本發(fā)明的數(shù)據(jù)管理服務(wù)器和客戶端計(jì)算機(jī)的分布式計(jì)算機(jī)系統(tǒng)的框圖2是位于圖1中的數(shù)據(jù)管理服務(wù)器處的網(wǎng)頁差異計(jì)算程序和前端硬件和/或軟件功能的流程圖3是位于圖1中的客戶端計(jì)算機(jī)處的網(wǎng)頁重建程序和其它瀏覽器功能的流程圖4是更詳細(xì)地圖示了圖2中的網(wǎng)頁重建程序的流程圖;圖5是更詳細(xì)地圖示了圖2中的網(wǎng)頁重建程序的流程圖;圖6是更詳細(xì)地圖示了圖2中的網(wǎng)頁差異計(jì)算程序的流程圖;圖7是圖示了圖1中的網(wǎng)頁轉(zhuǎn)換例程的流程圖;圖8是圖示了圖1中的比較程序例程的流程圖;圖9是圖示了圖3中的網(wǎng)頁重建程序的流程圖。具體實(shí)施例方式現(xiàn)在,將參考附圖來詳細(xì)地描述本發(fā)明。圖1圖示了本發(fā)明被引入其中的、被指定為IO的分布式計(jì)算機(jī)系統(tǒng)。系統(tǒng)IO包括帶有位于公共總線25上的7>知的CPU21、操作系統(tǒng)22、RAM23和ROM24、以及存儲(chǔ)裝置26的數(shù)據(jù)管理服務(wù)器20。在所圖示的實(shí)施例中,數(shù)據(jù)管理服務(wù)器20是客戶端計(jì)算機(jī)40和50與web服務(wù)器30之間的中介,所述web服務(wù)器30提供所^戶端計(jì)算機(jī)的用戶所請求的實(shí)際web服務(wù)和網(wǎng)頁。Web服務(wù)器30中的每個(gè)都包括各種公知的諸如電子商務(wù)應(yīng)用之類的web應(yīng)用37中的任何一種。所述web服務(wù)器30中的每個(gè)還可包括諸如IBMDB/2數(shù)據(jù)庫管理器或Oracle數(shù)據(jù)庫管理器之類的公知的數(shù)據(jù)庫應(yīng)用38以供應(yīng)(furnish)網(wǎng)頁、web文件以及由電子商務(wù)應(yīng)用所需要的其它數(shù)據(jù),以給客戶端計(jì)算機(jī)40和50的用戶提供服務(wù)。在本發(fā)明的另一實(shí)施例中,web應(yīng)用37和數(shù)據(jù)庫應(yīng)用38可以位于服務(wù)器20中以將web服務(wù)、網(wǎng)頁和web文件提供給所述客戶端計(jì)算機(jī)40和50。數(shù)據(jù)管理服務(wù)器20還包括根據(jù)本發(fā)明的網(wǎng)頁差異計(jì)算(differencing)程序29、網(wǎng)頁轉(zhuǎn)換程序例程39、以及比較程序例程61。程序29跟蹤哪些網(wǎng)頁(其源自web服務(wù)器30)先前被經(jīng)由數(shù)據(jù)管理服務(wù)器20和網(wǎng)絡(luò)31(諸如因特網(wǎng))供應(yīng)^個(gè)客戶端計(jì)算機(jī)。程序29將來自客戶端計(jì)算機(jī)的針對網(wǎng)頁的每個(gè)當(dāng)前請求與先前被供應(yīng)給相同客戶端計(jì)算機(jī)的網(wǎng)頁(或可選地是多個(gè)網(wǎng)頁)進(jìn)^f亍比較。接著,程序29將當(dāng)前所請求的網(wǎng)頁與先前被供應(yīng)的(并且通常是當(dāng)前被顯示的)網(wǎng)頁之間的差異供應(yīng)給所ii^戶端計(jì)算機(jī)??蛻舳擞?jì)算^^已經(jīng)高速緩存了先前所下載的網(wǎng)頁(或可選地,多個(gè)網(wǎng)頁),從而所^J1戶端計(jì)算機(jī)可以通過所述差異和先前凈皮供應(yīng)的網(wǎng)頁來構(gòu)建當(dāng)前被請求的網(wǎng)頁。經(jīng)常地,自服務(wù)器20下載到所述客戶端計(jì)算機(jī)的差異文件整體上比當(dāng)前所請求的網(wǎng)頁要小得多。因此,要下載的信息較少,并且由此網(wǎng)絡(luò)上的負(fù)擔(dān)較小以及所使用的帶寬較小。客戶端計(jì)算才幾40包括網(wǎng)頁重建程序49,而客戶端計(jì)算機(jī)50也包括相同的網(wǎng)頁重建程序59。每個(gè)網(wǎng)頁重建程序根據(jù)從web服務(wù)器20接收到的差異來修改先前所下載且被高速緩存的網(wǎng)頁,以生成當(dāng)前所請求的網(wǎng)頁。下面參考附圖2到9的流程圖更詳細(xì)地描述程序29、49和59的功能和操作。客戶端計(jì)算機(jī)40還包括位于公共總線45上的公知的CPU41、操作系統(tǒng)42、RAM43和ROM44、以及存儲(chǔ)裝置46和web瀏覽器47??蛻舳擞?jì)算機(jī)50還包括位于公共總線55上的公知的CPU51、操作系統(tǒng)52、RAM53和ROM55、以及存儲(chǔ)裝置56和web瀏覽器57。圖2更加詳細(xì)地圖示了數(shù)據(jù)管理服務(wù)器20處的網(wǎng)頁差異計(jì)算程序29和前端硬件和/或軟件功能32在處理來自客戶端計(jì)算機(jī)的初始請求時(shí)的操作和功能,所述請求經(jīng)由服務(wù)器20從web服務(wù)器30中引出響應(yīng)的網(wǎng)頁。(繼續(xù))在步驟200中,前端功能32從客戶端計(jì)算機(jī)之一(諸如客戶端計(jì)算機(jī)40)接收針對web應(yīng)用27的初始請求。所述請求發(fā)自于客戶端計(jì)算機(jī)40處的用戶或者客戶端計(jì)算機(jī)40內(nèi)的應(yīng)用,并且作為響應(yīng)將引出網(wǎng)頁。這是在當(dāng)前會(huì)話內(nèi)M戶端計(jì)算機(jī)40到應(yīng)用27的所請求的第一網(wǎng)頁。如下面更加詳細(xì)地描述,雖然客戶端計(jì)算機(jī)40處的用戶或客戶端計(jì)算機(jī)40內(nèi)的應(yīng)用直接向服務(wù)器30做出請求,但是所i^Jl戶端計(jì)算機(jī)內(nèi)的網(wǎng)頁重建程序49將所述請求重定向給服務(wù)器20。響應(yīng)于來自客戶端計(jì)算機(jī)40的請求,前端功能32將所述請求轉(zhuǎn)發(fā)給服務(wù)器20內(nèi)的網(wǎng)頁差異計(jì)算程序29(步驟202)。作為響應(yīng),程序29生成針對所述請求的唯一會(huì)話ID,并且將帶有所述唯一會(huì)話ID的客戶端請求(包括HTTP頭部)轉(zhuǎn)發(fā)給web服務(wù)器30內(nèi)的web應(yīng)用27(步驟204)。程序29還在文件33中將所述唯一會(huì)話ID和時(shí)間戳記錄在一起(因此非激活的會(huì)話可被清除)以將所述請求與進(jìn)行請求的客戶端計(jì)算機(jī)關(guān)聯(lián)起來。Web應(yīng)用27處理所述請求,讀取網(wǎng)頁,并將所述網(wǎng)頁返回給服務(wù)器20中的程序29(步驟206)。在這個(gè)例子中,所述網(wǎng)頁是HTML形式的并且包括HTTP頭部。接著,程序29調(diào)用以空串進(jìn)行傳遞的服務(wù)器20中的網(wǎng)頁轉(zhuǎn)換程序例程39(步驟208)所述空串指示轉(zhuǎn)換例程處理整個(gè)HTML。作為響應(yīng),所迷轉(zhuǎn)換例程39標(biāo)識(shí)所請求的網(wǎng)頁的不同容器標(biāo)簽,并基于編號方案*個(gè)容器標(biāo)簽編制索引。在HTML中,"容器標(biāo)簽"是圍繞數(shù)據(jù)的一對符號,其中所述符號指示所述數(shù)據(jù)的性質(zhì)以^或者它將被如何顯示。以下是唯一地標(biāo)識(shí)HTML中的每個(gè)容器的編制索引方案的例子。"父親"或主容器標(biāo)簽被順序地編號。然而,如果父親容器標(biāo)簽包含一個(gè)或多個(gè)其它"兒子,,容器標(biāo)簽,則通過父親容器標(biāo)簽的后綴來對所述兒子容器標(biāo)簽進(jìn)行編號。例如,如果父親容器標(biāo)簽具有索引號"5",則它的兩個(gè)兒子可以具有索引"5-1"和"5-2"。轉(zhuǎn)換例程39接著將每個(gè)HTML的被編制了索引的容器作為"已轉(zhuǎn)換的,,HTML返回給程序29。作為響應(yīng),程序29通過使用會(huì)話ID作為訪問所述已轉(zhuǎn)換的HTML的主碼,將已轉(zhuǎn)換的HTML(也即,具有HTML的容器各數(shù)據(jù)部分的被編制了索引的容器標(biāo)簽)存儲(chǔ)在數(shù)據(jù)庫34中(步驟210)。接著,程序29將對于所述請求客戶端計(jì)算機(jī)處的網(wǎng)頁重建程序49的"上載(onload)"調(diào)用和所述請求的會(huì)話ID—起添加到已轉(zhuǎn)換的HTML。因?yàn)檫@是在本次會(huì)話期間所述客戶端計(jì)算機(jī)向服務(wù)器30請求的初始網(wǎng)頁,所以服務(wù)器20高速緩存所述已轉(zhuǎn)換的HTML而不是差異文件,并還將其返回給所iij:戶端計(jì)算機(jī)(步驟214)。(如下面更加詳細(xì)地描述,對于在相同的會(huì)話期間來自客戶端的后續(xù)請求,服務(wù)器20將返回當(dāng)前所請求的HTML與先前所下載的HTML之間的差異以及所述上載調(diào)用,并且所述調(diào)用將調(diào)用客戶端計(jì)算機(jī)處的網(wǎng)頁重建程序49以通過將所述差異應(yīng)用到先前所下載的HTML來生成當(dāng)前所請求的網(wǎng)頁(步驟212)。)圖3更加詳細(xì)地圖示了在接收到針對客戶端計(jì)算機(jī)所請求的初始網(wǎng)頁的已轉(zhuǎn)換的HTML時(shí),客戶端計(jì)算機(jī)40處的網(wǎng)頁重建程序49和其它瀏覽器功能48的操作和功能。在步驟300中,客戶端計(jì)算機(jī)40從服務(wù)器計(jì)算機(jī)20接收已轉(zhuǎn)換的HTML和原始HTTP頭部、上載調(diào)用以及會(huì)話ID。所述上載調(diào)用對網(wǎng)頁重建程序49進(jìn)行調(diào)用(步驟302)。作為響應(yīng),程序49加載已轉(zhuǎn)換的HTML(作為直接對象模塊或"DOM")并在所述已轉(zhuǎn)換的HTML中尋找并獲取第一HTML標(biāo)簽(步驟304)。接著,程序49確定所述標(biāo)簽是否是"<a>",也即指示出至另一網(wǎng)頁的超鏈接(判決306)。如果所述標(biāo)簽是"<a>"(判決306,"是"分支),則程序49將通過"上擊(onclick)"調(diào)用來修改所述超鏈接,從而如果用戶在所述超鏈接上"點(diǎn)擊"則基于祐修改的HTML的web瀏覽器47將把針對所述網(wǎng)頁的請求轉(zhuǎn)發(fā)給網(wǎng)頁重建程序49(步驟308)?;谒錾蠐粽{(diào)用,網(wǎng)頁重建程序49將發(fā)送所述請求到服務(wù)器20而不是發(fā)送所述請求到在原始超鏈接容器中所指示的URL。服務(wù)器20將充當(dāng)客戶端計(jì)算機(jī)與由原始超鏈接中的URL所指示的服務(wù)器之間的中介,并且將(從由所述原始超鏈接的URL所指示的服務(wù)器中所接收到的)所述被超鏈接的網(wǎng)頁與先前所下載的網(wǎng)頁之間的差異發(fā)送給所ii^戶端計(jì)算機(jī)。在步驟308之后,程序49確定在所述已轉(zhuǎn)換的HTML中是否有更多的標(biāo)簽(判決310)。如果有更多的標(biāo)簽(判決310,"是"分支),則程序49獲取下一個(gè)標(biāo)簽(步驟312),并且確定所述下一個(gè)標(biāo)簽是否是超鏈接,也即"<a>"標(biāo)簽(判決306)。如果下一個(gè)標(biāo)簽是超鏈接(判決306,"是,,分支),則如前面一樣在步驟208中處理這種情況。如果下一個(gè)標(biāo)簽不是超鏈接(判決306,"否"分支)或如果所述第一標(biāo)簽不是超鏈接標(biāo)簽,則程序49確定所述標(biāo)簽是否是供用戶將數(shù)據(jù)輸入到表格中的"<form>"標(biāo)簽(判決320)。如果所述標(biāo)簽是"<form>"標(biāo)簽(判決320,"是,,分支),則程序49通過"上提交(onsubmit)"調(diào)用來修改所述表格標(biāo)簽,從而如果用戶將數(shù)據(jù)輸入到字段中并接著在客戶端web瀏覽器顯示處的提交按鈕上"點(diǎn)擊",則基于HTML的所述客戶端web瀏覽器將把提交請求轉(zhuǎn)發(fā)給程序49從而表格數(shù)據(jù)可以被收集,并且發(fā)送所述請求給服務(wù)器20而不是給在原始表格中所指示的URL(步驟322)。如果所述標(biāo)簽不是超鏈接標(biāo)簽或表格標(biāo)簽,則程序49不修改所述HTML。接著,程序49檢查在,皮修改的HTML中是否存在更多的標(biāo)簽(判決310),并且用上面所述的方式來處理任何附加的標(biāo)簽,直到所有標(biāo)簽都已經(jīng)^Jt理為止(步驟330)。圖4更加詳細(xì)地圖示了當(dāng)客戶端計(jì)算機(jī)40處的用戶在web瀏覽器47所顯示的超鏈接(由如上面所述的<&>標(biāo)簽來表示)上點(diǎn)擊時(shí)程序49的操作和功能。響應(yīng)于用戶在所述超鏈接(其在步驟308中通過上擊調(diào)用進(jìn)行了修改)上點(diǎn)擊,基于HTML的web瀏覽器告知程序49關(guān)于所請求的鏈接(步驟400)。作為響應(yīng),程序49將M鏈接的請求轉(zhuǎn)換成一表格,其首先將所述請求定向到web服務(wù)器20,而且還包括將經(jīng)由數(shù)據(jù)管理服務(wù)器20把所述被請求的網(wǎng)頁提供給客戶端計(jì)算機(jī)的web服務(wù)器(諸如web服務(wù)器30)的URL(步驟402和404)。接著,程序49將針對所述請求的響應(yīng)標(biāo)識(shí)設(shè)置到客戶端計(jì)算機(jī)40,從而當(dāng)服務(wù)器20異步地從web服務(wù)器30(或者提供所述網(wǎng)頁的其它web服務(wù)器)接收所述響應(yīng)時(shí),web服務(wù)器20將知道將所述響應(yīng)轉(zhuǎn)發(fā)給客戶端計(jì)算機(jī)40(步驟406)。接著,程序49在發(fā)送針對所述超鏈接的當(dāng)前請求之前等待對先前的請求的響應(yīng)(判決408和步驟410)。在接收到對先前的請求的響應(yīng)之后(判決408,"否"分支),程序49將針對所迷超鏈接的下一個(gè)請求發(fā)送給將提供浮皮超鏈接的網(wǎng)頁的web服務(wù)器(步驟420)。同樣,程序49向客戶端計(jì)算機(jī)40告知所述請求是懸而未決的,并且客戶端計(jì)算機(jī)40將在客戶端計(jì)算機(jī)40的顯示器上向用戶顯示忙碌指示符(步驟422)。圖5更加詳細(xì)地圖示了當(dāng)用戶在將數(shù)據(jù)輸入到表格字段之后在提交按鈕(由如上面所述的〈forn^標(biāo)簽表示)上點(diǎn)擊時(shí)程序49的操作和功能。響應(yīng)于用戶在提交按鈕上點(diǎn)擊或另外提交已完成的表格(其在步驟322中通過上提交調(diào)用進(jìn)行修改),基于HTML的web瀏覽器47告知程序49關(guān)于數(shù)據(jù)已經(jīng)被輸入且被提交的表格,并且程序49創(chuàng)建針對服務(wù)器20的提交請求(步驟500)。接著,程序49修改所述提交請求從而它將首先前往服務(wù)器20而不是將處理所述表格的web服務(wù)器(諸如web服務(wù)器30)(步驟502)。接著,程序49從HTML確定所M格的傳輸模式是否是"張貼(post)"模式(并且如果不是,則確定它是"獲取(get)"模式)。所述模式由定義表格的原始HTML的創(chuàng)建者所設(shè)置。如果它是張貼模式(判決504,"是"分支),則程序49將被輸入進(jìn)所述表格的字段中的數(shù)據(jù)的值轉(zhuǎn)換成張貼模式(步驟506)。否則(判決504,"否"分支),程序49將被輸入進(jìn)所述表格的字段中的數(shù)據(jù)的值轉(zhuǎn)換成獲取模式(步驟508)。在步驟506或者步驟508之后,程序49將提交請求的表格數(shù)據(jù)設(shè)置到服務(wù)器20的URL而不是將處理所述表格的web服務(wù)器的URL,并且還附加所述會(huì)話ID(步驟510)。即使所迷提交請求首先前往中介數(shù)據(jù)管理服務(wù)器20,所述提交請求仍然包括將處理所i^格的web服務(wù)器(諸如web服務(wù)器30)的URL。接著,當(dāng)響應(yīng)在客戶端計(jì)算機(jī)40處被接收到并被處理時(shí),在客戶端計(jì)算才幾40中程序49將針對諸如"linkResponse"之類的特定過程的"準(zhǔn)備(onready)"調(diào)用附加到所述提交請求(步驟512)。如下面更詳細(xì)地描述,客戶端計(jì)算機(jī)40處的所述linkResponse過程將處理從web服務(wù)器20返回的JSON數(shù)據(jù)并且使用所述數(shù)據(jù)來更新所顯示的網(wǎng)頁。接著,程序49在發(fā)送下一個(gè)/提交請求給web服務(wù)器20之前等待對先前的請求的響應(yīng)(判決528和步驟530)。在接收到對先前的請求的響應(yīng)之后(判決528,"否"分支),程序49發(fā)送下一個(gè)/提交請求給服務(wù)器20(步驟540)。同樣,程序49向web瀏覽器47告知下一個(gè)/表格請求是懸而未決的并且web瀏覽器將向客戶端計(jì)算機(jī)40處的用戶顯示忙碌指示符(步驟542)。圖6更加詳細(xì)地圖示了當(dāng)從客戶端計(jì)算機(jī)40接收到超鏈接請求或表格提交請求時(shí)程序29的操作和功能。在步驟600中,差異計(jì)算程序29從所述超鏈接請求或表格提交請求中讀取會(huì)話ID。接著,程序29創(chuàng)建一請求來將客戶端計(jì)算機(jī)的超鏈接請求或表格提交請求發(fā)送給將實(shí)際處理所述請求(也即供應(yīng)#^鏈接的網(wǎng)頁或處理所述提交表格)的web服務(wù)器(諸如web服務(wù)器30)(步驟602)。接著,程序29將它剛剛創(chuàng)建的請求發(fā)送給web服務(wù)器30(步驟604)。接著,web服務(wù)器30處理所述請求并提供響4形下是合適的響應(yīng),('例如z在表格搜索請求的情;下是搜索結(jié)果:^者在表格提交請求的情形下是確認(rèn))。在接收到來自web服務(wù)器30的響應(yīng)之后,程序29調(diào)用以空串進(jìn)行傳遞的轉(zhuǎn)換例程39,所述空串的傳遞用于指示所述轉(zhuǎn)換例程應(yīng)當(dāng)從最開始處開始(步驟608).如上所述,轉(zhuǎn)換例程39響應(yīng)于已轉(zhuǎn)換的HTML表格轉(zhuǎn)換所述網(wǎng)頁(從web服務(wù)器30處收到的),也即標(biāo)識(shí)所述容器標(biāo)簽和它們的數(shù)據(jù),并將已轉(zhuǎn)換的HTML轉(zhuǎn)發(fā)給程序29。作為響應(yīng),程序29加載與當(dāng)前已轉(zhuǎn)換的HTML具有相同會(huì)話ID的先前所接收到的網(wǎng)頁的先前被高速緩存的已轉(zhuǎn)換的HTML(步驟612)。在步驟612中,程序29還調(diào)用比較例程61來逐個(gè)容器地比較當(dāng)前響應(yīng)中的已轉(zhuǎn)換的HTML和先前響應(yīng)中的已轉(zhuǎn)換的HTML并確定差異。所述比較例程61將差異返回給程序29。作為響應(yīng),程序29在諸如JavaScriptObjectNotation數(shù)據(jù)結(jié)構(gòu)文件之類的數(shù)據(jù)結(jié)構(gòu)文件中存儲(chǔ)所述差異(步驟614)。接著,程序29創(chuàng)建對客戶端計(jì)算機(jī)40的響應(yīng),其將指示當(dāng)前網(wǎng)頁(以已轉(zhuǎn)換的HTML表格的形式)與被供應(yīng)給客戶端的先前網(wǎng)頁(以已轉(zhuǎn)換的HTML表格的形式)的差異(步驟620)。如下面參考圖9更加詳細(xì)地解釋,在服務(wù)器20處的比較例程61將標(biāo)識(shí)與先前所下載或構(gòu)建的HTML中的對應(yīng)容器不相同的新HTML內(nèi)的任何容器,并且針對已經(jīng)改變的容器從新的HTML中下載數(shù)據(jù)。接著,所^J1戶端計(jì)算機(jī)用已改變的容器中的數(shù)據(jù)來替代先前所下載或構(gòu)建的網(wǎng)頁/HTML中的對應(yīng)容器,以生成用于新網(wǎng)頁的HTML。圖7更加詳細(xì)地圖示了轉(zhuǎn)換例程39;所述轉(zhuǎn)換例程39在圖2的步驟208中#:調(diào)用。在步驟700中,所述轉(zhuǎn)換例程將它的編號方案初始化到零。接著,所迷轉(zhuǎn)換例程標(biāo)識(shí)從web服務(wù)器30接收到的網(wǎng)頁的標(biāo)準(zhǔn)HTML中的下一個(gè)(在第一次迭代時(shí)是第一個(gè))標(biāo)簽(步驟702)。接著,轉(zhuǎn)換例程39確定所述下一個(gè)標(biāo)簽是否是開頭的(open)容器標(biāo)簽,也即標(biāo)記用于標(biāo)簽的一類數(shù)據(jù)的開始的標(biāo)簽(判決704)。以下是開頭的容器標(biāo)簽的一些例子<html>、<head>、<body>、<div>、<span>、<ul>、<ol>、<li>、<table>、<tr>、<td>、<blockquote>、<code>、<tt>、<form>、和〈select〉。如果所述第一標(biāo)簽是開頭的容器標(biāo)簽,則轉(zhuǎn)換例程39確定一唯一數(shù)字以標(biāo)識(shí)所述容器標(biāo)簽(步驟706和708)。如果所述容器標(biāo)簽是父親標(biāo)簽,則所述轉(zhuǎn)換例程將分配下一個(gè)順序編號(例如,在第一次迭代中,是編號"1")(步驟706)。然而,如果所述容器標(biāo)簽是(父親標(biāo)簽的)兒子標(biāo)簽,則所述轉(zhuǎn)換例程將把一后綴附加到所述父親的編號(例如,編號"1-1"或"1-2")(步驟708)。在步驟708中,所述轉(zhuǎn)換例程將分配編號給所述父親的所有兒子、孫子等等。接著,所述轉(zhuǎn)換例程確定在原始HTML中是否存在更多的可能是需要被標(biāo)識(shí)的標(biāo)簽的字符(判決710)。如果是這樣(判決710,"是,,分支),則所述轉(zhuǎn)換例程循環(huán)返回步驟702以標(biāo)識(shí)原始HTML中的下一個(gè)標(biāo)簽。如果所述下一個(gè)標(biāo)簽是結(jié)尾的(close)容器,也即標(biāo)記針對開頭的標(biāo)簽的數(shù)據(jù)的結(jié)尾的標(biāo)簽,則所述轉(zhuǎn)換例程循環(huán)返回到步驟702以標(biāo)識(shí)所述原始HTML中的下一個(gè)標(biāo)簽(判決720,"否"分支)。以下是各結(jié)尾的容器標(biāo)簽(針對上面所述的開頭的容器標(biāo)簽)的一些例子</html>、</head>、</body>、</div>、</span>、</ul>、</ol>、</li>、</column></row><table>、</tr>、</td>、</blockquote>、</code>、</tt>、</form>、和々select、所述轉(zhuǎn)換例程39針對標(biāo)準(zhǔn)HTML中的每個(gè)容器標(biāo)簽重復(fù)進(jìn)行前面的轉(zhuǎn)換處理,直到?jīng)]有任何要處理的容器標(biāo)簽為止(判決712,"否"分支和步驟722),在此時(shí),所述轉(zhuǎn)換例程39返回帶有已轉(zhuǎn)換的HTML的程序29。圖8更加詳細(xì)地圖示了在圖6的步驟612中所引用的比較程序例程61。在步驟800中,網(wǎng)頁差異計(jì)算程序29進(jìn)行調(diào)用并由此調(diào)用所述比較程序例程61。作為響應(yīng),程序例程61每次一個(gè)字符地對當(dāng)前HTML和針對先前的網(wǎng)頁的先前被高速緩存的HTML的各字符進(jìn)行迭代(步驟802)。接著,程序61比較新的/當(dāng)前所請求的HTML的每個(gè)字符和先前所下載的HTML的對應(yīng)的字符(判決803)。如果兩個(gè)HTML中的第一字符(字母、數(shù)字或符號)不相同(判決803,"是,,分支),則程序61讀取新HTML中的相同容器中的所有字符,也即在"開頭的"容器標(biāo)簽之后且在對應(yīng)的"結(jié)尾的"容器標(biāo)簽之前的所有字符(步驟804)。如下面更加詳細(xì)地描述,包括其所有數(shù)據(jù)的所述容器將被下載到客戶端計(jì)算機(jī),從而所述客戶端計(jì)算機(jī)可以用所下載的容器來替代在客戶端計(jì)算機(jī)處先前所下載和高速緩存的容器。接著,程序61創(chuàng)建數(shù)據(jù)映射以存儲(chǔ)在步驟804中所讀取的信息并對以下容器內(nèi)的字符編制索引(步驟806),所述容器帶有由圖7中的網(wǎng)頁轉(zhuǎn)換例程所生成的針對所述容器的ID。接著,程序61將所述數(shù)據(jù)映射返回給調(diào)用者(步驟808)。因此,當(dāng)程序61正在執(zhí)行下面參考步驟822所描述的中介遞歸功能時(shí),調(diào)用者是程序61,因此程序61將所述數(shù)據(jù)映射返回給它自己,并且接著前進(jìn)到步驟823以將針對當(dāng)前所考慮的容器的數(shù)據(jù)映射添加到來自先前所考慮和所處理的容器的數(shù)據(jù)映射。當(dāng)程序61完成新HTML與先前被高速緩存的HTML的比較時(shí),接著程序61從步驟808返回到網(wǎng)頁差異計(jì)算程序,并將針對整個(gè)HTML的數(shù)據(jù)映射供應(yīng)給網(wǎng)頁差異計(jì)算程序。再次參考判決803的"否"分支,其中新HTML的(當(dāng)前在檢查中的)字符匹配先前被高速緩存的HTML中的對應(yīng)字符,接著程序例程61將確定所述字符是否是開頭的容器標(biāo)簽(判決820)。如果不是(判決820,"否"分支),則程序例程61將確定所述字符是否是結(jié)尾的容器標(biāo)簽(判決830)。如果不是(判決830,"否"分支),則程序例程61將處理下一個(gè)字符(如果有的話)(判決840,"是"分支)。如果所述字符是開頭的容器(判決820,"是"分支),則程序例程61獲取并記錄來自所述容器標(biāo)簽的ID,所述ID從所述轉(zhuǎn)換例程39被分配給所述容器標(biāo)簽(步驟822),并且接著遞歸地循環(huán)返回步驟802以處理下一個(gè)字符。如果所述字符是結(jié)尾的容器(判決830,"是,,分支),則程序例程61前進(jìn)到步驟808以將所述容器標(biāo)簽返回給所述數(shù)據(jù)映射,而不帶有所述容器中的任何數(shù)據(jù)。此時(shí)不必包括所述容器中的任何數(shù)據(jù),因?yàn)槠駷橹?,在新HTML的所述容器中的數(shù)據(jù)與在先前所下載的HTML中的對應(yīng)容器中數(shù)據(jù)是相同的。然而,如果新HTML中的所述容器中的后續(xù)字符不同于先前所下載的HTML中的對應(yīng)容器中的對應(yīng)字符,則程序例程61將在數(shù)據(jù)映射/差異文件中包括所述容器的所有數(shù)據(jù),供下載到客戶端計(jì)算機(jī),并將所述數(shù)據(jù)與所述容器標(biāo)簽的ID關(guān)^來。這樣,所述客戶端計(jì)算機(jī)將用所述數(shù)據(jù)映射/下載文件中的不同容器數(shù)據(jù)來替代先前所下載或所構(gòu)建的HTML的容器。圖9更加詳細(xì)地圖示了客戶端計(jì)算機(jī)40和50中的網(wǎng)頁重建程序49和59。在所述比較程序例程61完成之后,網(wǎng)頁差異計(jì)算程序29將所述數(shù)據(jù)映射/差異文件發(fā)送給所述請求客戶端計(jì)算機(jī)(例如,客戶端計(jì)算機(jī)40)的web瀏覽器。作為響應(yīng),基于差異文件中的上載調(diào)用,web瀏覽器47將所述差異文件作為帶有"responseText屬性"的JSON數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)發(fā)給程序49。在步驟900中,程序49接收所述JSON數(shù)據(jù)結(jié)構(gòu)(也即,差異文件),并使用公知的JavaScript程序功能將所述差異文件轉(zhuǎn)換成JavaScript對象。接著,程序49獲取先前所下載的網(wǎng)頁的所有標(biāo)簽和它們的ID的列表(步驟卯2)。先前所下載的網(wǎng)頁通常正被顯示在客戶端計(jì)算機(jī)上。接著,程序49讀取當(dāng)前所顯示的HTML/先前所下載的HTML的笫一/下一個(gè)標(biāo)簽和它的ID(步驟906),并且確定所述差異文件是否包含標(biāo)簽和ID的相同的組合(判決910)。如果包含(判決910,"是"分支),則所述差異文件包含針對容器標(biāo)簽和ID的所述組合的已更新的容器數(shù)據(jù)。因此,程序49在先前所下載的HTML中用新容器數(shù)據(jù)來替代對應(yīng)的容器(步驟920)。在當(dāng)前所顯示的HTML中的任何容器被用新數(shù)據(jù)更新而且程序49在步驟920設(shè)置標(biāo)簽的innerHTML屬性時(shí),web瀏覽器47根據(jù)已更新的HTML自動(dòng)地更新當(dāng)前所顯示的網(wǎng)頁。在步驟920之后或者如果在針對先前所下載的HTML的容器標(biāo)簽和ID的當(dāng)前所考慮的組合的差異文件中沒有任何匹配(判決910,"否"分支),則程序49確定在所述差異文件中是否存在更多的容器標(biāo)簽(判決930)。如果存在(判決930,"是"分支),則程序49循環(huán)返回到步驟906以考慮差異文件中的下一個(gè)容器標(biāo)簽。針對差異文件中的每個(gè)容器標(biāo)簽重復(fù)前面所述過程,直到所有容器標(biāo)簽已經(jīng)都被考慮了為止(判決930,"否"分支),此時(shí),程序49隱藏忙碌指示符以向用戶告知網(wǎng)頁已被完全更新以形成當(dāng)前所請求的網(wǎng)頁(步驟950)。程序29、39和61可從諸如磁帶或磁盤、光學(xué)媒體、DVD、存儲(chǔ)棒、半導(dǎo)體存儲(chǔ)器等等之類的計(jì)算機(jī)可讀媒體65中被加載進(jìn)服務(wù)器20,或者可以經(jīng)由TCP/IP適配器卡63從因特網(wǎng)中被下載。程序49可以從諸如磁帶或磁盤、光學(xué)媒體、DVD、存儲(chǔ)棒、半導(dǎo)體存儲(chǔ)器等等之類的計(jì)算機(jī)可讀媒體中被加載進(jìn)客戶端計(jì)算機(jī)40,或者可以經(jīng)由TCP/IP適配器卡143從因特網(wǎng)中下載。程序59可以從諸如磁帶或磁盤、光學(xué)媒體、DVD、存儲(chǔ)棒、半導(dǎo)體存儲(chǔ)器等等之類的計(jì)算機(jī)可讀々某體中被加載進(jìn)客戶端計(jì)算機(jī)50,或者可以經(jīng)由TCP/IP適配器卡153從因特網(wǎng)中下載?;谇懊嫠鰞?nèi)容,已經(jīng)公開了一種用于使數(shù)據(jù)傳輸最小化的計(jì)算機(jī)系統(tǒng)、方法和程序產(chǎn)品。然而,在不偏離本發(fā)明的范圍的條件下,可以做許多修改和替換。因此,已經(jīng)通過舉例而不是限制的方式公開了本發(fā)明,并且應(yīng)當(dāng)參考以下權(quán)利要求來確定本發(fā)明的范圍。權(quán)利要求1.一種用于減少與針對網(wǎng)頁的請求相關(guān)聯(lián)的數(shù)據(jù)傳輸?shù)姆椒?,所述方法包括以下步驟響應(yīng)于來自客戶端計(jì)算機(jī)的對第一網(wǎng)頁的第一請求,服務(wù)器將所述第一網(wǎng)頁下載到所述客戶端計(jì)算機(jī),并且所述客戶端計(jì)算機(jī)存儲(chǔ)所述第一網(wǎng)頁;響應(yīng)于來自所述客戶端計(jì)算機(jī)的對第二網(wǎng)頁的第二、后續(xù)的請求,所述服務(wù)器將所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的差異下載到所述客戶端計(jì)算機(jī);以及所述客戶端計(jì)算機(jī)基于所述第一網(wǎng)頁以及所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的所述差異來構(gòu)建所述第二網(wǎng)頁。2.根據(jù)權(quán)利要求1所述的方法,其中所述差異包括所述第二網(wǎng)頁的HTML容器,其中所述第二網(wǎng)頁的所述容器中的至少一個(gè)字符不同于所述第一網(wǎng)頁的對應(yīng)容器中的至少一個(gè)對應(yīng)字符。3.根據(jù)權(quán)利要求2所述的方法,其中所述客戶端計(jì)算機(jī)通過用所述第二網(wǎng)頁的所述HTML容器替代所述笫一網(wǎng)頁的對應(yīng)的HTML容器來構(gòu)建所述第二網(wǎng)頁。4.根據(jù)權(quán)利要求l所述的方法,進(jìn)一步包括以下步驟所述服務(wù)器存儲(chǔ)所述第一網(wǎng)頁并且逐個(gè)容器地比較所述第二網(wǎng)頁的HTML和所述第一網(wǎng)頁的HTML,以標(biāo)識(shí)所述第二網(wǎng)頁的哪些HTML容器不同于所述笫一網(wǎng)頁的對應(yīng)的HTML容器,以確定所述笫二網(wǎng)頁與所述笫一網(wǎng)頁之間的差異。5.—種用于減少與針對網(wǎng)頁的請求相關(guān)聯(lián)的數(shù)據(jù)傳輸?shù)南到y(tǒng),所述系統(tǒng)包括服務(wù)器內(nèi)的用于響應(yīng)于來自客戶端計(jì)算機(jī)的針對第一網(wǎng)頁的第一請求將所述第一網(wǎng)頁下載到所述客戶端計(jì)算機(jī)的裝置,以及所述客戶端計(jì)算機(jī)內(nèi)的用于存儲(chǔ)所述第一網(wǎng)頁的裝置;所述服務(wù)器內(nèi)的用于響應(yīng)于來自所述客戶端計(jì)算機(jī)的針對第二網(wǎng)頁的笫二、后續(xù)的請求將所述第二網(wǎng)頁與所述笫一網(wǎng)頁之間的差異下載到所述客戶端計(jì)算機(jī)的裝置;以及所述客戶端計(jì)算機(jī)內(nèi)的用于基于所述第一網(wǎng)頁以及所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的所述差異來構(gòu)建所述第二網(wǎng)頁的裝置。6.根據(jù)權(quán)利要求5所述的系統(tǒng),其中所述差異包括所迷第二網(wǎng)頁的HTML容器,其中所述第二網(wǎng)頁的所述容器中的至少一個(gè)字符不同于所述第一網(wǎng)頁的對應(yīng)容器中的至少一個(gè)對應(yīng)字符。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中所迷客戶端計(jì)算機(jī)內(nèi)的所述構(gòu)建裝置通過用所述第二網(wǎng)頁的所述HTML容器替代所述第一網(wǎng)頁的對應(yīng)的HTML容器來構(gòu)建所述第二網(wǎng)頁。8.根據(jù)權(quán)利要求5所述的系統(tǒng),進(jìn)一步包括所述服務(wù)器內(nèi)的裝置,用于存儲(chǔ)所述第一網(wǎng)頁并且逐個(gè)容器地比較所述第二網(wǎng)頁的HTML和所迷第一網(wǎng)頁的HTML,以標(biāo)識(shí)所述第二網(wǎng)頁的哪些HTML容器不同于所述第一網(wǎng)頁的對應(yīng)的HTML容器,以確定所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的差異。9.一種用于減少與針對網(wǎng)頁的請求相關(guān)聯(lián)的數(shù)據(jù)傳輸?shù)挠?jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀媒體,所述計(jì)算機(jī)可讀媒體包括由處理器用來執(zhí)行根據(jù)權(quán)利要求1至4所迷的方法的程序指令。全文摘要一種用于使通過網(wǎng)絡(luò)的數(shù)據(jù)傳輸量最小化的計(jì)算機(jī)系統(tǒng)、方法和程序。響應(yīng)于來自客戶端計(jì)算機(jī)的對第一網(wǎng)頁的第一請求,服務(wù)器將所述第一網(wǎng)頁下載到所述客戶端計(jì)算機(jī),并且所述客戶端計(jì)算機(jī)存儲(chǔ)所述第一網(wǎng)頁。響應(yīng)于來自所述客戶端計(jì)算機(jī)的對第二網(wǎng)頁的第二、后續(xù)的請求,所述服務(wù)器將所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的差異下載到所述客戶端計(jì)算機(jī)。所述客戶端計(jì)算機(jī)基于所述第一網(wǎng)頁以及所述第二網(wǎng)頁與所述第一網(wǎng)頁之間的所述差異來構(gòu)建所述第二網(wǎng)頁。文檔編號H04L29/02GK101207605SQ200710186630公開日2008年6月25日申請日期2007年11月14日優(yōu)先權(quán)日2006年12月18日發(fā)明者J·M·斯塔佩爾斯申請人:國際商業(yè)機(jī)器公司