爲何要使用緩存php
一個網站或者一個應用的標準流程是瀏覽器嚮應用服務器發出請求,應用服務器作一些計算和邏輯判斷以後再請求數據庫,數據庫收到請求後在通過計算將數據返回給應用服務器,應用服務器再次計算後把數據返回給瀏覽器web
那麼,隨着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 內容。瀏覽器也不會從新讀取服務器上的資源。
只有當緩存到期,緩存被清除或是強制刷新頁面,纔會獲取最新服務器數據