Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
生徒
「Symfonyって動かすと速いって聞くんですが、どうしてなんですか?」
先生
「その理由の一つがキャッシュです。Symfonyはキャッシュを上手に使って、同じ処理を何度もやらないようにしています。」
生徒
「キャッシュって、なんとなく難しそうなイメージがあります…」
先生
「大丈夫です。HTTPのキャッシュと、アプリの中のキャッシュに分けて考えると、とてもシンプルですよ。」
1. キャッシュとは何か?
キャッシュとは、一度作った結果を保存して、次からはそれを再利用する仕組みのことです。身近な例で言うと、毎日同じ道で学校や会社に行くとき、最初は迷っても、何度も通るうちに頭に道を覚えますよね。その「覚えた道」がキャッシュです。
プログラムでも同じで、毎回同じ計算や同じデータ取得をすると時間がかかります。そこで結果を保存しておくことで、表示を速くし、サーバーの負担も減らせます。Symfonyはこのキャッシュ機構がとても充実しているフレームワークです。
2. Symfonyのキャッシュは大きく2種類ある
Symfonyのキャッシュ管理は、大きく分けてHTTPキャッシュとアプリケーションキャッシュの2つがあります。難しそうな言葉ですが、役割が違うだけです。
HTTPキャッシュは「ブラウザや通信の世界」で使われるキャッシュです。一方、アプリケーションキャッシュは「Symfonyアプリの内部」で使われます。この2つを分けて理解することで、Symfonyの動きが一気に見えやすくなります。
3. HTTPキャッシュの基本(ブラウザ側の保存)
HTTPキャッシュは、ブラウザがページの内容を一時的に保存する仕組みです。例えば、ニュースサイトを開いたあと、すぐ戻るボタンで戻ると、瞬時に表示されることがあります。これはブラウザが内容を覚えているからです。
Symfonyでは、レスポンスに「このページは何秒使い回していいですよ」という情報を付けることができます。
use Symfony\Component\HttpFoundation\Response;
$response = new Response('こんにちは');
$response->setMaxAge(60);
return $response;
この例では、60秒間は同じ内容を使ってよい、という意味になります。これにより、短時間で何度もアクセスされても、サーバーの処理が減ります。
4. HTTPキャッシュのイメージをやさしく理解する
HTTPキャッシュをお店に例えると、「今日のおすすめメニュー」を黒板に書いておくようなものです。お客さんが来るたびに毎回説明しなくても、黒板を見ればすぐ分かりますよね。
Symfonyは、この「黒板に書いておく時間」を細かく指定できます。これがWebサイトの表示速度アップにつながります。初心者のうちは、「ブラウザが一時的に覚えてくれる仕組み」と覚えるだけで十分です。
5. アプリケーションキャッシュとは?
次に、Symfonyアプリの中で使われるキャッシュです。これは、PHPの処理結果や設定情報を保存する仕組みです。たとえば、設定ファイルやルーティング情報は、毎回読み込むと時間がかかります。
Symfonyでは、これらをキャッシュとして保存し、次回から高速に読み込めるようにしています。
$cache->get('message', function () {
return 'キャッシュされたメッセージ';
});
このコードでは、「message」という名前でデータを保存しています。すでに保存されていれば、そのまま使われます。
6. キャッシュが無い場合との違い
キャッシュが無い場合、Symfonyは毎回同じ処理を最初から最後まで実行します。これは、毎回ゼロから料理を作るようなものです。一方、キャッシュがあれば、作り置きを温めるだけで済みます。
特にアクセスが多いサイトでは、この差が大きくなります。Symfonyのキャッシュ管理は、初心者が意識しなくても自動で働く部分が多いのも特徴です。
if ($cache->has('count')) {
$count = $cache->get('count');
} else {
$count = 1;
$cache->set('count', $count);
}
7. 開発環境と本番環境でのキャッシュの違い
Symfonyには、開発環境と本番環境という考え方があります。開発環境では、コードをすぐ反映したいので、キャッシュは頻繁に更新されます。
一方、本番環境では速度が最優先です。そのため、キャッシュがしっかり使われ、非常に高速に動作します。この切り替えをSymfonyが自動で管理してくれる点も、初心者に優しいポイントです。
8. キャッシュをクリアする仕組み
キャッシュは便利ですが、古い情報が残ることもあります。そのため、Symfonyにはキャッシュを削除する仕組みがあります。これは「一度覚えたことを忘れさせる」操作です。
php bin/console cache:clear
この操作により、Symfonyは新しい情報を再びキャッシュし直します。初心者のうちは、「困ったらキャッシュをクリア」と覚えておくと安心です。