この記事では、Smarty テンプレート エンジンのキャッシュ メカニズムについて例を示して説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
まず、Smarty のキャッシュとコンパイルについて説明します。これらは 2 つの異なる概念です。コンパイルはデフォルトで有効になっていますが、Smarty でコンパイルされたファイルは依然として php ファイルであるため、実行時にコンパイルされます。データベースに関して言えば、やはりデータベースにアクセスする必要があるため、オーバーヘッドは小さくありません。そのため、それを解決するにはスマート キャッシュが必要です。
1. グローバルキャッシュを有効にする
リーリー2. 1 つのページで複数のキャッシュを使用します
例: 記事テンプレート ページは複数の記事ページを生成します。もちろん、それらは多くのページにキャッシュされます。実装は非常に簡単です。display() メソッドに 2 番目のパラメーターを設定し、一意の識別子を指定するだけです。次の php コード:
リーリー上記と同様に、2 番目のパラメータとして記事の ID を使用して記事ページをキャッシュします。
3. キャッシュのオーバーヘッドを削減します
つまり、キャッシュされたページはデータベースで処理する必要がなく、 is_cached() メソッドを通じて判断できます。
リーリー4. キャッシュをクリアします
一般に、キャッシュ時間中は出力結果が変更されないため、開発プロセス中はキャッシュがオンになりません。ただし、アプリケーション プロセス中にキャッシュをオンにすると、Web パフォーマンスが大幅に向上します。
リーリー5. ローカルキャッシュをオフにする
ページの一部がキャッシュされ、別の部分がキャッシュされる必要がない場合、これを行うことができます。たとえば、ユーザーのログイン名を表示するには、Smarty は次の 3 つの解決策を提供します。
(1) Insertを使用したテンプレートの一部がキャッシュされませんinsert タグで使用する処理関数を定義します。関数名の形式は、insert_xx(array $params, object &$smarty) です。つまり、定義する関数が insert_abc の場合です。 、テンプレート内で使用方法は {insert name=abc} です
パラメータは$paramsを通じて渡されます
挿入プラグインにすることもできます。ファイル名はinsert.xx.php、関数名はsmarty_insert_aa($params,&$smarty)、xxの定義は上記と同じです
(2)$smarty->register_block($params, &$smarty) は、ページ全体の特定のブロックがキャッシュされるのを防ぎます
ブロックを定義します: リーリー
登録ブロック:リーリー
テンプレートの作成:リーリー
ブロックプラグインとして記述:
ステップ 1: プラグイン関数: block.cacheless.php を定義し、smarty のプラグイン ディレクトリに配置しますblock.cacheless.phpの内容は以下の通りです:
リーリー
ステップ 2: プログラムとテンプレートを作成する
サンプルプログラム: testCacheLess.phpリーリー
使用したテンプレート:cache.tplリーリー
今すぐ実行すると、コンテンツの両方の行がキャッシュされていることがわかります
ステップ 3: Smarty_Compiler.class.php を書き換えます(注: このファイルは非常に重要です。必要に応じて復元するために最初にバックアップしてください)
検索:
コードをコピーします コードは次のとおりです: $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);
リーリー
元の文の最後のパラメータを false に直接変更して、デフォルトのキャッシュをオフにすることもできます。(3) register_functionを使用してプラグインがキャッシュから出力されないようにします
index.tpl:
リーリー
注:関数を定義します。関数名の形式は次のとおりです:
smarty_type_name($params, &$smarty)
型は関数です
2 つのパラメータは必須であり、関数内で使用されない場合でも、記述する必要があります。 2 つのパラメータの機能は上記と同じです。
さらに Smarty 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Smarty テンプレートを使い始めるための基本チュートリアル」、「PHP テンプレート テクノロジの概要」、「PDO に基づく PHP データベース操作スキルの概要」 "、"PHP の操作とオペレーターの使用法の概要"、"PHP ネットワーク プログラミング スキルの概要"、"PHP 基本構文の入門チュートリアル"、"PHP オブジェクト指向プログラミングの入門チュートリアル"、"PHP 文字列の使用法の概要"、 『PHP+MySQLデータベース操作入門チュートリアル』と『PHPにおける一般的なデータベース操作スキルのまとめ』
この記事が、Smarty テンプレートに基づいた皆様の PHP プログラム設計に役立つことを願っています。