PHP 緩存詳解

爲何要使用緩存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 內容。瀏覽器也不會從新讀取服務器上的資源。

只有當緩存到期,緩存被清除或是強制刷新頁面,纔會獲取最新服務器數據

原文地址:https://www.jianshu.com/p/7665175d0ddd

相關文章
相關標籤/搜索