yii中的快取依賴,簡單來說就是將快取和另外乙個東西繫結在一起,如果另外乙個東西發生變化,那麼快取也將發生變化。有點兒類似於js中的觸發事件(但是也不那麼像),快取的變動是依賴的東西所導致的。
依賴可以是檔案、資料庫、甚至是一些表示式。功能十分強大。
yii提供了5中依賴方法,我們這裡介紹其中的3種常用依賴。
顧名思義就是將快取和檔案繫結在一起。如果檔案的內容發生變化,那麼快取將會收到影響。(yii判斷的標準是檔案的最後修改時間)
我們通過例項來演示一下這個過程。
1、首先獲取快取元件
2、例項化filedependency
類(其中檔案依賴名字為:filename
),同時將其賦值給$dependency
變數。這裡,我們將快取和yanying.txt
檔案做關聯,如果yanying.txt
內容發生變化,那麼和之對應的快取將失效,不能訪問。
$dependency = new \yii\caching\filedependency(['filename'=>'yanying.txt']);
3、下面我們在快取中新增乙個key
為file_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、下面我們在快取中新增乙個key
為file_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、下面我們在快取中新增乙個key
為file_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...