在 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,很方便。