ここ数日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);//通常は最後の行
?>
。