カテゴリ: CodeIgniter 更新日: 2026/05/23

CodeIgniterのキャッシュ有効期限を設定する方法!初心者向け高速化ガイド

CodeIgniterでキャッシュの有効期限を設定する方法
CodeIgniterでキャッシュの有効期限を設定する方法

先生と生徒の会話形式で理解しよう

生徒

「Webサイトの表示を速くするために『キャッシュ』というものを使いたいのですが、CodeIgniterではどうやって時間を設定するんですか?」

先生

「CodeIgniterには非常に便利なキャッシュ機能が備わっています。有効期限を指定するだけで、サーバーの負担を減らしてサイトをサクサク動かすことができるんですよ。」

生徒

「初心者でも簡単に設定できるのでしょうか?具体的な方法を教えてください!」

先生

「もちろんです。今回はプログラムを触ったことがない方でも分かるように、キャッシュの仕組みと有効期限の書き方を丁寧に解説しますね。」

1. キャッシュと有効期限の基本を知ろう

1. キャッシュと有効期限の基本を知ろう
1. キャッシュと有効期限の基本を知ろう

プログラミングの世界でよく聞くキャッシュ(Cache)とは、一度計算したり表示したりした結果を「一時的に保存しておく場所」のことです。例えば、あなたが料理を注文する際、毎回一から材料を切って作るよりも、作り置きがあればすぐに提供できますよね。Webサイトでも同じで、ページを毎回作り直すのではなく、保存しておいたデータ(キャッシュ)を表示することで、読み込みスピードが劇的に速くなります。

しかし、作り置きの料理に「賞味期限」があるように、キャッシュにも有効期限(TTL: Time To Live)が必要です。ずっと古いデータを使い続けると、新しいニュースや更新したブログ記事が表示されないといったトラブルが起きてしまいます。CodeIgniterでは、この期限を「秒数」で指定することで、常に最新かつ高速なサイト運営が可能になります。

2. キャッシュドライバーの読み込み準備

2. キャッシュドライバーの読み込み準備
2. キャッシュドライバーの読み込み準備

CodeIgniterでキャッシュ機能を使うには、まず「キャッシュを管理する道具(ドライバー)」を読み込む必要があります。これは、魔法の杖を手に取るような準備作業だと考えてください。プログラム内では、$this->load->driver('cache') という一文を書くことで、キャッシュを操作する準備が整います。パソコンを触ったことがない方でも、この一文を書く場所が決まっていると分かれば怖くありません。

キャッシュの保存先には、サーバーのファイルに保存する方法や、メモリと呼ばれる高速な場所に保存する方法など、いくつかの種類があります。初心者のうちは、最も標準的な「ファイル形式」での保存から始めるのがおすすめです。

3. データをキャッシュに保存する(基本の書き方)

3. データをキャッシュに保存する(基本の書き方)
3. データをキャッシュに保存する(基本の書き方)

実際にデータを保存してみましょう。ここで最も重要なのが「有効期限」の設定です。CodeIgniterの save という命令を使います。この命令には「どんな名前で保存するか」「何を保存するか」「何秒間保存するか」という3つの情報を教える必要があります。

例えば、最新のニュース一覧を「news_list」という名前で、60秒間(1分間)だけ保存したい場合は、以下のように記述します。この「60」という数字が有効期限になります。


// キャッシュを読み込む準備
$this->load->driver('cache', array('adapter' => 'file'));

// データを保存する(名前, 内容, 有効期限[秒])
$data = '今日はとても天気が良いですね!';
$this->cache->save('weather_message', $data, 60);

echo 'キャッシュにメッセージを保存しました。';

上記のコードを実行すると、サーバーの中に「weather_message」という名前でメッセージが保存されます。60秒経過すると、このデータは自動的に消去され、また新しいデータを作り直す準備が行われます。

4. 保存したキャッシュを呼び出す方法

4. 保存したキャッシュを呼び出す方法
4. 保存したキャッシュを呼び出す方法

保存しただけでは意味がありません。次に、その保存されたデータを取り出して画面に表示する方法を学びましょう。使う命令は get です。もし有効期限が切れてデータが消えていた場合は、「データがありません」という状態(NULL)になります。これを確認することで、「データがあればキャッシュを表示、なければ新しく作る」という条件分岐が可能になります。


// 保存したキャッシュを取り出す
$cached_data = $this->cache->get('weather_message');

if ($cached_data) {
    // データが見つかった場合
    echo "キャッシュから読み込みました:" . $cached_data;
} else {
    // 期限切れ、または保存されていない場合
    echo "キャッシュが存在しないか、期限が切れています。";
}

実行結果は以下のようになります。有効期限内であれば保存された文字が表示され、期限が切れると別のメッセージに切り替わります。


キャッシュから読み込みました:今日はとても天気が良いですね!

5. 長期保存と短期保存の使い分け

