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

PHPページキャッシュOBシリーズの関数の紹介_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:44:12705ブラウズ

phpのページキャッシュobシリーズの機能紹介

ここ数日phpcmsのページキャッシュに触れてきて、感じることがあります。その利点については詳しく説明しません。通常、データベースのクエリが多いページで使用されます。挿入、変更、削除を行うページには適していません。

PHPページのキャッシュは主にob_start()、ob_end_flush()、ob_get_contents()などのobシリーズの関数を使用します

以下はエンコード部分です。

1. 初期化機能。通常はページキャッシュパス、キャッシュファイルの命名形式などを設定しますが、個人の好みに応じてカスタマイズできます。ここで使用される識別 ID は、暗号化された $_SERVER[REQUEST_URI] パラメーターです。この関数の最後には if 判定があり、キャッシュ期間が経過していない場合はキャッシュ ファイルをロードし、そうでない場合はソース ファイルをロードします。

関数page_init()

{

$url = $_SERVER['REQUEST_URI'];//サブ URL、このパラメータは通常一意です

$pageid = md5($url);

$dir = str_replace('/','_',substr($_SERVER['script_NAME'],1,-4));

//exp_indexなどのディレクトリ命名方法

if(!file_exists($pd = PAGE_PATH.$dir.'/'))@mkdir($pd,0777) or die("$pd ディレクトリの作成に失敗しました");

//cache/page/exp_index/

など

define('PAGE_FILE',$pd.$pageid.'.html');

//cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html など

$contents = file_get_contents(PAGE_FILE) //読み出す

;

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

{

echo substr($contents, 27);

exit(0);

}

true を返す;

}

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

関数page_cache($ttl = 0)

{

$ttl = $ttl ? $ttl : PAGE_TTL;//キャッシュ時間、デフォルトは3600秒

$contents = ob_get_contents();//キャッシュからコンテンツを取得します

$contents = " ".$contents;

//カスタムヘッダーを追加: 有効期限 = 生成時間 + キャッシュ時間

file_put_contents(PAGE_FILE, $contents);//キャッシュファイルに書き込みます

ob_end_flush();//キャッシュを解放する

}

3. 関数を使用する場合、これら 2 つの関数には実行順序があることに注意し、ob_start() を忘れないようにしてください

page_init();//ページキャッシュの初期化

ob_start();//キャッシュを有効にする

...//コードスニペット

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

?>

http://www.bkjia.com/PHPjc/1049988.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/1049988.html技術記事 php ページキャッシュ ob シリーズの機能の紹介 ここ数日、phpcms のページキャッシュに触れてきて、いくつか感じることがあります。その利点についてはあまり言うことはありません。一般に、多くのデータベースクエリを含むページで使用されます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。