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 對於下載或者影片網站,由於資料傳輸比較大,直接採用瀏覽器本地快取實現。
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 對於下載或者影片網站,由於資料傳輸比較大,直接採用瀏覽器本地快取實現。