SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CodeZineニュース

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

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

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

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ニュース

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
この記事の著者

PHPプロ!(PHPプロ!)

PHPプロ!」は、アシアル株式会社が運営するPHP開発者のためのポータル&コミュニティサイトです。同サイトでは、PHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座、PHP中級者のためのTIPSメーリングリスト、中・上級者向けの技術ノウハウ満載のPHPプロ!マガジンの提供など、PHP開発...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1027 2007/02/20 11:55

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング