検索
ホームページPHPフレームワークLaravelLaravel でクエリ キャッシュを使用する方法を説明する例

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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新のLaravelバージョン:新しいものを発見してください最新のLaravelバージョン:新しいものを発見してくださいMay 12, 2025 am 12:15 AM

LARAVEL10INTRODUCESSERALKEYFEATURESTENHANCEWEBDEVELOPMENT.1)LAZYCOLLECTIONSSALLECTIONSSALLOWECTIONSALLOWESPICIENTPROCESSINGOFLAREDATASETSWITHOUTLECORDSINTOMEMORY.2)The'Make:Model and-Migration'ArtisAncommandSimplifiesingModElsandmigrations.3)Integration

Laravel移行の説明:データベースの作成、変更、管理Laravel移行の説明:データベースの作成、変更、管理May 12, 2025 am 12:11 AM

laravelmigrationsは、開発の測定を行う必要があります

Laravel Migration:使用する価値はありますか?Laravel Migration:使用する価値はありますか?May 12, 2025 am 12:10 AM

はい、laravelmigrationsworthusing.itsimplifiesdatabaseschemamamanagement、entancescollaboration、およびprovidesversioncontrol.useitfortructured、efficientdevelopment。

Laravel:Soft Deletes Performanceの問題Laravel:Soft Deletes Performanceの問題May 12, 2025 am 12:04 AM

softdeletesinlaravelimpactperformancebycomplicating complicating andincreasingstorageneeds.tomitigatetheseissues:1)indexthedeleted_atcolumntospeedupqueries、2)useegerloadingtoreducequerycount、and3)remulationcleanupsoftedededtomentaindatabaseefiefie

Laravelの移行は何に適していますか?ユースケースとメリットLaravelの移行は何に適していますか?ユースケースとメリットMay 11, 2025 am 12:14 AM

laravelMigrationSareBenefisialForversionControl、Collaboration、およびProMotingGoodDevelopmentPractices.1)TheyThealOwTrackingBackDatabaseChanges.2)MigrationSensureTeamMembers'schemasStaysized.3)

Laravelでソフト削除の使用方法:データの保護Laravelでソフト削除の使用方法:データの保護May 11, 2025 am 12:14 AM

Laravelのソフト削除機能は、実際の削除ではなくレコードをマークすることによりデータを保護します。 1)softdeletestraitを追加し、フィールドをモデルに削除します。 2)delete()メソッドを使用して、delete()メソッドを使用してdeleteをマークし、復元します。 3)withtrashed()またはonlytrashed()を使用して、クエリ時にソフト削除レコードを含めます。 4)パフォーマンスを最適化するために一定期間を超えたソフト削除レコードを定期的に削除します。

Laravelの移行とは何ですか?それらをどのように使用しますか?Laravelの移行とは何ですか?それらをどのように使用しますか?May 11, 2025 am 12:13 AM

laravelMigrationSareversionControlfordatabaseChemas、avainwedReproducible andReversiblechanges.tousethem:1)createamigration with'phpartisanmake:migration '、2)defineschemachangesinthe'up()' methodandrealin'dod()

Laravel Migration:ロールバックは機能しません、何が起こっていますか?Laravel Migration:ロールバックは機能しません、何が起こっていますか?May 11, 2025 am 12:10 AM

laravelMigrationsmayfailtorollbackduetodategrityissues、foreignkeyconstraints、orirReversiblecoctions.1)datagegrityissuescurifigriverigrignigrationaddsdatatatcan'tcan'tcan、likecolumnwithadeadefaultvalue.2)foreientkeycostriantsscanpretrolllolllolllolllolllolllolllollblacksifrelatio

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。