在 Laravel 裡,透過 Model 可以很輕鬆地幫我們 cache 資料與清除 cache。
首先要先在要執行 cache 的檔案裡讀入這段:
use Illuminate\Support\Facades\Cache;
接著把原本讀取資料改成如下:
$data = Cache::rememberForever('cache_name',function (){ return Model::get(); });
model 就會判斷如果有 cache 就會讀 cache,沒有的話就會去讀資料庫,cache_name 則是 cache 的名稱,每筆資料不能使用重複名稱不然會出錯。
上面是用 rememberForever,理論上會永久存在,如果要讓 cache 一定時間後就消失,可以改成這樣:
Cache::remember('cache_name',300,function(){ return Model::get(); });
就可以設定這個 cache 在幾秒之後消失了,可以依據需求設定值。
cache 最好是在有更動後就清除,可以在 Model 加上這段:
protected static function booted() { static::created(function () { Cache::forget('cache_name'); }); static::updated(function () { Cache::forget('cache_name'); }); static::deleted(function () { Cache::forget('cache_name'); }); }
這段還是要在 Model 內讀入:
use Illuminate\Support\Facades\Cache;
這樣只要一更新資料表,就會清除 cache,很方便。