ホームページ  >  記事  >  バックエンド開発  >  Smarty テンプレートエンジンのキャッシュ機構の詳細説明、Smarty テンプレートエンジンの詳細説明_PHP チュートリアル

Smarty テンプレートエンジンのキャッシュ機構の詳細説明、Smarty テンプレートエンジンの詳細説明_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 08:50:40745ブラウズ

Smarty テンプレート エンジンのキャッシュ メカニズムの詳細な説明、Smarty テンプレート エンジンの詳細な説明

この記事では、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)
型は関数です

name はユーザー定義のラベル名です。ここでは {current_time} です

2 つのパラメータは必須であり、関数内で使用されない場合でも、記述する必要があります。 2 つのパラメータの機能は上記と同じです。

さらに Smarty 関連のコンテンツに興味のある読者は、このサイトの特別トピックをチェックしてください: 「Smarty テンプレートを使い始めるための基本チュートリアル」、「PHP テンプレート テクノロジの概要」、「PDO に基づく PHP データベース操作スキルの概要」 "、"PHP の操作とオペレーターの使用法の概要"、"PHP ネットワーク プログラミング スキルの概要"、"PHP 基本構文の入門チュートリアル"、"PHP オブジェクト指向プログラミングの入門チュートリアル"、"PHP 文字列の使用法の概要"、 『PHP+MySQLデータベース操作入門チュートリアル』と『PHPにおける一般的なデータベース操作スキルのまとめ』

この記事が、Smarty テンプレートに基づいた皆様の PHP プログラム設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/1133106.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1133106.html技術記事 Smarty テンプレート エンジンのキャッシュ メカニズムの詳細な説明 Smarty テンプレート エンジンのキャッシュ メカニズムについて例を示して説明します。参考のために皆さんと共有してください。詳細は次のとおりです。まず、... について話しましょう
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。