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内に以下のような記述を加えます。
- 以下のコードをstart_cache.phpとして保存する。
- 最後に以下のコードをend_cache.phpとして保存します。
php_value auto_prepend_file /path/to/start_cache.php php_value auto_append_file /path/tp/end_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(); ?>
<?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開発...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です