ホームページ >バックエンド開発 >PHPチュートリアル >PHPページキャッシュOBシリーズ関数の関連紹介

PHPページキャッシュOBシリーズ関数の関連紹介

WBOY
WBOYオリジナル
2016-07-25 09:08:08869ブラウズ
  1. function page_init()

  2. {
  3. $url = $_SERVER['REQUEST_URI'];//サブ URL、このパラメータは通常一意です
  4. $pageid = md5( $url);
  5. $dir = str_replace('/','_',substr($_SERVER['SCRIPT_NAME'],1,-4));
  6. //exp_index などのディレクトリ命名方法
  7. if(!file_exists ( $pd = PAGE_PATH.$dir.'/'))@mkdir($pd,0777) または die("$pd ディレクトリの作成に失敗しました");
  8. //cache/page/exp_index/
  9. define('PAGE_FILE など) ', $pd.$pageid.'.html');
  10. //キャッシュ/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html
  11. $contents = file_get_contents(PAGE_FILE);//読み出す

  12. if ( $contents && substr($contents, 13, 10) > time() )//page_cache() 関数に追加されたカスタムヘッダーに対応します

  13. {
  14. echo substr($contents, 27);
  15. exit(0) ;
  16. }
  17. return true;
  18. }
  19. ?>

コードをコピー

2 つ目、ページ キャッシュ関数、ここではトリックが使用されています: キャッシュ ファイルのコンテンツにヘッダーを追加します。 - 有効期限。毎回、ヘッダー内の有効期限と現在の時刻 (page_init() 関数で実行) を比較するだけで、キャッシュの有効期限が切れているかどうかを判断できます。

  1. function page_cache($ttl = 0)
  2. {
  3. $ttl = $ttl ? $ttl : PAGE_TTL;//キャッシュ時間、デフォルトは3600秒
  4. $contents = ob_get_contents();//キャッシュからコンテンツを取得
  5. $contents = "n".$contents;
  6. //カスタムヘッダーを追加: 期限切れ Time = 生成時間+ キャッシュ時間
  7. file_put_contents(PAGE_FILE, $contents);//キャッシュファイルに書き込む
  8. ob_end_flush();//キャッシュを解放する
  9. }
  10. ?>
コードをコピーする

3. 関数の使用法に注意してください。これら 2 つの関数の実行順序、および ob_start() を忘れないでください。

  1. page_init();//ページキャッシュの初期化
  2. ob_start();//キャッシュをオンにする

  3. ...//コードSection

  4. page_cache(60);//通常は最後の行

  5. ?>

コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。