【PHP/Laravel】Laravel パフォーマンス改善|キャッシュの仕組みと設定方法

PHP / Laravel

Laravel でパフォーマンスを改善してくれる キャッシュ どんなものなのかな?

今回は、一度取得・計算したデータを一時的に保存し、再利用する仕組み である キャッシュ について、基本的な仕組みLaravel での設定方法 までをわかりやすくご紹介します。

Laravel環境構築がまだの場合 は、下記より Laravel環境構築 を行なってください。

キャッシュ とは?

キャッシュ とは、一度取得・計算したデータを一時的に保存しておき、次回以降はそのデータを再利用することで処理を高速化できる仕組み のことです。

例えば、同じデータを何度もデータベースや外部APIから取得する代わりにキャッシュに保存しておいたデータを使う ことで処理を省略でき、レスポンス速度の向上やサーバー負荷の軽減 につながります。

特に、更新頻度が低いデータや重い処理 などに対して、非常に効果的です。

キャッシュ が設定されていない場合の処理とイメージ図

キャッシュ が設定されていない 場合、リクエストのたびにデータベースへアクセスしてデータを取得する必要がある ため、同じデータであっても毎回処理が実行され、レスポンスが遅くなったり、サーバーに負荷がかかる原因 となってしまいます。

特に アクセス数が増えると、データベースへの負荷が大きくなり、パフォーマンス低下の原因 にもなります。

DBアクセスの場合

キャッシュ が設定されている場合の処理とイメージ図

キャッシュ が設定されている 場合、初回のリクエスト時にデータベースから取得したデータをキャッシュに保存し、2回目以降のリクエストでは、データベースではなくキャッシュからデータを取得するため、処理を高速化することができます。

その結果、データベースへのアクセス回数が大幅に減り、レスポンス速度の向上やサーバー負荷の軽減 につながります。

キャッシュ利用したDBアクセスの場合

キャッシュ が設定されている場合のコード例

キャッシュ を設定する例 として、Postモデル(postsテーブル)Userモデル(usersテーブル) としているため、モデルやテーブル、ダミーデータなどまだ準備していない場合 は、下記を参考にご準備ください。

コード例

Laravel では、キャッシュ の取得と保存をまとめて行える Cache::remember がよく使われます。このメソッドを使うことで、キャッシュが存在する場合はそれを取得し、存在しない場合はデータを取得してキャッシュに保存するという処理を自動で行う ことができます。

※ 実行時間の差分確認のため、簡易的に microtime関数を使って計測 し「routes/web.php」に記述しています。

実際の実行時間

localhost/cacheにアクセスする と、実行時間は更新するたびに変わりますが、平均でキャッシュの設定無しの場合は「0.0160 秒」前後ぐらい、キャッシュの設定有りの場合は「0.0084 秒」前後ぐらい になります。

キャッシュの設定無しの場合



キャッシュの設定有りの場合

キャッシュ の保存・取得・削除を行うためのメソッド

Laravel では、Cache::remember 以外にも、キャッシュ保存・取得・削除を行うためのメソッド が用意されているので、ご紹介します。

キャッシュ の主な使用用途

  • 基本 → Cache::remember(最もよく使う)
  • キャッシュの手動管理 → Cache::put / Cache::get / Cache::forget
  • キャッシュの存在確認 → Cache::has

put や forget を使うケース

Cache::remember は便利ですが、更新処理のタイミングで キャッシュ を削除したい場合特定の条件でキャッシュを制御したい場合putforget を組み合わせて使うこともあります。

更新時に キャッシュ を削除する場合

データを更新した場合は、キャッシュ も最新の状態にする必要がある ため、データ更新後に キャッシュ を削除し、次回アクセス時に最新データを再取得させる ようにします。

別の処理でデータが更新されている可能性もある ため、put で更新することも可能ですが、基本的には forget を使って削除する方法が推奨 されています。

条件によって キャッシュ を保存する場合

特定の条件でのみ キャッシュ を保存したい 場合は、put を使って保存 する。

キャッシュ の存在を確認して処理を分ける場合

has を使うことで、キャッシュ の有無によって処理を分岐すること ができます。
Cache::remember と同じ処理 になります。

補足: キャッシュキー の設計方法

キャッシュキー とは、キャッシュ識別するための名前のこと です。
キャッシュキーの設計が適切でない 場合、以下のような問題が発生する可能性があります。

  • 別のデータなのに同じキーを使ってしまう
  • 条件が異なるのに同じキャッシュを使ってしまう
  • 削除したいキャッシュを特定できない

そのため、用途・条件・IDなどを含めたルールをあらかじめ決めておくことが重要 です。

まとめ

今回は、一度取得・計算したデータを一時的に保存しておき、次回以降はそのデータを再利用する仕組み である キャッシュ についてご紹介しましたが、いかがでしたでしょうか?

キャッシュ を活用することで、更新頻度が低いデータや重い処理 に対して、保存しておいたデータを再利用できる ため、処理を高速化サーバー負荷の軽減 につながり、非常に効果的 です。

まずは、キャッシュ の基本的な仕組みを理解し、キャッシュの有無による実行時間レスポンスの違いを確認 しながら、Laravel アプリケーションの パフォーマンス改善 に役立てていきましょう。

公式サイト

Laravel 12.x キャッシュ

12.x キャッシュ Laravel
tachu × tachu

Laravel / React フルスタックエンジニア

Webエンジニア歴15年、フリーランス歴8年で、PHP / Laravel を中心に、
React.js / Vue.js を用いたフルスタックでのWeb開発をしています。

技術記事は Laravel / React / Web開発 を中心に書いています。

Webサービスの開発、既存システム改善、機能追加、技術相談、小規模な開発など、お気軽にご相談ください。

PHP / Laravel
シェアする

コメント

タイトルとURLをコピーしました