ホームページ  >  記事  >  PHPフレームワーク  >  Laravelで静的ページをキャッシュする方法

Laravelで静的ページをキャッシュする方法

PHPz
PHPzオリジナル
2023-04-23 09:18:061004ブラウズ

Laravel は、PHP 開発者に最も広く使用されているフレームワークの 1 つで、強力な機能と柔軟な構成を備えています。 Laravel ベースのアプリケーションを構築するとき、Web サイトのパフォーマンスを向上させるためにいくつかの静的ページをキャッシュする必要がある場合があります。

この記事では、Laravel のキャッシュ機能を使用して静的ページをキャッシュし、それによってアプリケーションのパフォーマンスと応答時間を向上させる方法を説明します。このタスクは 2 つのステップで達成しようとします。まず、Laravel のキャッシュ ドライバーを構成し、次に静的ページをキャッシュするミドルウェアを作成します。

1. キャッシュドライバーの設定

Laravel は、Redis、Memcached、APC、ファイル キャッシュなど、さまざまなキャッシュ ドライバーをサポートしています。特定の状況に基づいて、適切なキャッシュ ドライバーを選択できます。この例では、ファイル キャッシュ ドライバーを使用して静的ページをキャッシュします。

まず、config/cache.php 構成ファイルで、デフォルトのキャッシュ ドライバーをファイル キャッシュ ドライバーに変更する必要があります。コードは次のとおりです:

'default' => env('CACHE_DRIVER', 'file'),

次に、構成ファイルで/cache .php 構成ファイルで、キャッシュ ファイルのストレージ パスを指定する必要があります。コードは次のとおりです:

'path' => storage_path('framework/cache/data'),

Laravel のキャッシュ ドライバーを構成したので、ミドルウェアの構築を開始できます。静的ページをキャッシュします。

2. ページをキャッシュするためのミドルウェアを作成する

Laravel では、ミドルウェアは HTTP リクエストの処理の重要な部分です。ミドルウェアを使用して、リクエストのフィルタリング、ヘッダー情報の追加、Cookie の設定などを行うことができます。この例では、静的ページをキャッシュするミドルウェアを作成します。

まず、静的ページをキャッシュするための「CachePage」というミドルウェアを作成する必要があります。次のコマンドを使用して新しいミドルウェアを生成できます:

php artisan make:middleware CachePage

上記のコマンドを実行すると、Laravel は「CachePage.php」という名前のファイルを自動的に作成し、app/Http/Middleware ディレクトリの中央に配置します。ファイルを開き、ハンドル メソッドに次のコードを追加します。

public function handle($request, Closure $next)
{
    // 检查此请求是否可以缓存
    if (! $this->shouldCache($request)) {
        return $next($request);
    }

    // 获取此请求的缓存键
    $key = $this->getCacheKey($request);

    // 尝试从缓存中获取此请求的页面
    if (Cache::has($key)) {
        return response(Cache::get($key));
    }

    // 如果没有从缓存中获取到,那么就处理请求并将结果缓存下来
    $response = $next($request);
    if ($this->shouldCacheResponse($response)) {
        Cache::put($key, $response->getContent(), $this->getCacheLifetime());
    }

    return $response;
}

// 检查此请求是否可以缓存
protected function shouldCache($request)
{
    if (!$request->isMethod('get')) {
        return false;
    }

    if ($request->query->count()) {
        return false;
    }

    if (auth()->check()) {
        return false;
    }

    if (config('app.env') === 'local') {
        return false;
    }

    return true;
}

// 获取此请求的缓存键
protected function getCacheKey($request)
{
    return 'cache:' . $request->url();
}

// 检查此请求的响应是否可以缓存
protected function shouldCacheResponse($response)
{
    return $response->status() === 200;
}

// 获取页面缓存的生存时间
protected function getCacheLifetime()
{
    return config('cache.page_cache_lifetime');
}

さて、上記のコードをステップごとに説明します。

  • 最初に、このリクエストがキャッシュできるかどうかを確認します。 。キャッシュする必要があるのは、GET リクエスト、クエリ パラメータのないリクエスト、認証されていないリクエスト、および非ローカル環境のリクエストのみです。
  • このリクエストをキャッシュできると判断した場合は、キャッシュ キーを取得します。この例では、リクエストされた URL をキャッシュ キーとして使用します。
  • 次に、このページをキャッシュから取得しようとします。キャッシュからページを取得できた場合は、それを返し、他のプロセスを中止します。
  • ページをキャッシュから取得できない場合は、リクエストを処理し、結果をキャッシュします。最後に処理結果を返します。

次に、このミドルウェアを Kernel.php ファイルに登録します。その登録コードを $routeMiddleware 配列に追加します。コードは次のとおりです:

'cache.page' => \App\Http\Middleware\CachePage::class,

これで、アプリケーションが CachePage ミドルウェアと一致するルートを処理するたびに、ミドルウェアは処理結果をキャッシュし、それをファイルシステム。次のリクエストが来ると、ミドルウェアはキャッシュからページを取得し、結果をすぐに返します。

概要

この記事では、Laravel のキャッシュ機能を使用して静的ページをキャッシュする方法を説明しました。まずLaravelのキャッシュドライバーを設定し、次に静的ページをキャッシュするミドルウェアを作成しました。プロセス全体を通じて、いくつかのベスト プラクティスと実際の使用例に焦点を当て、アプリケーションを最適化して最適なパフォーマンスと応答時間を確保する方法を示します。

以上がLaravelで静的ページをキャッシュする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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