CodeZine(コードジン)

特集ページ一覧

[PHPプロ!] お手軽にページのキャッシュを行う方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/02/20 11:55

ibzi's blogにて簡単にページのキャッシュを行う方法が紹介されています。この方法はPHPでMySQLクエリを使用して表示するページのキャッシュ方法です。ページをキャッシュしてしまえば、次からのアクセスではキャッシュが使用されるので、無駄な処理は行われません。ここで紹介されているのは、POSTやSESSIONの内容が加味されていないので、ユーザー名を出力するようなページでは使用できないので注意が必要です。

 ibzi's blogにて簡単にページのキャッシュを行う方法が紹介されています。この方法はPHPでMySQLクエリを使用してページを表示するページのキャッシュ方法です。ページをキャッシュしてしまえば、次からのアクセスではキャッシュが使用されるので、無駄な処理は行われません。ここで紹介されているのは、POSTやSESSIONの内容が加味されていないので、ユーザー名を出力するようなページでは使用できないので注意が必要です。

 手順は非常に簡単で、以下の5つのステップで完了です。

  • ドキュメントルートに.htaccessファイルを作成し、start_cache.phpとend_cached.php、キャッシュを保存するためのcache_filesを作成する。
  • cache_filesにWebサーバーの実行ユーザーが書き込めるように設定する。
  • .htaccess内に以下のような記述を加えます。
  • php_value auto_prepend_file /path/to/start_cache.php
    php_value auto_append_file /path/tp/end_cache.php
    
  • 以下のコードをstart_cache.phpとして保存する。
  • <?php
    // キャッシュの設定
    $settings_cachedir = '/path/to/cache_files/';
    $settings_cachetime = 3600; // キャッシュの有効時間 3600秒(1時間)
     
    $thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $cachelink = $settings_cachedir . md5($thispage) . '.html';
    if (@file_exists($cachelink)) {
      $cachelink_time = @filemtime($cachelink);
      if ((time() - $settings_cachetime) < $cachelink_time) {
        @readfile($cachelink);
        die();
      }
    }
    ob_start();
    ?>
    
  • 最後に以下のコードをend_cache.phpとして保存します。
  • <?php
    $fp = fopen($cachelink, 'w');
    @fwrite($fp, ob_get_contents());
    @fclose($fp);
    ob_end_flush();
    ?>
    

 以上ですべてのページが3600秒キャッシュされることになります。実際にはPOSTされた情報や、ユーザーごとに表示する情報が異なるページではキャッシュしてはいけないので、外部設定ファイルにキャッシュするページを記述するなどの工夫が必要でしょう。

 この例のようにPHPのauto_append_file、auto_prepend_fileの設定を使用するというのは、既存のコードに修正を加える必要がないので、お手軽にできる方法ではないでしょうか。小規模なアプリケーションでキャッシュ機能を使いたいと思っている方は一度試してみるとよいかもしれません。ただし、auto_append_fileを使用しているため、実際にページを作成するためのPHPファイルの中でexitしている場合は使用することはできません。(PHPプロ!

関連リンク

転載元

 PHPプロ!:最新のPHPニュース

  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5