Laravel 4 には、クエリ ビルダーにクエリ キャッシュが組み込まれています。add ->remember()
アプリケーション内のすべてのデータベース呼び出しに追加せずに、このメソッドをアプリケーション内のすべてのクエリに適用する方法を誰か教えてもらえますか? ある種のアフターフィルターだと思います。->remember()
クエリ ビルダーを拡張し、get()
メソッドを単純にオーバーロードして、最初に を呼び出しremember()
、次にget()
ステートメントを実行できる場合があります。
ただし、実際には、すべてのクエリをキャッシュする場合は、データベース レベルでこれを実行することもできます。たとえば、MySQL には、すべてのクエリを一定時間自動的にキャッシュする設定オプションがあります。ただし、多くの挿入/更新/削除を行うアプリケーションでは、そのような呼び出しのたびにそのテーブルのキャッシュがクリアされるため、パフォーマンスが低下します。
すべてのクエリに Laravel を使用すると、その間に挿入/更新/削除を行うと古いデータを取得することになるため、更新するたびにキャッシュをクリアする必要があります。
ベスト プラクティスは、クエリをキャッシュするかどうかを慎重に決定することです。