ホームページ  >  記事  >  バックエンド開発  >  PHP テンプレート エンジン Smarty キャッシュの使用法

PHP テンプレート エンジン Smarty キャッシュの使用法

WBOY
WBOYオリジナル
2016-07-25 08:53:28810ブラウズ
  1. $smarty->display('index.tpl',$my_cache_id);
コードをコピー

この機能を使用すると、異なる $_GET を異なる方法でキャッシュできます。

2. Smarty キャッシュをクリアする 通常、Smarty キャッシュをクリアするにはいくつかの方法があります。

  1. clear_all_cache();//すべてのキャッシュをクリア
  2. clear_cache('index.tpl');//指定されたテンプレートのキャッシュをクリアしますindex.tpl
  3. clear_cache('index.tpl',cache_id);/ /Clear 指定したテンプレートIDのキャッシュを指定
コードをコピー

3. グローバルキャッシュ グローバル キャッシュとは、Web サイト全体のすべてのページに対してキャッシュされたページを生成することです。グローバルキャッシュを設定するには、まずsmarty設定ファイルを操作し、キャッシュを有効にし、キャッシュファイルのディレクトリを指定し、キャッシュの生存時間を設定する必要があります。設定パラメータは次のとおりです。 $smarty->cache_dir='./cache/' //キャッシュファイルを保存するフォルダーを設定します。 $smarty->caching=1;//キャッシュを有効にする 0、FALSE はオフを意味し、TRUE はオンを意味します $smarty->cache_lifetime=3600//単位は秒です(-1を入力すると期限切れになりません) 次に、特定の PHP ページに移動して、それに対応する特定のキャッシュ ファイルの名前を設定する必要があります。PHP ページでは次のように記述できます。

  1. $smarty->display('list2.html',md5($_SERVER['REQUEST_URI']));//現在のページの URL (? 以降のすべてのパラメータを含む) を md5 で暗号化し、次に、キャッシュファイル名を設定します
コードをコピーします

注: $smarty->display('対応するテンプレートファイル名', 'キャッシュファイル名の補足部分') このメソッドです。

第二引数は省略します。記述しない場合、キャッシュファイル名はテンプレートファイル名を暗号化したものになります。しかし、これには次のようなより困難な問題が発生します。 http://bbs.it-home.org/article.php?id=5 http://bbs.it-home.org/article.php?id=7 これら 2 つの URL は異なるコンテンツに対応しますが、生成されるキャッシュ ファイル名は記事の暗号化の結果です。これにより、ユーザーは異なるコンテンツをクエリすることになりますが、同じキャッシュ ファイルにアクセスすることになります。したがって、アクセス URL (? 以降のすべてのパラメータを含む) を暗号化するためのより信頼性の高い方法である md5 を追加することをお勧めします。

4. 部分的なキャッシュ 部分キャッシュとは、Web サイト上のすべてのファイルではなく、一部のファイルを指定してキャッシュ ファイルを生成することを意味します。部分キャッシュの本質は、実際には部分非キャッシュです。つまり、どのファイルをキャッシュするかを指定するのではなく、キャッシュしない特定のファイルを指定することです。ここで、3 つのファイルがあると仮定します。 http://bbs.it-home.org/index.php //キャッシュが必要です http://bbs.it-home.org/cate.php //キャッシュが必要です http://bbs.it-home.org/article.php //キャッシュは必要ありません 最初の 2 つのファイルの php ファイルには、$smarty->display('対応するテンプレート ファイル名', 'キャッシュ ファイル名の補足部分') という文をまだ記述する必要があります。 ただし、3 番目のファイルでは、キャッシュが必要ないことを明確に指定する必要があります。その具体的な方法は、指定されたテンプレートを表示する前に次のコードを記述することです。 $smarty->clear_cache('対応するテンプレートファイル名');//実際には $smarty->display('対応するテンプレートファイル名') の前後に記述できます もちろん、 $smarty->display('対応するテンプレート ファイル名') を記述する必要があるため、キャッシュを生成したくないので、2 番目のパラメーターは必要ありません。 注: $smarty->clear_cache() と $smarty->display() のパラメータは一貫して記述する必要があります

5. 部分的なキャッシュ 部分キャッシュとは、同じページ内の特定のローカルな場所を指定してキャッシュを生成することです。実際には、どの部分がキャッシュを生成するかは指定されていませんが、どの部分がキャッシュを生成しないかは指定されていません(これは部分キャッシュの動作概念に似ています)。まず次の例を見てみましょう。 Article.php ファイルの一部:

  1. $time=time();
  2. $smarty->assign('time',$lanmuarr);
  3. function insert_timeget(){
  4. return time();
  5. }
  6. $ Smarty->display('article.html');
コードのテンプレート ファイルarticle.html 部分に対応するコード

をコピーします。

  1. {$time}
  2. {insert name='timeget'}< ;!--有効にする キャッシュ後に繰り返し更新すると、この値が変更されます-->
コードをコピー

上記の例の説明は次のとおりです: PHP では、カスタム補助名を持つ insert_ (アンダースコアに注意) という名前のカスタム関数を定義するだけでよく、返される値を assign() メソッドで渡す必要はありません。 . {insert name='customSupplementary name'} を使用してテンプレート ページ内で直接呼び出されると、キャッシュの影響を受けず、リアルタイムで更新されます。

Smarty キャッシュを使用するだけでは十分ではないと思われる場合は、カスタム キャッシュを使用することもできます。

次のようなカスタム関数を使用してキャッシュを処理するには、cache_handler_func を設定する必要があります。

  1. $smarty->cache_handler_func="myCache";
  2. function myCache($action,&$smarty_obj,&$cache_content,$tpl_file=null,$cache_id=null,$compile_id=null){
  3. switch ($action){
  4. case "read"://キャッシュ内容の読み取り
  5. case "write"://キャッシュの書き込み
  6. case "clear"://Clear
  7. }
  8. }
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。