ホームページ >PHPフレームワーク >Laravel >Laravel でクエリ キャッシュを使用する方法を説明する例
Web アプリケーションの開発に伴い、データの規模は増大し続けており、データベース クエリにますます時間とリソースがかかるようになってきています。各クエリではデータベースから大量のデータを取得する必要があるため、多くのアプリケーションではデータのクエリと表示が遅くなります。
Laravel 開発者として、私たちはクエリ、特にページネーションクエリを最適化する方法という問題によく直面します。 Laravel は、クエリ キャッシュというソリューションを提供します。
クエリ キャッシュを使用すると、同じ条件を複数回クエリしたときに結果をキャッシュできるため、不要なクエリとデータベースの負荷を回避できます。これは、頻繁に大量のデータをクエリする必要がある大規模な Web アプリケーションに特に役立ちます。
Laravel では、クエリのキャッシュはキャッシュ ファサードを通じて実装されます。キャッシュ ファサードは、File、Memcached、Redis などを含むさまざまなキャッシュ ドライバーで使用できます。 Laravel は現在の状況に最適なキャッシュドライバーを自動的に選択します。
Laravel でクエリ キャッシュを使用する方法を示す例を見てみましょう。
まず、モデルでクエリを定義する必要があります。例:
namespace App; use Illuminate\Database\Eloquent\Model; class Product extends Model { public function getPriceRange($minPrice, $maxPrice) { return $this->whereBetween('price', [$minPrice, $maxPrice]) ->orderBy('price', 'desc') ->paginate(10); } }
上の例では、$minPrice と $minPrice の間の価格製品を選択する「getPriceRange」というクエリを定義しました。 $maxPrice。さらに、結果を降順に並べ替え、Laravel のページネーション機能を使用して、結果をページごとに 10 に分割します。
これで、コントローラーでこのクエリを呼び出してキャッシュできるようになり、次回クエリするときにすぐにアクセスできるようになります。これを行うには、キャッシュ ファサードを使用できます。
namespace App\Http\Controllers; use App\Product; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; class ProductController extends Controller { public function index(Request $request) { $minPrice = $request->input('min_price'); $maxPrice = $request->input('max_price'); $key = 'price_range_' . $minPrice . '_' . $maxPrice; $minutes = 60; $products = Cache::remember($key, $minutes, function() use ($minPrice, $maxPrice) { return (new Product)->getPriceRange($minPrice, $maxPrice); }); return view('products.index', ['products' => $products]); } }
上記のコードでは、キャッシュ ファサードの「remember」メソッドを使用してクエリ結果をキャッシュします。最初のパラメータはキャッシュ キーとして使用する文字列、2 番目のパラメータは結果をキャッシュする分数、3 番目のパラメータはクエリの結果を返すクロージャです。
これは、同じ価格帯をクエリする別のリクエストがある場合、Laravel はキャッシュから直接結果を返すことを意味します。これにより、アプリケーションのパフォーマンスと速度が大幅に向上します。
クエリ キャッシュは、Laravel の非常に便利な機能です。これを使用すると、不必要なクエリとデータベースの負荷を回避し、アプリケーションのパフォーマンスと速度を向上させることができます。この簡単なトリックをマスターすることで、開発者のキャリアをより簡単で楽しいものにすることができます。
以上がLaravel でクエリ キャッシュを使用する方法を説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。