Laravel の便利なキャッシュ マクロを共有します
Laravel が提供するキャッシュ ツールは非常に使いやすく、get、put、forget、forever などの基本的な使い方がマニュアルで紹介されています。フォローします:
コードは次のとおりです:
if (!$article = Cache::get('article_1')) {
$article = 記事::find(1);
キャッシュ::forever('article_1',$article);
}
これは最も基本的な使用法です。キャッシュが存在するかどうかを自動的に判断し、存在しない場合はデータベースから取得してキャッシュに書き込みます。
後で、このモデルには remember メソッドと rememberForever メソッドも付属していることがわかりました。例:
コードは次のとおりです:
$article = Article::rememberForever('article_1')->where('id','=',1);
これには制限があり、複雑なクエリ中にデータを完全にキャッシュすることはできません。たとえば、関連データをプリロードするために with() を使用する場合、関連データはキャッシュできません。
その後、Cache も Response のようなマクロ メソッドをカスタマイズできることがわかり、次のことを試してみました:
コードは次のとおりです:
//キャッシュアクセスマクロを登録
Cache::macro('want',function($key,$ minutes=0,$callback){
if (!$data = Cache::get($key)) {
$data = call_user_func($callback);
if ($分 == 0) {
キャッシュ::永久($key,$data);
} その他 {
キャッシュ::put($key,$data,$ minutes);
}
}
$data を返します;
});
このメソッドは bootstrap/start.php に配置することも、フィルター内の App::before() に配置することもできます。これを使用する方法を見てみましょう。
コードは次のとおりです:
$id = 入力::get('id');
$article = Cache::want('article_'.$id,0,function() use ($id){
return Article::with('tags')->findOrFail($id,['id','cid','title','コンテンツとしての content_html','created_at','updated_at']);
});
個人的にはこの書き方が好きです。皆さんがこの記事の内容を気に入っていただければ幸いです。
http://www.bkjia.com/PHPjc/962932.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/962932.html技術記事 Laravel で便利なキャッシュ マクロを共有します。 Laravel が提供するキャッシュ ツールは、get、put、forget、forever などの基本的な使い方を紹介しています。最初は次のような感じでした。