コンテンツキャッシュ出力 PEAR キャッシュ
次に、より一般的に使用されるキャッシュ テクノロジの調査を開始します。これがこの記事の焦点でもあります。まず、PEAR のキャッシュ パッケージを使用します。 PEAR は、ファイル、データベース、またはメモリにコンテンツをキャッシュできます。ファイルを例に挙げてみましょう。
以下はキャッシュなしのPHPアプレットです:
pear_content_cache1.php
<?php
echo "これがコンテンツです。
";
echo "現在時刻は" . date('M-d-Y H:i:s A', time()) .
?>
上記のプログラムは非常に単純ですが、これにキャッシュを追加します。
pear_content_cache2.php
<?php
require_once 'キャッシュ/Output.php';
//書き込み可能でなければならないキャッシュ ディレクトリを設定します
// nocache 変数が空の場合、キャッシュ内のコンテンツを使用します
//最新のコンテンツを取得したい場合は、それを nocache 変数に割り当てる必要があります
{
// 一意のキャッシュ識別子を作成します
// リクエスト + Cookie 情報
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
}
それ以外は
{
//最新のコンテンツを取得したい場合は、ID は空です
$cache_id = null;
}
//キャッシュIDに対応するキャッシュコンテンツが利用可能か確認します
if ($content = $cache->start($cache_id))
{
//キャッシュはすでに存在するので、直接出力してスクリプトを終了します
//コンテンツがキャッシュに存在しないため、新しいコンテンツを生成してキャッシュに書き込みます
echo "これがコンテンツです。
";
echo "現在時刻は" . date('M-d-Y H:i:s A', time()) .
// コンテンツをキャッシュに書き込みます
echo $cache->end();
?>
これら 2 つのファイルをそれぞれ更新すると、pear_content_cache1.php の「現在時刻は」という行の時刻が更新によって変化しますが、pear_content_cache2.php のこの行は変化しないことがわかります。これは、pear_content_cache2.php がキャッシュを使用して、ユーザーが要求したコンテンツを静的ファイルに保存するためです。ユーザーが再度リクエストすると、プログラムがコンテンツを動的に生成する必要がなく、ファイルから直接出力されます。
pear_content_cache2.phpの場合、ユーザーがキャッシュ内の古い情報ではなく最新の情報を読みたい場合。その後、 http://…/pear_content_cache2.php?nocache=1 を使用してアクセスすると、キャッシュ機能が無効になります。更新すると、それに応じて時間が変更されることを確認します。
PEAR コンテンツ キャッシュ クラスの使用法を要約すると:
1. PEAR パッケージを含める場合は、必ず正しいパスを設定してください。
2. Output.php にキャッシュ クラスが含まれます
require_once 'キャッシュ/Output.php';
3.キャッシュディレクトリを設定します
$cacheDir = './pear_cache';
このディレクトリが書き込み可能であることを確認します。キャッシュ データは、このディレクトリのサブディレクトリに書き込まれます。
4.出力キャッシュオブジェクトを作成します
$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));
最初のパラメータは「ファイル」ベースのキャッシュを使用することを示し、2 番目のパラメータはキャッシュ ディレクトリに関連付けられた配列です。
5.一意のキャッシュ ID を生成します
$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));
ここでの $cache オブジェクトのgenerateID() メソッドは、このリクエストを一意に識別し、他のリクエストと区別するための情報の配列 (URL、HTTP POST データ、および HTTP Cookie) を提供します。
6.キャッシュIDに対応するキャッシュデータが既に存在するかどうかの論理判定文を追加し、存在する場合はデータを取得してスクリプトを終了します。
if ($content = $cache->start($cache_id))
{$content をエコーします。 終了(); }
7. 上記の論理ステートメントの後にコンテンツを生成するコードを配置し、キャッシュ オブジェクトの使用を終了します。
echo $cache->end();
関数キャッシュ出力PEARキャッシュ
PEARは出力内容をキャッシュするだけでなく、特定の関数を呼び出した結果をキャッシュすることもできます。これは非常に興味深い機能です。プログラムで特定の関数が頻繁に使用され、呼び出しの結果が同じである場合、特にこの関数の実行が遅い場合には、試してみることをお勧めします。
次に、非常にゆっくりと実行される関数、slowFunction() へのバッファリングされた呼び出しを実装します。
<?php
$cacheDir = './pear_cache/'; $cache = 新しい Cache_Function('file',array('cache_dir' => $cacheDir)); $arr = array('リンゴ', '梨', 'スイカ'); $cache->call('slowFunction', $arr); echo '
$arr = array('リンゴ', '梨', 'スイカ');
スロー関数($arr);
{
echo "実行が非常に遅い関数:(
";
echo "現在の時刻は " . date('M-d-Y H:i:s A', time()' です。
foreach ($arr as $fruit)
{
echo "$フルーツを食べました
";
}
)
?>
例のスクリプト実行結果は以下の通りです:
現在の時刻は Jul-28-2004 17:15:57 PM です
リンゴを食べました
梨を食べました
スイカを食べました
実行が非常に遅い関数:(
現在の時刻は 2004 年 7 月 28 日 17:17:55 PM です
梨を食べました
スイカを食べました
コードでは、Cache/Function.phpクラスを使用して関数バッファリング機能を実行しています。 $cache 変数は、ファイルベースの関数キャッシュを使用する Cache_Function オブジェクトで、$cacheDir ディレクトリに保存されます。関数呼び出しをキャッシュするには、Cache_Function オブジェクト $cache の call() メソッドを次のように使用します: $cache->call(‘slowFunction’, $arr);
http://www.bkjia.com/PHPjc/372079.html