程 雯,楊 陽,陳 峰
(1.武漢郵電科學(xué)研究院 湖北 武漢 430000;2.武漢虹信技術(shù)服務(wù)有限責(zé)任公司 湖北 武漢 430074)
基于社交網(wǎng)絡(luò)的Web緩存架構(gòu)研究
程 雯1,楊 陽1,陳 峰2
(1.武漢郵電科學(xué)研究院 湖北 武漢 430000;2.武漢虹信技術(shù)服務(wù)有限責(zé)任公司 湖北 武漢 430074)
為了提升用戶在Web訪問過程的體驗,降低網(wǎng)絡(luò)帶寬成本和減輕服務(wù)端負(fù)載,文章從Web訪問過程中本地瀏覽器端、CDN緩存、服務(wù)器端等3個層面來設(shè)計緩存方案,闡述了Web緩存在網(wǎng)絡(luò)中的傳遞過程,深入描述Web緩存的不同策略。通過對Web訪問過程的緩存優(yōu)化,大大降低了用戶訪問時延,提升服務(wù)端性能。
瀏覽器;CDN;緩存策略;服務(wù)器
隨著互聯(lián)網(wǎng)的高速發(fā)展,越來越多的用戶加入到社交網(wǎng)平臺中,用戶數(shù)量級別達(dá)到百萬級,如此龐大的用戶群使后臺服務(wù)器承載的數(shù)據(jù)量越來越多,用戶對Web服務(wù)器的訪問量過大,導(dǎo)致系統(tǒng)難以承受其壓力,用戶訪問時延增加,甚至不能請求到正確內(nèi)容。
由于在現(xiàn)實應(yīng)用場景中,多數(shù)的信息資源是被重復(fù)訪問的,面向應(yīng)用服務(wù)器的緩存系統(tǒng)是必要的,通過詳細(xì)的分析架構(gòu)以及相關(guān)組件對數(shù)據(jù)存取效率的影響,我們就可以選擇更合適、高效的方案建立工程,以期望達(dá)到所研發(fā)產(chǎn)品更實用,獲取數(shù)據(jù)更準(zhǔn)確,得到信息更實時的目的[1-3]。
使用緩存機制除了可以有效地提高服務(wù)的性能之外,還可以降低互聯(lián)網(wǎng)連接減少帶寬占用,減少用戶等待時間提升體驗,降低服務(wù)器端負(fù)載等。
客戶端緩存依賴于瀏覽器的實現(xiàn),目前的絕大多數(shù)瀏覽器都實現(xiàn)了基于HTTP協(xié)議的信息來緩存相應(yīng)的文件。客戶端緩存有兩個階段,本地緩存階段和協(xié)商緩存階段。
圖1 Web緩存基本結(jié)構(gòu)
先在本地查找該資源,如果有發(fā)現(xiàn)該資源,而且該資源還沒有過期,就使用這一個資源,完全不會發(fā)送HTTP請求到服務(wù)器。在HTTP協(xié)議中,使用Expires頭可以在初次訪問之后將這些組件緩存起來,并控制緩存失效的時間,在緩存失效之前,瀏覽器都會使用該次緩存,避免了不必要的HTTP請求。但是Expires規(guī)定的是格里尼治時間,可能會導(dǎo)致服務(wù)端和客戶端的時間不一致問題,所以在HTTP1.1中使用Cache-Control來克服該問題[4-5]。Cache-Control中包含多個關(guān)鍵字,max-age:指定設(shè)置緩存最大的有效時間,定義的是時間長短,單位為s。當(dāng)瀏覽器向服務(wù)器發(fā)送請求后,在max-age這段時間里瀏覽器就不會再向服務(wù)器發(fā)送請求;s-maxage:同max-age,只用于共享緩存 (例如CDN緩存),單位為s;nocache:指定不緩存響應(yīng),表明資源不進(jìn)行緩存,但是設(shè)置了no-cache之后并不代表瀏覽器不緩存,而是在緩存前要向服務(wù)器確認(rèn)資源是否被更改,實際中和private參數(shù)配合設(shè)置瀏覽器端的緩存;no-store:絕對禁止緩存,每次請求資源都要從服務(wù)器重新獲?。籶rivate:響應(yīng)只作為私有的緩存,不能在用戶間共享;public:指定響應(yīng)會被緩存,并且在多用戶間共享。
如果在本地緩存找到對應(yīng)的資源,但是不知道該資源是否過期或者已經(jīng)過期,則發(fā)一個HTTP請求到服務(wù)器,然后服務(wù)器判斷這個請求,如果請求的資源在服務(wù)器上沒有改動過,則返回304,讓瀏覽器使用本地找到的那個資源;具體過程:客戶端請求一個頁面,服務(wù)器返回頁面,并在給該頁面加上一個Last-Modified/ETag,客戶端展現(xiàn)該頁面,并將頁面連同Last-Modified/ETag一起緩存。客戶再次請求該頁面,并將上次請求時服務(wù)器返回的Last-Modified/ETag一起傳遞給服務(wù)器,服務(wù)器檢查該Last-Modified 或 ETag,并 通 過 If-Modified-Since,If-None-Match和ETag判斷資源是否修改,如果自上次客戶端請求之后還未被修改,直接返回響應(yīng)304和一個空的響應(yīng)體,否則直接請求服務(wù)器[6-8]。
在不同地域的用戶訪問網(wǎng)站的響應(yīng)速度存在差異,為了提高用戶訪問的響應(yīng)速度、優(yōu)化因特網(wǎng)中的信息的流動,在客戶端和服務(wù)器間加入了中間層CDN。使用戶能以最快的速度從最接近用戶的地方獲取所需要的信息,大大降低了網(wǎng)絡(luò)擁塞,提升用戶響應(yīng)速度。常見的CDN緩存技術(shù)有Squid,Varnish Cache,NCache等,CDN技術(shù)主要是針對靜態(tài)文件的類型,比如圖片,CSS,JS,HTML 等靜態(tài)文件[9]。
圖2 客戶端請求過程
圖3 CDN工作機制
CDN邊緣節(jié)點緩存策略因服務(wù)商不同而不同,但一般都會遵循HTTP標(biāo)準(zhǔn)協(xié)議,通過HTTP響應(yīng)頭中的Cache-Control:max-age的字段來設(shè)置CDN邊緣節(jié)點數(shù)據(jù)緩存時間[10]。當(dāng)客戶端向CDN節(jié)點請求數(shù)據(jù)時,CDN節(jié)點會判斷緩存數(shù)據(jù)是否過期,若緩存數(shù)據(jù)并沒有過期,則直接將緩存數(shù)據(jù)返回給客戶端;否則,CDN節(jié)點就會向源站發(fā)出回源請求,從源站拉取最新數(shù)據(jù),更新本地緩存,并將最新數(shù)據(jù)返回給客戶端。CDN緩存時間會對“回源率”產(chǎn)生直接的影響。若CDN緩存時間較短,CDN邊緣節(jié)點上的數(shù)據(jù)會頻繁失效,導(dǎo)致回源率拉升,增加了源站的負(fù)載,同時也增大的訪問延時;若CDN緩存時間太長,會帶來數(shù)據(jù)更新時間慢的問題,導(dǎo)致用戶不能獲取最新的內(nèi)容產(chǎn)生訪問異常。我們需要針對特定的業(yè)務(wù),建立業(yè)務(wù)模型計算恰當(dāng)?shù)木彺鏁r間,來做特定的數(shù)據(jù)緩存時間管理[11-12]。
首先,當(dāng)源站內(nèi)容更新時,如果CDN節(jié)點上數(shù)據(jù)未能及時更新,即使用戶在瀏覽器端進(jìn)行強制刷新也不能得到最新的源站內(nèi)容,導(dǎo)致用戶的訪問出現(xiàn)異常。CDN對于不斷變化的資源不適用,在實際的操作中,CDN節(jié)點一定要和源站內(nèi)容保持同步更新。其次,CDN對于不經(jīng)常訪問的資源是無效的。通常只有在CDN緩存過期前有至少兩次訪問的資源才算有效,所以對于訪問數(shù)量級很低的內(nèi)容,并不適用于CDN緩存的策略。最后,對于不想公開的資源CDN緩存的策略可能是一個糟糕的選擇。
緩存技術(shù)的提出,是為了解決內(nèi)存讀寫速度遠(yuǎn)遠(yuǎn)落后于CPU運算速度問題,將待讀取的數(shù)據(jù)預(yù)先放入高速緩存中,CPU讀取數(shù)據(jù)時無需從內(nèi)存中讀取。應(yīng)用層緩存是為了在業(yè)務(wù)層面更快的處理數(shù)據(jù)并返回給用戶要展示的內(nèi)容,通過將更新不是很頻繁,請求頻次高的數(shù)據(jù)放入緩存服務(wù)器中,在用戶請求數(shù)據(jù)時可以實現(xiàn)服務(wù)器端的快速響應(yīng)[13]。
緩存的容量是有限的,當(dāng)緩存的容量不足時,則要清除一些無效的數(shù)據(jù)對象,為了能存儲新的數(shù)據(jù)對象。清除已有的緩存數(shù)據(jù)對象所依照的規(guī)則就是緩存的替換策略。主要的替換策略有先進(jìn)先出(FIFO)、 最近最少使用 (LRU)、 最少使用頻率(LFU)。先進(jìn)先出的策略,認(rèn)為緩存空間中存儲時間最長的數(shù)據(jù)對象,在未來該對象的被訪問的可能最小,越適合被替換[14]。根據(jù)這一原則,緩存服務(wù)器可以根據(jù)緩存可使用空間的大小,將存入時間間隔最大的數(shù)據(jù)對象替換,依照存入緩存服務(wù)器的時間長短依次進(jìn)行數(shù)據(jù)的替換。最近最少使用的策略,認(rèn)為近期沒有被使用的緩存數(shù)據(jù)對象在之后也不會被再次的使用,因此淘汰最近最少使用的緩存數(shù)據(jù)對象。最少使用頻率的策略,認(rèn)為訪問頻率最少的緩存數(shù)據(jù)對象在未來被再次訪問的概率也很低,因此在時間段內(nèi)統(tǒng)計緩存數(shù)據(jù)對象的使用情況,對頻率低的緩存數(shù)據(jù)對象進(jìn)行淘汰[15]。
通過上述的4個方面來討論了Web的整個過程的優(yōu)化,本地瀏覽器緩存充分利用本地存儲技術(shù),降低了HTTP請求的頻度,極大的緩解了應(yīng)用服務(wù)器的訪問壓力;DNS緩存利用各個服務(wù)商提供的邊緣網(wǎng)絡(luò)節(jié)點,極大的平滑了用戶的請求等待時間;服務(wù)端緩存提高了服務(wù)器的計算性能,更快響應(yīng)請求并提供可用數(shù)據(jù)。通過Web訪問過程中各個方面配合調(diào)優(yōu),顯著的提高Web服務(wù)質(zhì)量,進(jìn)而提升產(chǎn)品的競爭力。
圖4 服務(wù)端數(shù)據(jù)對象緩存過程
[1]張開敏.移動Web瀏覽系統(tǒng)的若干關(guān)鍵技術(shù)研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2012.
[2]張旺俊.Web緩存替換策略與預(yù)取技術(shù)的研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2011.
[3]翁美珍.Web服務(wù)中緩存機制的研究與實現(xiàn)[D].北京:北京郵電大學(xué),2014.
[4]肖寧.Web緩存技術(shù)研究與應(yīng)用 [J].計算機光盤軟件與應(yīng)用,2012(18):145,147.
[5]張琛.互聯(lián)網(wǎng)緩存加速系統(tǒng)的研究與應(yīng)用 [D].濟南:山東大學(xué),2015.
[6]張全明.HTTP緩存系統(tǒng)設(shè)計與實現(xiàn)[D].成都:西南交通大學(xué),2013.
[7]鐘艷青.基于Web緩存和預(yù)取技術(shù)的性能優(yōu)化研究[D].贛州:江西理工大學(xué),2014.
[8]吳俊龍.基于對象替換與預(yù)取的Web緩存模型研究[D].長沙:湖南科技大學(xué),2014.
[9]周揚發(fā).Web代理服務(wù)器的緩存技術(shù)研究 [D].北京:北京郵電大學(xué),2014.
[10]李林.賀州移動全業(yè)務(wù)競爭中緩存技術(shù)應(yīng)用的策略研究[D].北京:北京郵電大學(xué),2012.
[11]曹英斌.Web數(shù)據(jù)緩存與預(yù)取一體化的研究與應(yīng)用[D].沈陽:東北大學(xué),2011.
[12]張?zhí)煲?一種CDNWeb緩存系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:北京郵電大學(xué),2013.
[13]王鑫.緩存技術(shù)在Web中的應(yīng)用研究[J].濰坊學(xué)院學(xué)報,2011(4):46-49.
[14]徐術(shù)力,席娜.基于P2P的Web代理緩存技術(shù)在煤炭網(wǎng)絡(luò)中的應(yīng)用[J].煤炭技術(shù),2012(8):154-155.
[15]王艷萍.移動Web客戶端持久化緩存技術(shù)研究[D].武漢:華中科技大學(xué),2013.
Web cache architecture research based on the social networking
CHENG Wen1,YANG Yang1,CHEN Feng2
(1.Wuhan Research Institute of Posts and Telecommunications,Wuhan 430000,China; 2.Wuhan Hongxin Technology Services,LLC,Wuhan 430074,China)
In order to improve the user experience in Web access process,lowering the cost of network bandwidth and alleviate server load,this article from three aspects to design cache scheme,including the local browser Web access process,the CDN cache and the server.This paper expounds the Web caching in the network transmission process,in-depth description different strategy of Web cache.Through the process of Web access to cache optimization,greatly reduces the user access delay,improve server performance.
browser; CDN; caching strategy; server
TP393
A
1674-6236(2017)17-0191-03
2016-07-28稿件編號:201607203
程 雯(1983—),女,湖北黃岡人,碩士,講師。研究方向:軟件工程。