クラスキャッシュ{
/**
* $dir: キャッシュファイル格納ディレクトリ
* $lifetime: キャッシュファイルの有効期間、単位は秒です
* $cacheid: ファイル名を含むキャッシュ ファイル パス
* $ext: キャッシュ ファイル拡張子 (オプション)、ファイルを表示する際の便宜のためにここで使用されます
*/
プライベート $dir;
プライベート $lifetime;
プライベート $cacheid;
プライベート $ext;
/**
* デストラクター、キャッシュディレクトリが有効かどうかを確認、デフォルトの割り当て
*/
function __construct($dir=,$lifetime=1800) {
if ($this->dir_isvalid($dir)) {
$this->dir = $dir;
$this->lifetime = $lifetime;
$this->ext = .Php;
$this->cacheid = $this->getcacheid();
}
}
/**
* キャッシュが有効かどうかを確認してください
*/
プライベート関数 isvalid() {
if (!file_exists($this->cacheid)) return false;
if (!(@$mtime = filemtime($this->cacheid))) return false;
if (mktime() - $mtime > $this->lifetime) return false;
true を返す;
}
/**
* ライトキャッシュ
* $mode == 0、ブラウザキャッシュを通じてページコンテンツを取得します
* $mode == 1、直接割り当てを通じてページコンテンツを取得します ($content パラメーターを通じて受信)
* $mode == 2、ローカルで読み込んでページコンテンツを取得(fopen ile_get_contents) (このメソッドは不要なようです)
*/
パブリック関数 write($mode=0,$content=) {
スイッチ ($mode) {
ケース0:
$content = ob_get_contents();
休憩;
デフォルト:
休憩;
}
ob_end_flush();
試してみましょう {
file_put_contents($this->cacheid,$content);
}
catch (例外 $e) {
$this->error(写入缓存失败!请检查目录权限!);
}
}
/**
* ロードキャッシュ
* exit() は、キャッシュをロードした後、元のページ プログラムの実行を終了します。キャッシュが無効な場合は、元のページ プログラムを実行してキャッシュを生成します
。
* ob_start() はブラウザのキャッシュをオンにして、ページの最後にあるページコンテンツを取得します
*/
パブリック関数load() {
if ($this->isvalid()) {
echo "これはキャッシュです。 ";
//以下两种方式、哪种方式好??????
require_once($this->cacheid);
//echo file_get_contents($this->cacheid);
exit();
}
else {
ob_start();
}
}
/**
* キャッシュをクリアします
*/
パブリック関数 clean() {
試してみましょう {
unlink($this->cacheid);
}
catch (例外 $e) {
$this->error(キャッシュ ファイルのクリアに失敗しました! ディレクトリのアクセス許可を確認してください!);
}
}
/**
* キャッシュファイルのパスを取得します
*/
プライベート関数 getcacheid() {
$this->dir.md5($this->geturl()).$this->ext;を返します
}
/**
* ディレクトリが存在するか、作成できるかを確認してください
*/
プライベート関数 dir_isvalid($dir) {
if (is_dir($dir)) は true を返します;
試してください{
mkdir($dir,0777);
}
catch (例外 $e) {
-$ This-& gt; エラー (設定キャッシュ ディレクトリが存在しないため、作成に失敗しました。ディレクトリ権限を確認してください!);
false を返します。
}
true を返します;
}
/**
* 現在のページの完全な URL を取得します
*/
プライベート関数 geturl() {
$url = ;
if (isset($_SERVER[REQUEST_URI])) {
$url = $_SERVER[REQUEST_URI];
}
その他 {
$url = $_SERVER[Php_SELF];
$url .= empty($_SERVER[QUERY_STRING])?:?.$_SERVER[QUERY_STRING];
}
$url を返します;
}
/**
* エラーメッセージを出力します
*/
プライベート関数エラー($str) {
echo
.$str.
;
}
}
?>
demo.php:
* 説明: 動的キャッシュ クラス。ページを制御してキャッシュを自動的に生成し、キャッシュを呼び出し、キャッシュを更新し、キャッシュを削除するために使用されます。
1. このバージョンは Php5 バージョンです。Php4 バージョンはまだ作成していません。必要に応じて、自分で修正を参照してください (簡単です、そんなに面倒なことはしないでください (笑))。
2. このバージョンは utf-8 でエンコードされています。Web サイトが他のエンコードを使用している場合は、メモ帳を使用して開いて保存し、対応するエンコード (通常は ANSI) を選択してください。対応する編集ソフトウェアまたは iconv コマンド ラインを使用します。
3. コピー&ペーストする場合は、上記の項目 2 について心配する必要はありません。