この記事では、Laravel での便利なキャッシュ方法の共有に関する関連情報を主に紹介します。必要な方は参考にしてください。
Laravel が提供するキャッシュ ツールは、基本的な使い方をいくつか紹介しています。 get、put、forget、forever など。最初は次のように使用しました。
if (!$article = Cache::get('article_1')) { $article = Article::find(1); Cache::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 ($minutes == 0) { Cache::forever($key,$data); } else { Cache::put($key,$data,$minutes); } } return $data; });
このメソッドは、bootstrap/start.php またはアプリ内フィルターに配置できます。 :before() 、自分のプロジェクトに便利です。使い方を見てみましょう:
$id = Input::get('id'); $article = Cache::want('article_'.$id,0,function() use ($id){ return Article::with('tags')->findOrFail($id,['id','cid','title','content_html as content','created_at','updated_at']); });
私は個人的にこの書き方が好きです。皆さんがこの記事の内容を気に入っていただければ幸いです。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
Laravel Redis 同時にキューを取得する複数のプロセスの問題分析
#
以上がLaravelのキャッシュ方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。