本申請基于并且獲得2014年5月13日提交的美國臨時專利申請No.61/992,761的權(quán)益。上述列出的申請的全部內(nèi)容通過引用并入本文。
附圖說明
圖1是根據(jù)本發(fā)明的實施方式的網(wǎng)絡(luò)。
圖2是根據(jù)本發(fā)明的實施方式的數(shù)據(jù)推送過程。
圖3是根據(jù)本發(fā)明的實施方式的高速緩存同步過程。
圖4A至圖4E是根據(jù)本發(fā)明的實施方式的cookie同步過程。
圖5是根據(jù)本發(fā)明的實施方式的資源評估過程。
具體實施方式
本文描述的系統(tǒng)和方法可以對網(wǎng)絡(luò)訪問(web access)提供速度提升和壓縮增強(qiáng)。通過預(yù)測用戶將請求什么文件并在所述文件被請求之前將其推送到客戶端,可以增強(qiáng)壓縮代理解決方案的性能。這可以避免從客戶端通過代理到達(dá)服務(wù)器的額外的往返行程,從而提高速度。
單個網(wǎng)頁可以包括多個文件,例如HTML文件、圖像文件、音頻/視頻文件等。當(dāng)網(wǎng)絡(luò)瀏覽器(web browser)獲取頁面時,其可以通過多個請求來獲取頁面,例如對于包含在頁面中的每個文件提出一個請求。在高延遲網(wǎng)絡(luò)(例如移動網(wǎng)絡(luò))中,請求響應(yīng)所花費(fèi)的時間可能是加載頁面所花費(fèi)時間的很大一部分??梢哉埱笤S多文件,并且在許多情況下,在等待特定資源(例如JavaScript文件)時阻止加載。
這里描述的系統(tǒng)和方法可以包括確定推送哪些資源以優(yōu)化用戶體驗。通過在代理上加載特定頁面時記錄其他用戶提出了什么網(wǎng)絡(luò)請求,本文描述的系統(tǒng)和方法可以預(yù)測特定用戶將加載頁面的什么部分。因此,預(yù)測的要素可以甚至在客戶端請求它們之前被推送。
本文所描述的系統(tǒng)和方法可以包括一個或多個計算機(jī)。計算機(jī)可以是能夠執(zhí)行算術(shù)運(yùn)算和/或邏輯運(yùn)算的任何一個或多個可編程機(jī)器。在一些實施方式中,計算機(jī)可以包括處理器、存儲器、數(shù)據(jù)存儲設(shè)備和/或其他公知的或新穎的部件。這些部件可以物理地連接或通過網(wǎng)絡(luò)或無線鏈路連接。計算機(jī)還可以包括可以指導(dǎo)上述部件的操作的軟件。計算機(jī)可以用相關(guān)領(lǐng)域的普通技術(shù)人員常用的術(shù)語提及,諸如服務(wù)器、PC、移動設(shè)備、路由器、交換機(jī)、數(shù)據(jù)中心、分布式計算機(jī)和其他術(shù)語。計算機(jī)可以促進(jìn)用戶和/或其他計算機(jī)之間的通信,可以提供數(shù)據(jù)庫,可以執(zhí)行數(shù)據(jù)的分析和/或轉(zhuǎn)換,和/或執(zhí)行其他功能。本領(lǐng)域普通技術(shù)人員將理解,這里使用的那些術(shù)語是可互換的,并且可以使用能夠執(zhí)行所描述的功能的任何計算機(jī)。例如,雖然術(shù)語“服務(wù)器”可以出現(xiàn)在以下說明書中,但是所公開的實施方式不限于服務(wù)器。
計算機(jī)可以經(jīng)由一個或多個網(wǎng)絡(luò)鏈接到彼此。網(wǎng)絡(luò)可以是任何多個完全或部分互連的計算機(jī),其中一些或所有計算機(jī)能夠彼此通信。普通技術(shù)人員將理解,在一些情況下計算機(jī)之間的連接可以是有線的(例如,經(jīng)由以太網(wǎng)、同軸、光學(xué)或其他的有線連接),或者可以是無線的(例如,經(jīng)由Wi-Fi、WiMax或其他無線連接)。計算機(jī)之間的連接可以使用任何協(xié)議,包括面向連接的協(xié)議(例如TCP)或無連接協(xié)議(例如UDP)。至少兩個計算機(jī)可以交換數(shù)據(jù)的任何連接可以是網(wǎng)絡(luò)的基礎(chǔ)。
圖1是根據(jù)本發(fā)明的實施方式的網(wǎng)絡(luò)100。配備網(wǎng)絡(luò)瀏覽器的計算機(jī)(諸如移動設(shè)備(例如,客戶端120))可以與代理服務(wù)器110通信,以便訪問由一個或多個服務(wù)器130托管的網(wǎng)絡(luò)內(nèi)容(web content)。雖然移動設(shè)備被用作示例,但是由這里描述的系統(tǒng)和方法所提供的增強(qiáng)可以應(yīng)用于任何配備瀏覽器的設(shè)備??蛻舳?20可以經(jīng)由任何網(wǎng)絡(luò)(例如3G或4G網(wǎng)絡(luò)或諸如Wi-Fi網(wǎng)絡(luò)的局域網(wǎng))與代理服務(wù)器110通信。客戶端120和代理服務(wù)器110之間的通信可以使用協(xié)議,該協(xié)議允許從代理服務(wù)器110到客戶端120的未被請求的數(shù)據(jù)推送,該協(xié)議例如為SPDY協(xié)議。代理服務(wù)器110可以經(jīng)由任何網(wǎng)絡(luò)(例如因特網(wǎng)或私有企業(yè)網(wǎng)絡(luò))與服務(wù)器130通信。代理服務(wù)器110和服務(wù)器130之間的通信可以使用允許在代理服務(wù)器110和服務(wù)器130之間進(jìn)行數(shù)據(jù)傳送的任何協(xié)議??蛻舳?20可以請求顯示由服務(wù)器130托管的網(wǎng)頁。如下文將更詳細(xì)地描述,代理服務(wù)器110可以接收該請求,從服務(wù)器130檢索網(wǎng)頁內(nèi)容,并將網(wǎng)頁傳送給客戶端120。該操作可以包括由于與網(wǎng)站交互而預(yù)測客戶端120將請求什么文件并且在所述文件在被請求之前而將所述文件推送到客戶端120。
代理服務(wù)器110可以服務(wù)于許多客戶端120,并且可以記錄關(guān)于以下內(nèi)容的信息:客戶端120請求什么頁面,以及由于初始頁面請求,客戶端120提出針對附加數(shù)據(jù)的什么內(nèi)聯(lián)請求。使用該信息,代理服務(wù)器110可以提前確定它可以從服務(wù)器130請求什么資源,并且盡可能早地將那些資源推送到客戶端120。因此,由于在客戶端120上的JavaScript執(zhí)行而被請求的資源可以被提前推送,例如,甚至在JavaScript已經(jīng)被執(zhí)行之前推送。
為了確定什么資源可以推送到客戶端120,客戶端120上的cookie和代理服務(wù)器110上的cookie可以同步。注意,可以在客戶端120上局部地修改cookie,例如通過JavaScript修改cookie。關(guān)于客戶端120的瀏覽器高速緩存的內(nèi)容的信息也可以與代理服務(wù)器110同步,以確保已經(jīng)在客戶端120上的高速緩存中的資源不被推送。推送冗余數(shù)據(jù)會浪費(fèi)帶寬。
如果發(fā)現(xiàn)推送到客戶端120的特定資源最終未被網(wǎng)頁使用,則該信息可以被發(fā)送到代理服務(wù)器110,使得該資源可以從在未來的請求中推送的資源的列表中移除。
如上文指出,網(wǎng)頁的許多要素可以由JavaScript執(zhí)行來調(diào)用。雖然可以容易地識別用于推送的一些網(wǎng)頁要素(例如,HTML頁面,圖形等),但是由JavaScript執(zhí)行所涉及的要素在不執(zhí)行JavaScript的情況下可以不進(jìn)行簡單地解析。JavaScript可以在代理服務(wù)器110上執(zhí)行,但是這可能導(dǎo)致存儲器約束問題、在客戶端120和代理服務(wù)器110之間同步執(zhí)行狀態(tài)的問題等。因此,通常由客戶端120獲取的網(wǎng)頁中的資源可以隨著時間被記錄,并且該數(shù)據(jù)可以用于在客戶端120請求之前推測性地將這些公共資源推送到客戶端120。
圖2是根據(jù)本發(fā)明的實施方式的數(shù)據(jù)推送過程200。代理服務(wù)器110可以對每個主URL在數(shù)據(jù)庫中創(chuàng)建條目210。這些條目可以包括關(guān)于以下內(nèi)容的信息:客戶端120對該頁面請求什么內(nèi)聯(lián)URL以及由任何客戶端120請求內(nèi)聯(lián)URL多少次。雖然在該示例中討論了內(nèi)聯(lián)URL,但是對在頁面的文檔對象模型(DOM)樹中發(fā)現(xiàn)的任何URL可以執(zhí)行該過程200。注意,URL可以表示任何數(shù)據(jù)(例如,HTML、樣式表,JavaScript要素、多媒體文件等)。當(dāng)客戶端120加載頁面時,代理服務(wù)器110可以在數(shù)據(jù)庫中執(zhí)行查找220。如果數(shù)據(jù)庫條目表明通常在相同頁面的其他頁面加載中獲取一資源230,則代理服務(wù)器110可以確定客戶端120可能需要該資源。因此,代理服務(wù)器110可以搶先獲得并隨后推送該資源240。該過程200可以利用以下事實:每當(dāng)瀏覽器發(fā)出對URL的請求時,瀏覽器可以針對該URL的有效副本的存在檢查本地高速緩存。如果高速緩存中有副本,則瀏覽器可以使用該副本而不從其遠(yuǎn)程源請求該URL。推送資源240可以將資源放置到瀏覽器高速緩存中。因此,瀏覽器可以識別高速緩存中的該資源并加載它,而不向網(wǎng)絡(luò)100發(fā)出請求。
如果客戶端120最終不需要該資源,則客戶端120可以向代理服務(wù)器110發(fā)送包含不需要該資源的信息的消息250。代理服務(wù)器110可以將該信息記錄在數(shù)據(jù)庫中以便提高下一頁面加載中的推送準(zhǔn)確度260。圖5是根據(jù)本發(fā)明的實施方式的資源評估過程500。例如,通過解釋頁面描述語言(例如,HTML或CSS)并執(zhí)行存儲在從服務(wù)器130請求的文件(例如,網(wǎng)絡(luò)資源)中的代碼(例如,JavaScript),客戶端120可以顯示網(wǎng)頁510。解釋和來自上述文件的代碼的執(zhí)行可以使客戶端120從服務(wù)器130請求附加的網(wǎng)絡(luò)資源,這反過來會需要進(jìn)一步的解釋或代碼執(zhí)行。如本文所討論的,這些資源中的一些或全部(包括未請求的資源)可以通過代理服務(wù)器110被推送到客戶端120。
客戶端120可以記錄在網(wǎng)頁的顯示中所使用的所有資源520。通過將在顯示頁面期間所記錄的資源的列表和從代理服務(wù)器110到達(dá)的作為推送資源的資源的列表進(jìn)行比較,客戶端120可以創(chuàng)建在顯示頁面的過程期間被推送但未使用的資源的列表530??蛻舳?20可以向代理服務(wù)器110發(fā)送包含被推送但未使用的資源的標(biāo)識符的消息540。代理服務(wù)器110可以將接收到的關(guān)于未使用資源的信息記錄在數(shù)據(jù)庫中550。當(dāng)代理服務(wù)器110構(gòu)建用于在相同頁面的下一次加載期間推送的資源的列表時,所識別的未使用資源可以不被認(rèn)為是待推送到客戶端120的候選者。
代理服務(wù)器110可以壓縮或重新壓縮由網(wǎng)絡(luò)服務(wù)器提供的數(shù)據(jù)。代理服務(wù)器110可以使用客戶端120的高速緩存作為增量(Delta)編碼的字典庫。
當(dāng)代理服務(wù)器110即將把新資源推送到客戶端120時,它可以首先檢查在客戶端120的高速緩存中是否存在類似的資源。相似性度量可以根據(jù)文件大小、CRC校驗和、Rabin指紋、文本比較、VCDIFF或其他來表達(dá)。如果存在這樣的資源,則代理服務(wù)器110可以僅發(fā)送高速緩存資源和新資源之間的差異??蛻舳?20可以使用該高速緩存作為用于增量編碼的字典庫來解碼該差異。
圖3是根據(jù)本發(fā)明的實施方式的高速緩存同步過程300。為了避免推送已經(jīng)在客戶端120的高速緩存中的數(shù)據(jù),關(guān)于高速緩存的內(nèi)容的信息可以從客戶端120同步到代理服務(wù)器110。在客戶端120的瀏覽器啟動時,高速緩存數(shù)據(jù)可以被發(fā)送到代理服務(wù)器110。例如,在一些實施方式中,對于每個高速緩存URL的4字節(jié)CRC校驗和可以被發(fā)送到代理服務(wù)器110。在瀏覽器會話期間,客戶端120可以發(fā)送增量更新(例如,通過生成表示被移除或添加到本地高速緩存的每個URL的4字節(jié)校驗和并發(fā)送校驗和的列表),以通知代理服務(wù)器110:瀏覽器高速緩存的內(nèi)容可能已經(jīng)以對于代理服務(wù)器110而言可不引起注意的方式改變(例如,客戶端120繞過代理服務(wù)器110加載網(wǎng)絡(luò)資源)。當(dāng)代理服務(wù)器110即將把項目推送到客戶端120時320,代理服務(wù)器110可以針對校驗和來驗證該項目,以查看客戶端120是否已經(jīng)聲明在其高速緩存中具有該項目330。如果該項目在高速緩存中340,則該項目可以不被推送。然而,如果該項目不在高速緩存330中,則代理服務(wù)器110可以推送該項目350。
在一些實施方式中,代理服務(wù)器110上的同步數(shù)據(jù)可能不精確地表示客戶端120的數(shù)據(jù),因為該數(shù)據(jù)僅用于避免推送過多的資源。此外,如果資源不夠頻繁地推送,則客戶端120仍可以以正常方式請求該資源。
圖4A至圖4E示出了根據(jù)本發(fā)明的實施方式的cookie同步過程400??蛻舳?20可以存儲與因特網(wǎng)域相關(guān)聯(lián)的cookie的列表,其中,從該因特網(wǎng)域接收所述cookie。列表可以包括命令客戶端120存儲cookie的域和針對其實際設(shè)置cookie的每個域。當(dāng)客戶端120向域請求資源時,它可以附加過去與該域相關(guān)聯(lián)的cookie。代理服務(wù)器110可以獲得關(guān)于客戶端120上的cookie的信息,以幫助促進(jìn)數(shù)據(jù)推送過程200。例如,在頁面請求來自另一域的內(nèi)聯(lián)資源的情況下,該信息可以是有用的,因為cookie可以不是主要請求的一部分。許多網(wǎng)頁包括來自多個域的資源。在網(wǎng)絡(luò)請求除了所請求的網(wǎng)頁的主域之外還以不同的因特網(wǎng)域為目標(biāo)的情況下,為了使代理服務(wù)器110能夠以客戶端120的名義(即,基于上述處理,而不是作為明確的客戶端120請求的結(jié)果)發(fā)出推測性網(wǎng)絡(luò)請求,代理服務(wù)器110可以使用存儲在客戶端120的瀏覽器中的所有cookie的最新副本。
圖4B示出一個示例性場景,其中代理服務(wù)器110從客戶端120接收用于從第一服務(wù)器130A獲取URL的請求。該請求可以包含與第一服務(wù)器130A的域相關(guān)的cookie。此外,由于上述預(yù)取過程,代理服務(wù)器110可以決定從第二服務(wù)器130B請求額外的資源,因為代理服務(wù)器110預(yù)計客戶端120需要額外的資源。為了向第二服務(wù)器130B請求額外的資源,代理服務(wù)器可以使用其關(guān)于客戶端120上的cookie的知識,從而它可以將與第二服務(wù)器130B的域相關(guān)的任何cookie添加到對第二服務(wù)器130B的搶先請求。
在初始連接或任何重新連接時,存儲在客戶端120上的所有cookie可以與代理服務(wù)器110同步410(在重新連接時,只有變化可以被發(fā)送到代理服務(wù)器110)。例如,在圖4C中,存儲在客戶端120上的來自example.com和opera.com的cookie可以被發(fā)送到代理服務(wù)器110。
當(dāng)服務(wù)器130設(shè)置cookie(例如,具有Set-Cookie HTTP報頭)時,代理服務(wù)器110可以將該cookie添加到存儲在代理服務(wù)器110上的客戶端cookie列表420。例如,在圖4D中,get請求從客戶端120向代理服務(wù)器110發(fā)送和從代理服務(wù)器110向服務(wù)器130發(fā)送。服務(wù)器130可以用set_cookie命令響應(yīng)。該命令可以由代理服務(wù)器110接收并從代理服務(wù)器110發(fā)送到客戶端120。因此,代理服務(wù)器110和客戶端120都可以設(shè)置相同的cookie(例如,來自如所示出的test.com)。
當(dāng)客戶端120使用JavaScript設(shè)置cookie時,其可以向代理服務(wù)器110發(fā)送命令,例如set_cookie命令,從而代理服務(wù)器110知道添加的cookie而不提出HTTP請求,并且可以將它們添加到列表420。例如,在圖4E中,客戶端120本地生成(例如,通過執(zhí)行JavaScript)set_cookie命令??蛻舳?20可以將該命令發(fā)送到代理服務(wù)器110,因此代理服務(wù)器110可以設(shè)置相同的cookie(例如,對于如所示出的test.com)。
當(dāng)代理服務(wù)器110將內(nèi)容推送到客戶端120時430,其可以包括cookie信息。例如,代理服務(wù)器110可以發(fā)送包含cookie的校驗和的x-ov報頭。客戶端120可以使用該報頭來驗證在預(yù)取時是否使用了正確的cookie 440。如果驗證成功450,則客戶端120可以接受推送的數(shù)據(jù)460。如果驗證失敗450,則客戶端可以丟棄流470并直接從服務(wù)器130獲取資源。
雖然上面已經(jīng)描述了各種實施方式,但是應(yīng)當(dāng)理解,它們是作為示例提出而不是限制。對于相關(guān)領(lǐng)域的技術(shù)人員顯而易見的是,在不脫離精神和范圍的情況下,可以在形式和細(xì)節(jié)上進(jìn)行各種變化。事實上,在閱讀了以上描述之后,相關(guān)領(lǐng)域的技術(shù)人員將明白如何實現(xiàn)替選實施方式。
此外,應(yīng)當(dāng)理解,強(qiáng)調(diào)功能和優(yōu)點(diǎn)的任何附圖僅出于示例目的呈現(xiàn)。所公開的方法和系統(tǒng)分別是足夠靈活的和可配置的,使得它們可以以與所示的方式不同的方式使用。
盡管在說明書、權(quán)利要求書和附圖中可以經(jīng)常使用術(shù)語“至少一個”,但是術(shù)語“一”、“該”、“所述”等也在說明書、權(quán)利要求書和附圖中表示“至少一個”或“所述至少一個”。
最后,申請人的意圖是,僅包括表述“用于...的裝置”或“用于...的步驟”的權(quán)利要求根據(jù)35U.S.C.112的第6段進(jìn)行解釋。沒有明確包括表述“用于...的裝置”或“用于...的步驟”的權(quán)利要求不通過35U.S.C.112的第6段進(jìn)行解釋。