Squid如何提高命中率
?
緩存命中
1.緩存時間設置,顧名思義,緩存時間設置的越長那么命中率也會相對較高。
緩存與更新是一對矛盾的概念,既要做到高命中又要做到快速更新這個就需要自己對自己網站內容的了解然后指定合適的緩存策略。
2.緩存能緩存的內容,什么是能緩存的內容呢?我認為所有用戶訪問都是一樣的,這種文件都可以緩存,除了時間等實時變化內容。例如有些動態文件實際上也可以緩存,另外還有些特殊類型的url也可以緩存如 "http://abc.com/aa.swf?=參數" 等類似的url,忽略掉參數緩存成一份文件。
3.注意vary頭部,一般來說我們配置了vary:accept-econding。實際上這樣會緩存四五份文件,每一種用戶請求頭中的accept-econding都會使squid緩存一份文件。各個瀏覽器的請求頭部格式不一樣,因此緩存的份數也不一樣。那么例如有的網站配置了vary:uesr-agent,那就悲劇了。
4.URL-Hash能夠提高多臺緩存服務器集群情況下的命中,使每臺機器上都緩存不一樣的文件,提高存儲利用率和命中率。
用戶命中
實際上不僅CDN架構會有命中的概念,用戶瀏覽器也會對網頁文件進行緩存,提高用戶cached也很重要。
1.設置有效時間;在能緩存的文件HTTP頭部添加expire頭部或max-age頭部,不要小看這個配置,這個配置能為你的網站節省大量的流量,在用戶行為里經常會使用瀏覽器前進或后退功能,如果沒有添加這些頭部會產生一個驗證請求到上游服務器,添加了瀏覽器驗證是在有效時間內則直接調用瀏覽器緩存。
2.源站命中
? ? 文件更新驗證;為什么我們刷新網站一般都會比第一次打開網站快的多?瀏覽器知道我們是經常請求重復文件,會有一個驗證機制,如果超過了瀏覽器緩存時間或點擊刷新都會產生很多驗證請求。驗證請求中最主要的就是if-modify-since和if-none-match頭部,對應的是響應文件的Last-modify和Etag頭部
? ? 如果說只有單一的源站這些可能都不是問題,如果有多臺源端服務器,那么last-modify時間可能會是不一樣的即使文件內容一樣。此時源站可以通過URL Hash或僅使用Etag來作為文件驗證的標準。
? ? 既然說到Etag,那就再提兩句。Etag主要解決文件驗證的單一性,如果你的Etag標簽里是按照時間戳生成的那就悲劇了。一般情況下web服務器會同時驗證last-modify和Etag,只有兩個條件都滿足才會返回304狀態碼。
總結
以上是生活随笔為你收集整理的Squid如何提高命中率的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 修改squid的Header中的X-Ca
- 下一篇: 玉镯多少钱啊?
