快取技術之 Yii2效能優化之 快取依賴

2021-08-22 12:17:24 字數 2652 閱讀 2222

yii中的快取依賴,簡單來說就是將快取和另外乙個東西繫結在一起,如果另外乙個東西發生變化,那麼快取也將發生變化。有點兒類似於js中的觸發事件(但是也不那麼像),快取的變動是依賴的東西所導致的。

依賴可以是檔案、資料庫、甚至是一些表示式。功能十分強大。

yii提供了5中依賴方法,我們這裡介紹其中的3種常用依賴。

顧名思義就是將快取和檔案繫結在一起。如果檔案的內容發生變化,那麼快取將會收到影響。(yii判斷的標準是檔案的最後修改時間)

我們通過例項來演示一下這個過程。

1、首先獲取快取元件

2、例項化filedependency類(其中檔案依賴名字為:filename),同時將其賦值給$dependency變數。這裡,我們將快取和yanying.txt檔案做關聯,如果yanying.txt內容發生變化,那麼和之對應的快取將失效,不能訪問。

$dependency = new \yii\caching\filedependency(['filename'=>'yanying.txt']);

3、下面我們在快取中新增乙個keyfile_key,給其的值為hello world。同時將過期時間設定為3000秒,最後乙個引數寫上$dependency依賴。

$cache->add('file_key','hello world',3000,$dependency);

4、在3000秒之內,我們重新整理網頁。一直可以獲取到file_key的值為hello world

$cache->get('file_key'); //

hello world

5、這時,我們改變yanying.txt檔案內的值。儘管快取並沒有過期,我們也無法獲取到快取的值。因為依賴的檔案發生了變化,快取即被失效。

var_dump($cache->get('file_key')); //

false

表示式依賴是將表示式運算過後的值和快取捆在一起形成依賴,當表示式值發生變化時候,快取將受到影響

1、同上獲取快取元件

3、下面我們在快取中新增乙個keyfile_key,值為hello world。同時將其過期時間設定為3000秒之後,最後乙個引數寫上$dependency依賴。

$cache->add('file_key','hello world',3000,$dependency);

4、在3000秒之內,我們重新整理網頁,同上,一直可以獲取到file_key的值為hello world

$cache->get('file_key'); //

hello world

var_dump($cache->get('file_key')); //

false

db依賴也是實際生產中最常接觸的一種依賴,我們可以將sql語句直接作為依賴條件。當資料庫查詢出的內容發生變化時候,快取即會受到影響。

依此,我們可以通過此方法來判斷我們快取的資料是否需要更新,當資料庫有變化內容時候,我們更新快取。

1、首先還是獲取快取元件

2、例項化dbdependency類(db依賴名為:sql)。同時將其賦值給$dependency變數。其中sql對應的值是直接可執行的sql語句。

$dependency = new \yii\caching\dbdependency(['sql'=>'select count(*) from user']);

3、下面我們在快取中新增乙個keyfile_key,值為hello world。同時將其過期時間設定為3000秒之後,最後乙個引數寫上$dependency依賴。

$cache->add('file_key','hello world',3000,$dependency);

4、假設資料庫資料一直沒有發生變化,那麼3000秒之內此快取不會發生任何變化。我們可以通過下面**直接獲取值hello world.

$cache->get('file_key'); //

hello world

5、這時,如果資料庫新增了一條新的資料,那麼此快取即將失效,無法獲取。這裡sql依賴判斷標準是查詢結果,我們這裡使用了記錄的條數,你也可以直接使用select * from table只要結果發生變化,都會影響快取

var_dump($cache->get('file_key')); //

false

這時我們也可以愉快的重新獲取資料庫值,進行新的快取啦。

快取技術之 Yii2效能優化之 快取依賴

yii中的快取依賴,簡單來說就是將快取和另外乙個東西繫結在一起,如果另外乙個東西發生變化,那麼快取也將發生變化。有點兒類似於js中的觸發事件 但是也不那麼像 快取的變動是依賴的東西所導致的。依賴可以是檔案 資料庫 甚至是一些表示式。功能十分強大。yii提供了5中依賴方法,我們這裡介紹其中的3種常用依...

Yii2效能優化之 類的延遲載入技術介紹

yii框架號稱最高效的php框架,執行效率高出其他框架很多。據官方介紹,yii框架廣泛的使用了一種叫做延遲載入的技術,從而達到這樣的效果。下面我們就通過例項詳細的來介紹一下這個技術 首先我們在www目錄新建2個類class1 class2和乙個index.php檔案。在class1和class2中我...

Yii2 應用結構之模組

定義的模組 namespace useyii class module extends yii base module 應用模組 配置模組 modules article 訪問模組 獲取模組的例項 var dump module id 獲取模組的id 獲取id為 article 的模組 var du...