一、什麼是快取
1、Cache是高速緩衝記憶體一種特殊的記憶體子系統,其中複製了頻繁使用的資料以利於快速存取
2、凡是位於速度相差較大的兩種硬體/軟體之間的,用來協調兩者資料傳輸速度差異的結構,皆可稱為Cache
二、快取的分類
1、基於web應用的系統架構圖
2、在系統架構的不同層級之間,為了加快存取速度,都可以存在快取
作業系統磁碟快取->減少磁碟機械操作
資料庫快取->減少檔案系統I/O
應用程式快取->減少檔案系統I/O
應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少應用程式快取->減少資料庫的查詢
Web伺服器快取->減少應用程式伺服器請求
客戶端瀏覽器快取->減少網站的存取
三、快取
1、快取
4 、特殊的應用程式對檔案系統Disk Cache有很高的要求,會繞過檔案系統Disk Cache,直接存取磁碟分割區,自己實作Disk
5、Cache策略
MySQL的InnoDB: innodb_flush_method = O_DIRECT
四、資料庫快取
1、重要的資料庫量通常非常龐大設定合適的Query Cache會大幅提升資料庫效能
Query Cache並非越大越好,過大的Qquery Cache會浪費記憶體。
MySQL: query_cache_size= 128M
b、Data Buffer
data bj是資料庫資料在記憶體中的容器命中率
3、頁面快取
a、針對頁面的快取技術不但可以減輕資料庫伺服器壓力,還可以減輕應用程式伺服器壓力
好的頁面快取可以極大提高頁面渲染速度
頁面快取的難點
利用模板技術將訪問過一次的動態頁面生成靜態html,同時修改頁面鏈接,下一次請求直接訪問靜態鏈接頁面
動態頁面靜態化技術的廣泛應用於互聯網CMS/新聞類Web應用,但也有BBS應用程式使用該技術,例如Discuz!
無法進行權限驗證,無法顯示個人化資訊
可以使用AJAX請求來彌補動態頁面靜態化的某些缺點
Serlet快取
針對URL存取返回的頁面結果進行緩存,適用於粗粒度的頁面緩存,例如新聞發布
可以進行權限的檢查
OScache提供了簡單的Servlet緩存通過簡單的web. xml中的設定)
也可以自行編程實作Servlet快取
III、頁面內部快取
針對動態頁面的局部內容化快取一些快取的(例如部落格)
OSCache提供了簡單的頁面快取
可以自行擴充JSP Tag實作頁局部快取
六、webc緩存,如squid/nginx
Web伺服器快取技術被用來實現CDN(內容分發網絡content delivery network)
被國內主流門戶網站大量採用
被國內主流門戶網站大量採用
七、基於ajax的瀏覽器快取
只要重新整理目前頁面,就可以直接讀取快取資料