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

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

PHPz
リリース: 2023-04-23 09:43:21
オリジナル
1103 人が閲覧しました

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

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

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

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

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

1

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

ログイン後にコピー

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

1

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

ログイン後にコピー

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

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

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

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

1

php artisan make:middleware CachePage

ログイン後にコピー

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

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 配列に追加します。コードは次のとおりです:

1

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

ログイン後にコピー

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

概要

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート