本申請涉及網(wǎng)絡(luò)技術(shù),尤其涉及目標站點訪問方法、裝置和中轉(zhuǎn)服務(wù)器。
背景技術(shù):
網(wǎng)頁無法訪問或訪問出錯會大大降低用戶的聯(lián)網(wǎng)體驗。導(dǎo)致用戶無法訪問的原因之一是網(wǎng)站本身的服務(wù)器會由于各種原因而出現(xiàn)不穩(wěn)定或者崩潰。由于網(wǎng)站眾多且訪問量巨大,服務(wù)器故障時有發(fā)生。當客戶端通過瀏覽器或是其他應(yīng)用進行網(wǎng)絡(luò)訪問時,在對應(yīng)瀏覽器或是其他應(yīng)用的客戶端聯(lián)網(wǎng)日志監(jiān)控上,幾乎每天都存在某些站點在一段時間內(nèi)集中出錯,觸發(fā)用戶大量上傳聯(lián)網(wǎng)錯誤日志的情況。
對于訪問站點失敗,目前已有兩種主要的處理方案。一種是客戶端發(fā)起多次重連,當重連失敗后,顯示訪問出錯頁面。另一種是客戶端轉(zhuǎn)而通過中轉(zhuǎn)服務(wù)器進行訪問,當中轉(zhuǎn)訪問仍然失敗后,顯示訪問出錯頁面。但是這兩種方案都無法解決由于站點服務(wù)器本身無法訪問導(dǎo)致的用戶聯(lián)網(wǎng)體驗下降的問題。
由此,需要一種目標站點訪問方案,其能夠在站點服務(wù)器本身無法訪問的情況下,盡可能地保持站點訪問的可用性。
技術(shù)實現(xiàn)要素:
為了解決上述至少一個問題,本發(fā)明提出了一種通過監(jiān)控訪問失敗信息,動態(tài)更新中轉(zhuǎn)緩存時效的方案,來降低網(wǎng)站服務(wù)器不穩(wěn)定帶給用戶的影響,提升用戶的聯(lián)網(wǎng)體驗。
根據(jù)本發(fā)明的一個方面,提供了一種目標站點訪問方法,包括:響應(yīng)于客戶端對所述目標站點的訪問失敗,在判斷所述目標站點不可訪問的情況下將在前緩存的所述目標站點的頁面信息發(fā)送給所述客戶端。
由此,就能夠在目標站點/頁面不可達的情況下,將在前緩存的頁面信 息發(fā)送給客戶端,由此降低目標站點服務(wù)器不穩(wěn)定給用戶的影響,從而提升用戶的聯(lián)網(wǎng)體驗。
優(yōu)選地,在判斷目標站點不可訪問的情況下將在前緩存的目標站點的頁面信息發(fā)送給客戶端可以包括:在所述頁面信息的緩存過期時間期滿之前,將所述目標站點的頁面信息發(fā)送給所述客戶端。這樣,就能夠通過設(shè)置緩存過期時間來保證要發(fā)送給客戶端的緩存頁面的時效性,從而在減小目標站點服務(wù)器不穩(wěn)定給用戶帶來的影響的同時,盡可能地保證瀏覽信息的準確性。
優(yōu)選地,緩存過期時間與在前的緩存更新時間相關(guān)聯(lián)。由此確保緩存時效能夠根據(jù)在前的緩存狀況而動態(tài)變更,由此提升中轉(zhuǎn)緩存的靈活性。
優(yōu)選地,在目標站點可訪問的情況下,響應(yīng)于客戶端中轉(zhuǎn)訪問目標站點的請求并且判斷距在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息,其中兩次更新之間的間隔時間是緩存更新時間。
這樣,由于更新需要同時滿足用戶請求和預(yù)定間隔已滿兩者,因此能夠避免頻繁更新非熱門站點(預(yù)定更新間隔已滿但無用戶請求)或是在頁面無變動時不必要地更新緩存(用戶請求但預(yù)定更新間隔未滿),從而提升系統(tǒng)效率。
優(yōu)選地,緩存過期時間可由下式計算:
緩存過期時間=當前時間+歷史緩存更新時間*a,
其中,a是大于1的正整數(shù),取預(yù)定緩存更新間隔作為歷史緩存更新時間均值的初始值,并且歷史緩存更新時間由下式計算:
歷史緩存更新時間=(前一次歷史緩存更新時間+(當前時間-前一次緩存更新時間))/2。
這樣,通過根據(jù)網(wǎng)頁本身的更新頻率以及用戶訪問的頻繁性來決定緩存的時效性,能夠更加合理的確定緩存頁面信息的時效性,由此進一步提升用戶聯(lián)網(wǎng)的體驗和準確性。
優(yōu)選地,目標站點訪問方法還包括:在所述目標站點不可訪問的情況下,周期性地訪問所述目標站點,直到成功訪問并更新在前緩存的所述目標站點的頁面信息。
這樣,就能夠及時獲取目標站點服務(wù)恢復(fù)的消息以盡快獲得緩存頁面 的更新,由此提升用戶的聯(lián)網(wǎng)體驗。
根據(jù)本發(fā)明的另一個方面,提供了一種目標站點訪問裝置,包括:緩存信息發(fā)送單元,用于響應(yīng)于客戶端對所述目標站點的訪問失敗,在判斷所述目標站點不可訪問的情況下將在前緩存的所述目標站點的頁面信息發(fā)送給所述客戶端。
優(yōu)選地,緩存信息發(fā)送單元可以在所述頁面信息的緩存過期時間期滿之前,將所述目標站點的頁面信息通過所述通信裝置發(fā)送給所述客戶端。
優(yōu)選地,目標站點訪問裝置還可以包括:緩存更新單元,用于在所述目標站點可訪問的情況下,響應(yīng)于客戶端中轉(zhuǎn)訪問所述目標站點的請求并且判斷距在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息,其中兩次更新之間的間隔時間是緩存更新時間。
優(yōu)選地,目標站點訪問裝置還可以包括緩存過期時間計算單元,后者使用下式計算所述緩存過期時間:
緩存過期時間=當前時間+歷史緩存更新時間*a,
其中,a是大于1的正整數(shù),取預(yù)定緩存更新間隔作為歷史緩存更新時間均值的初始值,并且歷史緩存更新時間由下式計算:
歷史緩存更新時間=(前一次歷史緩存更新時間+(當前時間-前一次緩存更新時間))/2。
優(yōu)選地,目標站點訪問裝置還可以包括:通信單元,用于在所述目標站點不可訪問的情況下,周期性地訪問所述目標站點,直到成功訪問并更新在前緩存的所述目標站點的頁面信息。
根據(jù)本發(fā)明的再一個方面,提供了一種中轉(zhuǎn)服務(wù)器,包括:通信裝置,用于發(fā)送和接收信息;存儲裝置,用于存儲和緩存信息;處理器,連接至所述通信裝置和所述存儲裝置,所述處理器用于:響應(yīng)于所述通信裝置接收到客戶端對所述目標站點的訪問失敗的信息,在判斷所述目標站點不可訪問的情況下將由所述存儲裝置在前緩存的所述目標站點的頁面信息通過所述通信裝置發(fā)送給所述客戶端。
優(yōu)選地,所述處理器還可用于在所述頁面信息的緩存過期時間期滿之前,將所述目標站點的頁面信息發(fā)送給所述客戶端。
優(yōu)選地,所述處理器還可用于在所述目標站點可訪問的情況下,響應(yīng) 于所述通信裝置接收到客戶端中轉(zhuǎn)訪問所述目標站點的請求并且判斷距由所述存儲裝置在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息,其中兩次更新之間的間隔時間是緩存更新時間。
優(yōu)選地,所述處理器還用于根據(jù)下式計算所述緩存過期時間:
緩存過期時間=當前時間+歷史緩存更新時間*a,
其中,a是大于1的正整數(shù),取預(yù)定緩存更新間隔作為歷史緩存更新時間均值的初始值,并且歷史緩存更新時間由下式計算:
歷史緩存更新時間=(前一次歷史緩存更新時間+(當前時間-前一次緩存更新時間))/2。
利用本發(fā)明的目標站點訪問方法,能夠減輕目標站點不可達帶來的聯(lián)網(wǎng)體驗下降。另外,還能夠通過引入動態(tài)的緩存過期時間,確保發(fā)送給客戶端的緩存頁面的時效性。
附圖說明
通過結(jié)合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。
圖1是用于實現(xiàn)本發(fā)明實施例的網(wǎng)絡(luò)環(huán)境的示意圖。
圖2是根據(jù)本發(fā)明一實施例的目標站點訪問方法的流程圖。
圖3是根據(jù)本發(fā)明一個實施例的目標站點訪問裝置的框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達給本領(lǐng)域的技術(shù)人員。
網(wǎng)站服務(wù)器時常會由于各種原因而出現(xiàn)服務(wù)器不穩(wěn)定或者崩潰的情況,導(dǎo)致用戶訪問網(wǎng)頁出錯。用戶通常經(jīng)由瀏覽器或是其他應(yīng)用進行網(wǎng)絡(luò)訪問。在直連訪問網(wǎng)站失敗后,可以轉(zhuǎn)而經(jīng)由中轉(zhuǎn)/代理服務(wù)器進行訪問。 有些中轉(zhuǎn)/代理服務(wù)器可以是用戶主動連接的,例如vpn代理服務(wù)器。而另一些中轉(zhuǎn)/代理服務(wù)器可以是對用戶透明的。例如,安裝在客戶端上的瀏覽器應(yīng)用在直連訪問網(wǎng)站失敗后(或是多次重連失敗后)可向其默認的中轉(zhuǎn)服務(wù)器發(fā)起中轉(zhuǎn)訪問的請求,以通過中轉(zhuǎn)服務(wù)器對目標站點進行訪問。
在某些情況下,例如,運營商封禁ip或是網(wǎng)絡(luò)狀況不佳導(dǎo)致客戶端無法解析dns,中轉(zhuǎn)服務(wù)器訪問目標網(wǎng)頁成功,于是就可以把訪問結(jié)果返回給發(fā)出請求的客戶端。而在站點服務(wù)器本身無法訪問的情況下,現(xiàn)有技術(shù)的中轉(zhuǎn)服務(wù)器也無法解決上述站點網(wǎng)頁不可達的問題。因此,就需要一種目標站點訪問方法、裝置和中轉(zhuǎn)服務(wù)器,其能夠在站點自身故障的情況下保證用戶的訪問,由此提升用戶的聯(lián)網(wǎng)體驗。
圖1是用于實現(xiàn)本發(fā)明實施例的網(wǎng)絡(luò)環(huán)境100的示意圖。環(huán)境100中的客戶端20經(jīng)由網(wǎng)絡(luò)40訪問站點30。在某些情況下,客戶端20可以通過中轉(zhuǎn)服務(wù)器訪問站點40。圖中示出了中轉(zhuǎn)服務(wù)器10作為這類中轉(zhuǎn)/代理服務(wù)器的一個例子。雖然為了闡述方便,在圖中單獨示出了中轉(zhuǎn)服務(wù)器10,但本領(lǐng)域技術(shù)人員可以理解的是,可以把中轉(zhuǎn)服務(wù)器10看做是網(wǎng)絡(luò)40的一部分,在中轉(zhuǎn)服務(wù)器對用戶透明的情況下尤為如此。另外,雖然為了方便說明而在圖中示出了從中轉(zhuǎn)服務(wù)器10分別到客戶端20和站點30的雙向箭頭,但本領(lǐng)域技術(shù)人員可以理解的上,上述數(shù)據(jù)和信息的收發(fā)是需要通過網(wǎng)絡(luò)40實現(xiàn)的。
客戶端20是可用來進行網(wǎng)絡(luò)訪問的任何合適的電子設(shè)備,包括但不限于臺式計算機、智能電話、平板電腦或是其他移動或非移動客戶端。站點30則是能夠通過網(wǎng)絡(luò)訪問的任何站點。網(wǎng)絡(luò)40是計算機網(wǎng)絡(luò),它可以是廣義的因特網(wǎng),也可以是任何其他互連的計算機網(wǎng)絡(luò),例如廣域網(wǎng)、城域網(wǎng)或私域網(wǎng),只要其能夠?qū)崿F(xiàn)站點訪問并包括代理/中轉(zhuǎn)服務(wù)器即可。圖中雖然示出了多個客戶端20-1…n以及多個站點30-1…m,并且在隨后的描述中會選擇其中的一個或部分客戶端和站點加以描述(例如,客戶端20-1和目標站點30-1),但是本領(lǐng)域技術(shù)人員應(yīng)該立即的是,上述1…n的客戶端和1…m的站點旨在表示真實網(wǎng)絡(luò)中存在的多個客戶端和多個站點,并且對特定編號的客戶端和站點加以詳述至少為了說明方便,而非暗示對客戶端和站點的類型或是位置等具有限制。
如圖1所示,中轉(zhuǎn)服務(wù)器10可以包括處理器110、存儲裝置120和通 信裝置130。存儲裝置120例如可以包括硬盤和內(nèi)存,用于信息的存儲和緩存。通信裝置130發(fā)送和接收信息。處理器110則與存儲裝置120和通信裝置130相連接。在一個實施例中,服務(wù)器中的處理器、存儲裝置和通信裝置可以通過系統(tǒng)總線相互連接。處理器110可以用來執(zhí)行本發(fā)明所提出的目標站點訪問方法。優(yōu)選地,存儲裝置120內(nèi)存儲有指令,這些指令在由處理器110執(zhí)行時,可以實現(xiàn)本發(fā)明提出的目標站點訪問方法。
圖2是根據(jù)本發(fā)明一實施例的目標站點訪問方法200的流程圖。在步驟210,響應(yīng)于客戶端對目標站點的訪問失敗,在判斷目標站點不可訪問的情況下將在前緩存的目標站點的頁面信息發(fā)送給所述客戶端。該步驟可由圖1所示中轉(zhuǎn)服務(wù)器10的處理器110實現(xiàn)。例如,客戶端20-1在訪問目標站點30-1失敗時,可以向中轉(zhuǎn)服務(wù)器10上傳聯(lián)網(wǎng)失敗信息并通過中轉(zhuǎn)服務(wù)器10進行訪問。中轉(zhuǎn)服務(wù)器10在判斷目標站點30-1不可訪問的情況下,可以將由存儲裝置120在前緩存的目標站點30-1的頁面信息發(fā)送給客戶端20-1。這樣,就能夠通過中轉(zhuǎn)服務(wù)器的在前緩存來避免目標站點不可訪問時的網(wǎng)頁不可達狀態(tài),由此提升用戶的瀏覽體驗。
優(yōu)選地,在判斷所述目標站點不可訪問的情況下將在前緩存的所述目標站點的頁面信息發(fā)送給所述客戶端可以包括:在所述目標站點在所述頁面信息的緩存過期時間期滿之前,將在前緩存的所述目標站點的頁面信息發(fā)送給所述客戶端。上述步驟同樣可由中轉(zhuǎn)服務(wù)器10實現(xiàn),例如處理器110可以在頁面信息的緩存過期時間期滿之前,將頁面信息通過通信裝置130發(fā)送給客戶端20-1。在緩存過期時間期滿之后,如果目標站點仍然無法訪問,則不再向客戶端返回緩存的頁面,而是可以例如直接返回出錯信息。由此,可以避免長時間的將過期的頁面發(fā)送給用戶,從而在保證頁面可訪問性和確保頁面內(nèi)容時效性兩方面都有所考慮。
優(yōu)選地,緩存過期時間可以與在前的緩存更新時間相關(guān)聯(lián)。通過將網(wǎng)頁不可達時的緩存時效性與網(wǎng)頁可正常訪問時的緩存更新頻率相關(guān)聯(lián),就能夠合理的估算緩存的時效性。例如,頻繁更新的網(wǎng)頁更容易過期,由此避免將時效性過低的網(wǎng)頁呈現(xiàn)給用戶。如下還將在優(yōu)選實施例中給出對緩存過期時間的具體計算。
在一個實施例中,本發(fā)明的目標站點訪問方法還可以包括在目標站點不可訪問的情況下,周期性地訪問該目標站點,直到成功訪問并更新在前 緩存的目標站點的頁面信息。這一步驟同樣可以使用中轉(zhuǎn)服務(wù)器10實現(xiàn)。例如,在目標站點30-1不可訪問的情況下,通信裝置130可以周期性地訪問目標站點30-1,直到成功訪問為止。若成功訪問,便可獲取目標站點30-1最新的頁面信息并相應(yīng)地更新上述頁面信息的在前緩存。
上文結(jié)合附圖闡述了在目標站點不可達時,可以將中轉(zhuǎn)服務(wù)器中在前緩存的目標站點的頁面信息發(fā)送給客戶端的本發(fā)明的目標站點訪問方案。并且還進一步說明了在目標頁面持續(xù)不可達時,中轉(zhuǎn)服務(wù)器僅在緩存過期之前向客戶端發(fā)送緩存頁面,以及周期性訪問目標站點以便在訪問恢復(fù)時及時獲取更新的優(yōu)選方案。
如下將進一步結(jié)合優(yōu)選實施例,闡述中轉(zhuǎn)服務(wù)器如何在目標站點可訪問的正常情況下獲取頁面緩存,以及正常情況下頁面緩存的獲取是如何影響異常情況下(目標頁面不可達)頁面緩存的時效性的優(yōu)選方案。
在一個實施例中,本發(fā)明的目標站點訪問方法還可以包括在目標站點可訪問的情況下,響應(yīng)于客戶端中轉(zhuǎn)訪問目標站點的請求并且判斷距在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息,其中兩次更新之間的間隔時間是緩存更新時間。換句話說,緩存更新時間不會小于預(yù)定緩存更新間隔。對于熱門站點,由于頻繁收到的中轉(zhuǎn)訪問的請求,因此中轉(zhuǎn)服務(wù)器通常是以預(yù)定緩存更新間隔來更新緩存。而對于用戶訪問頻率低于頁面更新頻率的冷門站點,則很可能是由間隔更長的用戶訪問頻率來決定中轉(zhuǎn)服務(wù)器上緩存的更新。
上述更新步驟同樣可由中轉(zhuǎn)服務(wù)器10實現(xiàn)。例如,在目標站點30-1可訪問的情況下,處理器110響應(yīng)于通信裝置130接收到客戶端20-1中轉(zhuǎn)訪問目標站點30-1的請求并且判斷距由存儲裝置120在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息。兩次更新之間的間隔時間是緩存更新時間。
由于更新緩存需要同時滿足有用戶請求且相距前一次緩存已達預(yù)定時間間隔兩者,因此能夠避免對緩存頁面的不必要的更新。如果在預(yù)定更新間隔未滿的情況下有用戶請求中轉(zhuǎn)服務(wù)器訪問目標頁面,中轉(zhuǎn)服務(wù)器可以訪問目標頁面并將頁面內(nèi)容發(fā)送給請求的用戶,但并不會更新其頁面緩存。如果預(yù)定更新間隔已滿但沒有用戶請求,中轉(zhuǎn)服務(wù)器完全可以不訪問目標頁面(因此也不會更新緩存),而是等到下一次有用戶請求中轉(zhuǎn)訪問時再 進行目標站點的訪問和頁面緩存的更新。
關(guān)于中轉(zhuǎn)服務(wù)器的預(yù)定緩存更新間隔,可以簡單地針對所有站點設(shè)定為相同的值。例如,可以將預(yù)定緩存更新間隔統(tǒng)一地設(shè)為600s(10分鐘)。也可以針對不同類型的站點,設(shè)定不同檔次的緩存更新時間。例如,對于信息頻繁更新的門戶網(wǎng)站(例如,新浪、搜狐、網(wǎng)易的主頁),可以將預(yù)定緩存更新間隔設(shè)得很短,如60s(1分鐘)。而對于信息更新不那么頻繁的站點/網(wǎng)頁(例如,百度百科的各類詞條),則可將預(yù)定緩存更新間隔設(shè)得較長,如3600s(1小時)。
對于瀏覽器客戶端應(yīng)用內(nèi)部自行連接的中轉(zhuǎn)服務(wù)器,則例如可以根據(jù)客戶端連接目標站點的次數(shù)多寡來更新對應(yīng)的緩存。例如,對于熱門站點,可以更為頻繁的更新其在中轉(zhuǎn)服務(wù)器上的緩存。
另外,中轉(zhuǎn)服務(wù)器也可以參考目標網(wǎng)站自身的參數(shù)來制定其緩存更新策略(即,針對各目標網(wǎng)站的預(yù)定緩存更新間隔)。例如,對于經(jīng)由某一特定瀏覽器(包括安裝在臺式計算機上的應(yīng)用以及移動客戶端上的應(yīng)用)進行瀏覽的用戶,可以將用戶當天首次訪問所有站點,均通過該瀏覽器的中轉(zhuǎn)服務(wù)器訪問一次,中轉(zhuǎn)服務(wù)器記錄下待訪問網(wǎng)頁的網(wǎng)頁資源以及該資源響應(yīng)頭。當有其他用戶當天首次訪問該頁面時(即需要通過中轉(zhuǎn)服務(wù)器訪問),中轉(zhuǎn)服務(wù)器可以訪問該頁面并將頁面內(nèi)容返回給用戶,同時按照緩存更新判斷策略來確定是否需要更新自己緩存的對應(yīng)頁面內(nèi)容。
在一個實施例中,中轉(zhuǎn)服務(wù)器根據(jù)網(wǎng)頁資源響應(yīng)頭內(nèi)包含的參數(shù)來制定緩存更新判斷策略。具體的緩存更新判斷策略如下:
(1)若有max-age參數(shù),預(yù)定緩存更新間隔為max-age;
(2)若無max-age參數(shù),有etag參數(shù),則對比新獲取內(nèi)容和在前緩存的etag參數(shù),并且在此etag參數(shù)變化時更新緩存;
(3)若無max-age和etag參數(shù),則對比新獲取內(nèi)容和在前緩存的last-modify參數(shù),緩存日期較新的內(nèi)容;
(4)若無任何緩存信息(如no-cache或無max-age、etag、last-modify參數(shù)),則查詢是否有setcookie的有效期。若有,則取最小的cookie有效期作為max-age,判斷邏輯與(1)類似;
(5)若以上信息都無,則把max-age設(shè)置為定值(例如,300s),判斷邏輯與(1)類似。
中轉(zhuǎn)服務(wù)器在制定了緩存更新策略(即,針對各目標網(wǎng)站的預(yù)定緩存更新間隔)之后,還可以優(yōu)選地制定緩存時效性策略(即,針對各目標網(wǎng)站的緩存過期時間)。中轉(zhuǎn)服務(wù)器在每次更新緩存后,都可以記錄如下信息:訪問站點的地址(url)、最后更新時間、歷史緩存更新時間和過期時間。最后更新時間可以是中轉(zhuǎn)服務(wù)器最后一次獲取到的緩存時間(不同于網(wǎng)頁響應(yīng)頭的last-modify,即網(wǎng)頁本身的最后修改時間)。歷史緩存更新時間可以是(上一次歷史緩存更新時間+(當前時間-前一次緩存更新時間))/2。在首次求取歷史緩存更新時間時,可以取預(yù)定緩存更新間隔作為歷史緩存更新時間的初始值。緩存過期時間可以是當前時間+歷史緩存更新時間*a,其中a可以是任意正整數(shù),例如1、3、5或10。此處的歷史緩存更新時間是所述在前的緩存更新時間的一個優(yōu)選的例子,而通過上式計算緩存過期時間(例如,可由處理器110實現(xiàn))則可算作是緩存過期時間與在前的緩存更新時間相關(guān)聯(lián)的一個優(yōu)選的例子。在其他優(yōu)選實施例中,也可以使用所有在前的緩存更新時間的均值來作為歷史緩存更新時間的值,并由此計算緩存過期時間。
為了方便理解,這里給出通過上式計算緩存過期時間的幾個例子。
某一瀏覽器在凌晨0:30有用戶1在當日第一次訪問站點a。由于是用戶1在當日的第一次瀏覽,所以通過該瀏覽器的默認中轉(zhuǎn)瀏覽器(例如,圖1的中轉(zhuǎn)瀏覽器10)進行訪問。中轉(zhuǎn)瀏覽器將獲取的頁面內(nèi)容返回給用戶,并在例如存儲裝置120中緩存獲取的頁面內(nèi)容。此次針對站點a的緩存的最后更新時間是0:30。由于是首次獲取,因此可以取預(yù)定緩存更新間隔作為歷史緩存更新時間的初始值,在此例中,取從響應(yīng)頭中獲取max-age=900,即,歷史緩存更新時間為15min。緩存過期時間為當前時間+歷史緩存更新時間*5=0:30+15min*5=1:45(此次a取經(jīng)驗值5)。
在0:30到0:45期間,即便有其他用戶(例如,用戶2或3)訪問站點a,也會由于緩存更新間隔(15min)未到而不對緩存加以更新。如果在0:45有用戶4訪問站點a,則中轉(zhuǎn)服務(wù)器在向用戶4返回頁面內(nèi)容的同時會更新緩存。此時,針對站點a的最后更新時間為0:45;歷史緩存更新時間為(前一次歷史緩存更新時間+(當前時間-前一次更新時間))/2=(15+(0:45-0:30))/2=15min;過期時間為當前時間+歷史緩存更新時間*5=0:45+15min*5=2:00。
與用戶4在0:45訪問站點a的前例不同,如果在0:45到0:55期間沒有用戶通過中轉(zhuǎn)服務(wù)器訪問站點a,即使緩存更新間隔(15min)在0:45時已滿也不會對緩存加以更新。換句話說,在站點訪問正常時,中轉(zhuǎn)服務(wù)器不會主動訪問站點。如果用戶4是在0:55(而非0:45)訪問站點a,則中轉(zhuǎn)服務(wù)器在向用戶4返回頁面內(nèi)容的同時會更新緩存。此時,最后更新時間為0:55;歷史緩存更新時間為(前一次歷史緩存更新時間+(當前時間-前一次更新時間))/2=(15+(0:55-0:30))/2=20min;過期時間為當前時間+歷史緩存更新時間*5=0:45+20min*5=2:25。
由上可知,即便是預(yù)定的緩存更新間隔相同,用戶訪問越不頻繁的站點,其頁面緩存的時效性也就越弱。中轉(zhuǎn)服務(wù)器也就傾向于在該站點無法訪問時,在更長的時間內(nèi)向用戶發(fā)送緩存作為代替。
雖然以上結(jié)合例子闡述了中轉(zhuǎn)服務(wù)器的緩存更新策略和緩存時效性策略。但需要強調(diào)的是緩存更新和緩存時效性是在不同場景下觸發(fā)的。
緩存更新僅用于目標站點可以訪問的情況,并且緩存更新間隔可由響應(yīng)頭內(nèi)獲取的參數(shù)(例如,max-age、etag、last-modify等)確定或由中轉(zhuǎn)服務(wù)器自行設(shè)定(例如,根據(jù)網(wǎng)站的類型或是熱門程度)。例如,當中轉(zhuǎn)服務(wù)器中a頁面上一次更新時間是10:00,max-age為600(即,10分鐘),此時緩存更新時間會是10:10分。也就是當10:10分后有用戶再次通過中轉(zhuǎn)服務(wù)器訪問a頁面,才會更新緩存。
緩存時效性僅用于目標站點不可訪問的情況,是當目標頁面無法訪問而使用中轉(zhuǎn)服務(wù)器緩存時使用的,此時會根據(jù)緩存時效性來確認向用戶發(fā)送中轉(zhuǎn)服務(wù)器緩存的時間。仍然使用前述0:55更新的例子。如果站點a在1:00因為自身服務(wù)器故障變得不可訪問并且持續(xù)到例如早上7:00,那么在1:00到2:25之間訪問該站點a的用戶5或6可以獲得從中轉(zhuǎn)服務(wù)器返回的緩存頁面并據(jù)此進行瀏覽。而在2:25之后到早上7:00,由于中轉(zhuǎn)服務(wù)器判定其緩存的頁面過期,因此即便有其他用戶請求訪問,也會向這些用戶的客戶端返回表示無法訪問的頁面,例如出錯頁面。
以上給出了本發(fā)明的用于進行目標站點訪問的方法和中轉(zhuǎn)服務(wù)器的描述和優(yōu)選實施例。如下將參考圖3給出相應(yīng)的目標站點訪問裝置的描述。
圖3是根據(jù)本發(fā)明一個實施例的目標站點訪問裝置300的框圖。目標站點訪問裝置300包括緩存信息發(fā)送單元310,并且可以優(yōu)選地包括緩存 信息發(fā)送單元320、緩存過期時間計算單元330和/或通信單元340。
緩存信息發(fā)送單元310響應(yīng)于客戶端對目標站點的訪問失敗,在判斷目標站點不可訪問的情況下將在前緩存的目標站點的頁面信息發(fā)送給所述客戶端。
優(yōu)選地,緩存信息發(fā)送單元310可以在頁面信息的緩存過期時間期滿之前,將目標站點的頁面信息發(fā)送給客戶端。
可選的緩存更新單元320在所述目標站點可訪問的情況下,響應(yīng)于客戶端中轉(zhuǎn)訪問目標站點的請求并且判斷距在前緩存的時間已經(jīng)達到或超過預(yù)定緩存更新間隔,更新在前緩存的所述目標站點的頁面信息,其中兩次更新之間的間隔時間是緩存更新時間。
可選的緩存過期時間計算單元330可使用下式計算緩存過期時間:
緩存過期時間=當前時間+歷史緩存更新時間*a,
其中,a是大于1的正整數(shù),取預(yù)定緩存更新間隔作為歷史緩存更新時間均值的初始值,并且歷史緩存更新時間由下式計算:
歷史緩存更新時間=(前一次歷史緩存更新時間+(當前時間-前一次緩存更新時間))/2。
可選的通信單元320在目標站點不可訪問的情況下,周期性地訪問所述目標站點,直到成功訪問并更新在前緩存的所述目標站點的頁面信息。
最后,將給出根據(jù)本發(fā)明的目標站點訪問方案的一些例子。
瀏覽器客戶端在直連下出現(xiàn)網(wǎng)頁訪問失敗時,發(fā)起中轉(zhuǎn)訪問的請求,通過瀏覽器默認連接的中轉(zhuǎn)服務(wù)器對目標站點進行訪問。若訪問成功,中轉(zhuǎn)服務(wù)器向瀏覽器客戶端返回獲取的頁面內(nèi)容,并且在緩存更新間隔已滿的情況下更新中轉(zhuǎn)服務(wù)器中緩存的對應(yīng)頁面內(nèi)容。若中轉(zhuǎn)服務(wù)器訪問仍然失敗,此時中轉(zhuǎn)服務(wù)器可以記錄訪問的失敗信息(例如,包括錯誤碼、源ip、目標ip、目標域名等)。當中轉(zhuǎn)服務(wù)器判斷到在短時間內(nèi)出現(xiàn)了某個ip或域名集中出錯的情況(某一錯誤碼或者某一目標ip的數(shù)據(jù)在一定時間內(nèi)超過閾值,同一域名或ip大量出錯),中轉(zhuǎn)服務(wù)器認為該站點可能出現(xiàn)不穩(wěn)定或者無法訪問的因素,在一段時間(針對該url的緩存過期時間)內(nèi)瀏覽器客戶端再次通過中轉(zhuǎn)服務(wù)器進行訪問時,讓該次訪問直接通過中轉(zhuǎn)服務(wù)器的緩存來獲取。在該站點不可達的情況下,中轉(zhuǎn)服務(wù)器會對該站點進行周期性的訪問(例如,每隔五分鐘),直到成功訪問并更新相關(guān)緩 存資源。當中轉(zhuǎn)服務(wù)器發(fā)現(xiàn)該站點可以成功訪問后,認為該站點已修復(fù),不再返回緩存給客戶端。當超過緩存過期時間仍然無法訪問上述站點時,則向嘗試通過中轉(zhuǎn)服務(wù)器訪問所述站點的客戶端瀏覽器顯示出錯頁面。
由此,首先能夠利用瀏覽器客戶端精準收集用戶出錯信息,實時跟進各站點的穩(wěn)定狀況,及時預(yù)警網(wǎng)站問題并作出響應(yīng)。其次,可以根據(jù)歷史值動態(tài)調(diào)整緩存的時效,延長緩存時效性并且盡可能的獲取到最新的數(shù)據(jù)。再次,該方案可以降低由于網(wǎng)站本身問題導(dǎo)致的網(wǎng)頁不可達(如出現(xiàn)錯誤的重復(fù)跳轉(zhuǎn),服務(wù)端不穩(wěn)定而響應(yīng)不完整等)所導(dǎo)致的聯(lián)網(wǎng)錯誤率。
比如2015年9月6日10點開始,http://m.ibabyes.com/出現(xiàn)大量指示建立連接后讀取服務(wù)器返回的數(shù)據(jù)異常的錯誤碼,一直持續(xù)到9月8日錯誤日志量才出現(xiàn)減少。根據(jù)該站點歷史last-modify判斷,更新頻率約為2天。按照本方案計算出來的中轉(zhuǎn)服務(wù)器緩存策略,緩存可以存儲10天。因此在這段時間內(nèi)用戶仍然可以通過訪問歷史的緩存來訪問站點。
比如2015年9月9日10點開始,m.58.com首頁訪問出現(xiàn)大量指示服務(wù)器重復(fù)跳轉(zhuǎn)的錯誤碼,持續(xù)到當天約11點30分。該站點指示為no-cache,但是setcookie中cookie的緩存時間為1小時。按照本方案計算出來的中轉(zhuǎn)服務(wù)器緩存策略,緩存可以存儲5小時。因此在這段時間內(nèi)用戶仍然可以通過訪問歷史的緩存來訪問站點。
目前行業(yè)內(nèi)沒有針對由于網(wǎng)站本身崩潰而做出的處理方案,基本上都是針對網(wǎng)絡(luò)不穩(wěn)定而設(shè)置的方案。但是很多時候,網(wǎng)站本身的不穩(wěn)定也會帶給用戶帶來不愉快的聯(lián)網(wǎng)體驗。特別是一些較小眾站點,頁面更新時間長,一旦出現(xiàn)問題修復(fù)時間也長,對用戶影響則尤為明顯。如果可以做到對該類站點實時動態(tài)監(jiān)測,必要時通過代理緩存進行響應(yīng),將大大提升用戶的聯(lián)網(wǎng)體驗。本發(fā)明就是提供一種目標站點訪問的解決方案,保護在聯(lián)網(wǎng)領(lǐng)域(例如,瀏覽器客戶端)的應(yīng)用。
上文中已經(jīng)參考附圖詳細描述了根據(jù)本發(fā)明的目標站點訪問方法、裝置和中轉(zhuǎn)服務(wù)器。
此外,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序,該計算機程序包括用于執(zhí)行本發(fā)明的上述方法中限定的上述各步驟的計算機程序代碼指令?;蛘?,根據(jù)本發(fā)明的方法還可以實現(xiàn)為一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括計算機可讀介質(zhì),在該計算機可讀介質(zhì)上存儲有用于執(zhí) 行本發(fā)明的上述方法中限定的上述功能的計算機程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實現(xiàn)為電子硬件、計算機軟件或兩者的組合。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)和方法的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當注意,在有些作為替換的實現(xiàn)中,方框中所標記的功能也可以以不同于附圖中所標記的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。