はじめに
Smarty は、ロジック コードとユーザー インターフェイスを分離する優れた PHP テンプレート エンジンです。
Smarty を学習して使用する場合、Smarty のキャッシュ属性が true に設定されている場合、そのキャッシュ テクノロジを適用しないのは大きな損失です。キャッシュタイム期間を設定すると、ユーザーの WEB リクエストはこの静的 HTML ファイルに直接変換され、バックエンド サーバーの負担が大幅に軽減されます。
ダウンロードして設定します
公式ダウンロード: Smarty ダウンロード
ダウンロード後、プロジェクトのファイル ディレクトリに解凍します。
1 require('../libs/Smarty.class.php');
2
3 $smarty = 新しい Smarty;
4
5 //$smarty->force_compile = true //強制コンパイル
;
6 $smarty->debugging = true //デバッグ
;
7 $smarty->caching = true //キャッシュを有効にする
8 $smarty->cache_lifetime = 120 //キャッシュ生存時間 (秒)
;
$smarty->cache_dir = '/cache/' //キャッシュストレージパスを設定します
;
注: ブラウズするたびにキャッシュ ファイルが変更される場合は、Smarty の Force_compile を確認してください。これにより、Smarty は呼び出されるたびにテンプレートを (再) コンパイルします。この設定は $compile_check によって制限されません。デフォルトでは無効になっています。開発やデバッグには非常に便利ですが、キャッシュが有効になっている場合は毎回キャッシュ ファイルが再生成されます。
$smarty->force_compile = false; // 強制的にコンパイルします
Smarty キャッシュテクノロジー
• グローバルキャッシュ
• 部分キャッシュ
1.メソッドを挿入します
2.ダイナミックブロック法
3.プラグインブロック方法
グローバルキャッシングテクノロジー
グローバルキャッシュとはその名のとおり、ページ全体のキャッシュファイルを生成し、キャッシュファイルの生存時間を指定し、指定時間内に再度ページ全体を閲覧するとキャッシュファイルが直接読み込まれます。
$smarty->caching = true //キャッシュを有効にする
;
$smarty->cache_lifetime = 120; //キャッシュ生存時間 (秒)
;
注: テンプレートに複数のページがある場合は、キャッシュ ファイルを 1 つだけ設定する必要があります。 たとえば、ページに複数の記事があるとします。
http://website/index.php?p=1
http://website/index.php?p=2
//$_SERVER['REQUEST_URI'] メソッド
// 現在のページの URL (? 以降のすべてのパラメーターを含む) を md5 で暗号化します
$url=md5($_SERVER['REQUEST_URI']);
//キャッシュファイル名を設定します
$smarty->display('index.tpl',$url);
重要なポイント: キャッシュ テクノロジを使用する主な理由は、データベースへの読み取りと書き込みを減らすことです。そのため、キャッシュが存在するかどうかを確認するには、$smarty->isCached('index.tpl') を使用する必要があります。存在する場合は、実行します。データベースを再度操作しないでください。
if(!$smarty->isCached('index.tpl')){
エコー「ACACHE が見つかりません!」;
$sql = "SELECT * FROM テスト";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$smarty->assign("loaddatabase",$row[1]);
}
ここで別の問題が発生します。データベース内で何かを変更し、表示内容を更新したいが、キャッシュの有効期限がまだ切れていない場合、どうすればよいでしょうか。
$smarty->clearCache("index.tpl");
上記の clearCache は、データが更新されている限り、clearCache を呼び出してキャッシュをクリアすることでこの問題を解決できます。
PS: Smarty3 バージョンを使用しています。Smarty2 の場合は、「不明なメソッド 'isCached' を呼び出します。」と表示されます。$smarty->is_cached() を使用してください。
後で登場する Smarty3:registerPlugin() と Smarty2:register_block() もバージョンの問題です。
キャッシュありとなしの速度の比較を見てみましょう:
1. 初めての閲覧、キャッシュなし 合計時間 0.01421
2. 2 回目の閲覧では、合計時間 0.00308 がキャッシュされます。
ここのindex.phpには数行のコードしかありませんが、データ量が多い場合には、明らかな違いが生じます。
部分キャッシュ技術
部分キャッシュ = 部分キャッシュ、つまり、ページのキャッシュのうち、すべてのキャッシュが生成されないように、特定の機能モジュールをカスタマイズして、閲覧するたびにデータが更新されます。
たとえば、Web ページにはユーザー ステータス、Web ページ統計、広告バナーなどが表示されます。これらのデータは非常に速く更新されるため、キャッシュには適していません。このように、ローカル キャッシュは役立ちます。
部分キャッシュには 3 つの方法があります:
1.メソッドを挿入します
insert に含まれるコンテンツはキャッシュされず、テンプレートが呼び出されるたびに関数が再実行されます。
使用方法:
ここでの関数名は insert で始まる必要があり、テンプレート内の名前はそれに対応していることに注意してください。
インデックス.php
//挿入と通常の代入の違いをテストする時間を定義します
$date = date("Y-m-d H:i:s");
$smarty->assign("日付", $date);
//
を挿入
関数 insert_get_current_time($date){
日付を返します("Y-m-d H:i:s");
}
インデックス.tpl
nocache:{名前を挿入="get_current_time"}
次に、生成されたキャッシュ ファイルを確認します。テンプレートが呼び出されるたびに、insert によって関数が再実行されるという結論に達します
nocache:)
),$_smarty_tpl);?>
この方法は簡単ですが、表示するコンテンツが大きい場合には使用できません。
2.ダイナミックブロック法
phpのカスタムブロック
インデックス.php
//スマート 3
// 関数宣言
関数smarty_block_nocache ($param,$content,$smarty)
{
$content を返します;
}
// Smarty に登録します
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");
冒頭でも述べたように、Smarty3は registerPlugin を使用し、Smarty2は register_block を使用します
インデックス.tpl
{nocache}{$date}{/nocache}
次に、キャッシュ ファイルを確認して、テンプレートが呼び出されるたびに $date が再実行されると結論付けます
tpl_vars['date']->value;?>
3.プラグインブロック方法
この方法は 2 番目の方法と似ていますが、PHP のカスタム ブロックが Smarty ディレクトリの plugins フォルダーに配置される点が異なります。
Smarty/plugins ディレクトリに次の内容のファイル block.nocache.php を作成します:
関数smarty_block_nocache($param, $content, $smarty)
{
$content を返します。
}
?>
tplテンプレートでの使い方は2番目の方法と同じです
まとめ
Smarty キャッシュ テクノロジは Web サイトの速度と品質を大幅に向上させることができ、その使用方法は比較的簡単であると結論付けることができます。
最後に注意すべき点は、Smarty によって生成されたキャッシュ ファイルの拡張子は php ですが、php コードとして解析されないということです。
作者:その瞬間
http://www.bkjia.com/PHPjc/478175.html