web中緩存的幾種方式

看了構建高性能的web站點一書,對其中的集中web緩存進行一個總結

1 應用程序實現的動態頁面緩存

應用程序把動態文件生成的html文件緩存到文件服務器,以後用戶請求動態文件,直接從文件服務器加載對應的靜態緩存的html文件返回給用戶,這裏面主要節省了動態語言的執行時間和數據庫訪問時間。但是會增加了緩存框架的加載和緩存查找的時間。

 

2 把解釋執行的開發語言編譯成爲目標代碼

這個主要把解釋執行的高級語言,例如java,php直接編譯成爲平臺相關的目標代碼,彙編代碼。在java裏面,比較著名的就是即時編譯器(JIT),其他的語言也要類似的機制。這裏面主要節省了就是解釋執行代碼的時間。這個會增加即時編譯的時間。

 

3 利用反向代理服務器的緩存

利用類似nginx的反向代理服務器,對請求的url對應的輸出的進行緩存。這個緩存和應用程序實現的動態頁面緩存類似,只不過用反向代理充當了應用程序的緩存實現。主要節省了動態餘元執行時間和數據庫訪問時間。

 

4 客戶端瀏覽器緩存

客戶端瀏覽器緩存主要是通過在http頭部增加

Last-Modified,If-Modified-Since,Expires,Cache-Control等標識,和服務器進行協商,是否是採用客戶的本機緩存來實現。

其中這裏面也會分爲三種方式

1 通過Last-Modified,If-Modified-Since方式和服務器通信,客戶發出http請求中包含If-Modified-Since,如果服務器端代碼沒有修改,服務器端返回302響應代碼的請求響應頭(內容不返回)客戶端則直接用本機緩存的內容緩存顯示結果。相當於節省了服務器執行代碼時間以及數據傳輸時間。

2 通過Expires,Cache-Control控制,客戶端發現如果上次請求的頁面還未過期,通過Expires或者Cache-Control進行辨別,則直接顯示本機緩存的內容,不與服務器進行通信。

 

總結一下:1 一般的高併發的應用程序,都在web層採用了以上幾種緩存,一般靜態資源(圖片,js,css)都會採用nginx反向代理+客戶端緩存來實現。

              2  對於門戶網站,尤其是首頁的新聞,一般都會緩存起來,可以通過反向代理也可以通過應用程序緩存實現方式

              3 對於下載或者視頻網站,由於數據傳輸比較大,直接採用瀏覽器本地緩存實現。

發佈了175 篇原創文章 · 獲贊 1 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章