為什么要使用緩存
? ? ? ?一個網站或者一個應用的標準流程是瀏覽器向應用服務器發出請求,應用服務器做一些計算和邏輯判斷之后再請求數據庫,數據庫收到請求后在經過計算將數據返回給應用服務器,應用服務器再次計算后把數據返回給瀏覽器
? ? ? ?那么,隨著web業務的復雜度和并發量的增加,應用服務器所做的計算和邏輯處理越來越多,而應用服務器的資源是有限的,且數據庫每秒接受并處理請求的次數也是有限的。為了在有限的資源提供盡可能多的吞吐量,就是減少計算量,縮短請求流程(減少網絡I/O或硬盤I/O)。這時,就用到了緩存(Cache)
緩存三大要素 ?
1. 命中率
百度百科:終端用戶訪問加速節點時,如果該節點有緩存住了要被訪問的數據時就叫做命中,如果沒有的話需要回原服務器取,就是沒有命中。取數據的過程與用戶訪問是同步進行的,所以即使是重新取的新數據,用戶也不會感覺到有延時。 命中率=命中數/(命中數+沒有命中數), 緩存命中率是判斷加速效果好壞的重要因素之一
2. 更新緩存策略
一般更新?緩存廁策略有三種:
FIFO,最先被緩存的數據,在緩存空間不足的情況下會被先清除
LFU,最少使用的元素會被清除,在緩存空間不足的情況下會先清除最少使用的數據,即hit值最好的元素
LRU,最近最少使用的元素會被清除,當緩存空間不足時,最近最少使用的元素將被清除
3. 緩存最大數據量
換存方式
1. 文件緩存
文件緩存就是把緩存數據存儲到文件系統即硬盤中。文件緩存優點
磁盤容量大,價格低
磁盤比內容更穩定可靠,斷電后不會丟失數據,存儲也比較簡單
固態硬盤的讀寫速度也比較快
容易擴展
文件緩存的開源產品Secache,用PHP實現的key-value數據庫,安裝鍵值對的方式存儲到文件
下載地址:https://code.google.com/archive/p/secache/downloads
特點:
PHP實現,無需任何擴展
使用LRU算法自動清除過期內容
最大支持1GB緩存文件
使用hash定位,讀取快
使用方法,示例代碼testSecache.php
目錄結構:
運行結果
2. 客戶端緩存
客戶端緩存或Web緩存根據請求保存輸出內容的副本,例如HTML頁面,圖片,文件等。當下一次相同的請求過來時,不需要再向服務器發送請求,而是直接使用這些副本。這些副本是瀏覽器實現的,將服務器返回的這些資源保存在本地硬盤上。
客戶端換出示例代碼
訪問index.php頁面
點擊aaa超級連接,顯示測試數據。
在當前頁面點擊瀏覽器的返回按鈕到,在點擊aaa超鏈接。不會再向服務器發送請求,而是直接調用存儲在本地的緩存頁。即使改變webcache.php中的echo 內容。瀏覽器也不會重新讀取服務器上的資源。
只有當緩存到期,緩存被清除或是強制刷新頁面,才會獲取最新服務器數據