緩存熱點訪問
1. 緩存的命中率有辦法能提高嗎
如果您想提升緩存命中率的話,一是增加緩存,如果所有的數據都緩存了,那命中率自然就高;二是如果緩存空間有限,那最好使用一些緩存策略,比如LRU策略,將緩存時間長,最少使用的緩存給逐出出去,比如memcached這樣的緩存服務。這樣您緩存的數據大多是熱點數據,命中率會提升不少,但如果您的業務場景本身非常隨機,不存在熱點訪問,那使用緩存的意義就不是非常大了。
2. WebCache web的緩存機制
1.webcache的簡單介紹
web緩存,是一種 緩存技術 ,用於臨時存儲(緩存)的網頁文件,如HTML頁面和圖像等靜態資源,減少帶寬以及後端伺服器的壓力,通常一個WebCache也是一個 反向代理軟體 ,既可以通過緩存響應用戶的請求,當本地沒有緩存時,可以代理用戶請求至後端主機。
WebCache分為正向和反向之分,一般正向WebCache不常用,這次主要以反向WebCache為主。
2.webcache的由來
1)由於程序具有局部性,而局部性分為: 時間局部性和空間局部性
A.時間局部性是指:在單位時間內,大部分用戶訪問的數據只是熱點數據(熱點數據指經常被訪問的數據)
B.空間局部性是指:某新聞網站突然出來一個重大新聞,此新聞會被被反復訪問。
3.webcache的變化性
WebCache的新鮮度監測機制 :數據都是可變的,所以緩存中的內容要做新鮮度檢測.
4.緩存相關的HTTP首部:
HTTP協議提供了多個首部用以實現 頁面緩存及緩存失效 的相關功能,這其中最常用的有:
1)Expires:HTTP/1.0,用於指定某web對象的過期日期/時間,通常為GMT格式;一般不應該將此設定過長的時間,一年的長度對大多場景來說足矣;其常用於為 純靜態內容 如JavaScripts樣式表或圖片指定緩存周期;
(2)Cache-Control:為了解決HTTP/1.0中對於新鮮度控制的策略而生,通過相對時間來控制緩存使用期限;
(3)Etag:響應首部,用於在 響應報文中為某web資源定義版本標識符 ;
(4)Last-Mofified:響應首部,用於回應客戶端關於Last-Modified-Since或If-None-Match首部的請求,以通知客戶端其請求的web對象最近的修改時間;
(5)If-Modified-Since:條件式請求首部,基於 請求內容的時間戳作驗正 ,如果後端伺服器數據的時間戳未發生改變則繼續使用,反之亦然.
(6)If-None-Match:條件式請求首部; 通過Etag來跟後端伺服器進行匹配 ,如果數據的Etag未發生改變,既不匹配,則響應新數據,否則繼續使用當前數據.
(7)Vary:響應首部,原始伺服器根據請求來源的不同響應的可能會有所不同的首部,最常用的是 Vary: Accept-Encoding,用於通知緩存機制其內容看起來可能不同於用戶請求時 Accept-Encoding-header首部標識的編碼格式;
(8)Age:緩存伺服器可以發送的一個額外的響應首部,用於指定響應的有效期限;瀏覽器通常根據此 首部決定內容的緩存時長;如果響應報文首部還使用了max-age指令,那麼緩存的有效時長為 「max-age減去Age」的結果;