5. 長期保存と短期保存の使い分け
5. 長期保存と短期保存の使い分け

有効期限の設定時間は、扱う情報の種類によって変えるのがプロのコツです。例えば、1分間に何度も更新される株価情報などは 10秒 程度の短い期限にします。一方で、会社の住所やプロフィール、過去のブログ記事など、めったに内容が変わらないものは 3600秒(1時間)86400秒(24時間) といった長い時間を設定します。

秒数で指定するので、計算式を使うと分かりやすくなります。例えば「1時間」なら 60 * 60、「1日」なら 60 * 60 * 24 と書くことができます。プログラム内でもこのように掛け算を使って書くと、後から見た時に「あ、これは1時間のことだな」と理解しやすくなります。


// 1時間(3600秒)キャッシュを保存する例
$expire_time = 60 * 60; 
$blog_content = "CodeIgniterの学習は楽しいですね。";

$this->cache->save('blog_article_1', $blog_content, $expire_time);

6. キャッシュを削除して更新を反映させる

6. キャッシュを削除して更新を反映させる
6. キャッシュを削除して更新を反映させる

有効期限が来る前に、どうしてもデータを新しくしたい時があります。例えば、ブログの誤字を修正してすぐに反映させたい場合などです。その時は、手動でキャッシュを消去する delete 命令を使います。特定の名前のキャッシュだけを消すことができるので、他の関係ないデータに影響を与えずに済みます。


// 指定した名前のキャッシュを強制的に削除する
$this->cache->delete('weather_message');

echo "古いキャッシュを削除しました。これで新しい情報が表示されます。";

このように、「保存」「取得」「削除」の3つをマスターすれば、CodeIgniterのキャッシュ管理は完璧です。ユーザーにとっても、待ち時間が少なくなって快適なWebサイト体験を提供できるようになります。高速なWebアプリ開発の第一歩として、ぜひ有効期限の設定を活用してみてください。

7. Webサイト全体の表示をキャッシュする場合

7. Webサイト全体の表示をキャッシュする場合
7. Webサイト全体の表示をキャッシュする場合

これまではデータ(文字や数字)を個別に保存する方法でしたが、CodeIgniterには「画面丸ごと」をキャッシュする機能もあります。これはページ全体を写真に撮って保存しておくようなイメージです。コントローラーと呼ばれる、プログラムの制御室にあたる場所で、たった一行 $this->output->cache(分); と書くだけで完了します。ここでの指定は「秒」ではなく「分」になる点に注意が必要です。


public function index() {
    // このページ全体を5分間キャッシュする
    $this->output->cache(5);
    
    $this->load->view('welcome_message');
}

この機能を使うと、プログラムがデータベースにアクセスしたり複雑な計算をしたりする工程をすべてスキップして、保存されたHTMLファイルをそのまま返却するため、サーバーの負荷が最小限になります。アクセス数が多い人気サイトを作る際には必須のテクニックです。

8. キャッシュの有効期限が切れる仕組み(裏側)

8. キャッシュの有効期限が切れる仕組み(裏側)
8. キャッシュの有効期限が切れる仕組み(裏側)

「有効期限が切れたら誰が消してくれるの?」と疑問に思うかもしれません。実は、CodeIgniterはキャッシュを読みに行くたびに、そのデータの「作成日時」と「現在時刻」を比較しています。現在時刻が作成日時+有効期限を過ぎていれば、そのデータは「もう古い」と判断され、プログラムからは見えないようになります。ゴミ箱に自動で捨てられるわけではなく、次に誰かがアクセスしたタイミングで「あ、これは期限切れだ」と判定される仕組みです。

この仕組みのおかげで、サーバーのメモリやディスク容量を賢く節約しながら、常に新鮮なコンテンツをユーザーに届けることができるのです。初心者の皆さんは、まず「何秒間保存したいか」を意識することから始めてみましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのルーティングでサブドメインを使う方法!初心者向けにやさしく解説
New2
Laravel
Laravelでマルチ言語ルートを設定する方法!ロケールごとのprefixで簡単管理
New4
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.2
Java&Spring記事人気No2
Symfony
SymfonyのRemember Me機能を完全解説!初心者でもわかるログイン保持の仕組み
No.3
Java&Spring記事人気No3
Laravel
Laravelでルートに中間処理を追加する方法!ミドルウェア活用ガイド
No.4
Java&Spring記事人気No4
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.5
Java&Spring記事人気No5
Laravel
Laravelでドメインルートを使う方法!マルチドメイン対応を初心者向けに解説
No.6
Java&Spring記事人気No6
Laravel
LaravelのFeatureテストとUnitテストの違いを理解しよう
No.7
Java&Spring記事人気No7
CodeIgniter
CodeIgniterで多言語対応(Language)を徹底解説!言語切り替え機能を実装
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterでファイルアップロードとストレージ管理をマスター!初心者向け完全ガイド