Smartyキャッシュ・テクノロジーの概要

8161 ワード

キャッシュを合理的に使用することで、Webサイトのサーバの圧力を効果的に軽減できることはよく知られています.php Smartyは非常に優れたphpテンプレートエンジンとして、非常に簡単で多様なキャッシュ操作を提供しています.次に、smartyキャッシュ操作のテクニックを学びましょう.ここでは、smartyキャッシュをオンおよび使用する方法、smartyキャッシュおよびsmartyのグローバルキャッシュ、部分キャッシュ、ローカルキャッシュの3つのキャッシュメカニズムをクリアする方法について分析します.
一、smartyキャッシュのオンと使用
smartyのキャッシュを開くには、smarty設定パラメータでcachingをtrueに設定し、cache_を指定します.dirでいいです.同時にcache_を設定するlefetimeパラメータは、キャッシュ生存時間(秒単位)を指定します.同じページに複数の異なるキャッシュを生成する場合は、displayまたはfetchに第2のパラメータcache_を追加できます.id、例えば:
コードの表示
 
印刷 1 $smarty ->display( 'index.tpl' , $my_cache_id );
このプロパティは、異なる$_に使用できます.GETは異なるキャッシュを行う. 二、smartyキャッシュをクリアする
smartyキャッシュをクリアするには、一般的に次の方法があります.
コードの表示
 
印刷 1 clear_all_cache(); // 2 clear_cache( 'index.tpl' ); // index.tpl 3 clear_cache( 'index.tpl' ,cache_id); // id
三、グローバルキャッシュ
グローバルキャッシュとは、Webサイト全体のすべてのページにキャッシュページを生成することです.グローバルキャッシュを設定するには、まずsmartyのプロファイルを操作し、キャッシュを開き、キャッシュファイルディレクトリを指定し、キャッシュの生存時間を設定します.設定パラメータは次のとおりです.
コードの表示
 
印刷 1 $smarty ->cache_dir= './cache/' // 2 $smarty ->caching=1; // 0、FALSE | 0 、TRUE 3 $smarty ->cache_lifetime=3600 // ( -1 )
次に、特定のphpページに対応する特定のキャッシュファイルの名前を設定します.phpページでは、次のように書くことができます.
コードの表示
 
印刷 1 $smarty ->display( 'list2.html' ,md5( $_SERVER [ 'REQUEST_URI' ])); // URL( ? ) md5
次の点に注意してください.
$smarty->display('に対応するテンプレートファイル名','キャッシュファイル名の補足部分')という方法.
2番目のパラメータは必須ではありません.書かなければ、キャッシュファイル名はテンプレートファイル名が暗号化されたファイルです.しかし、これは、次のような難しい問題に直面します.
http://www.phpernote.com/article.php?id=5
http://www.phpernote.com/article.php?id=7
この2つのURLはそれぞれ異なる内容に対応していますが、生成されたキャッシュファイル名はarticle暗号化後の結果です.これにより、ユーザーがクエリーしたいのは異なるコンテンツであり、同じキャッシュファイルにアクセスします.したがって、補助パラメータを追加してurl(後のすべてのパラメータを含む)md 5にアクセスすることをお勧めします.
四、部分キャッシュ
一部のキャッシュとは、Webサイトのすべてのファイルではなく、一部のファイルがキャッシュファイルを生成することを指定します.部分キャッシュの本質は、実際には部分的にキャッシュされないことです.つまり、どのファイルがキャッシュを生成するかを指定するのではなく、特定のファイルがキャッシュを生成しないことを指定します.3つのファイルがあるとします.
http://www.phpernote.com/index.php//キャッシュが必要
http://www.phpernote.com/cate.php//キャッシュが必要
http://www.phpernote.com/article.php//キャッシュ不要
前の2つのファイルのphpファイルには、$smarty->display('に対応するテンプレートファイル名'、'キャッシュファイル名の補足部分')という文を書く必要があります.
しかし、3番目のファイルでは、displayがテンプレートを指定する前に次のコードを書くことで、キャッシュを生成する必要がないことを特に示します.
$smarty->clear_Cache('に対応するテンプレートファイル名');//実は$smarty->display('に対応するテンプレートファイル名')の前でも後でも構いません
もちろん$smarty->display('に対応するテンプレートファイル名')は書きますが、もともとキャッシュを生成したくないので、2番目のパラメータも必要ありません.
注意:$smarty->clear_Cache()と$smarty->display()のパラメータは必ず一致する
五、ローカルキャッシュ
ローカルキャッシュとは、同じページの下にあるローカルの場所を指定してキャッシュを生成することです.実際には、キャッシュを生成するローカルを指定するのではなく、キャッシュを生成しないローカルを指定します(これは、一部のキャッシュの操作思想と似ています).まず次の例を見てみましょう.
article.phpファイルの一部は次のとおりです.
コードの表示
 
印刷 1 <?php 2 $time =time(); 3 $smarty ->assign( 'time' , $lanmuarr ); 4 function   insert_timeget(){ 5      return   time(); 6 } 7 $smarty ->display( 'article.html' );
対応するテンプレートファイルarticle.htmlの部分コードは以下の通りです.
コードの表示
 
印刷 1 < body > 2 {$time} <!-- , --> 3 {insert name='timeget'} <!-- , --> 4 </ body >
ここでは上の例について説明します.PHPでは関数名をinsert_と定義するだけです.(下線に注意)補足名をカスタマイズするカスタム関数で、返される値はassign()メソッドで渡す必要がなく、テンプレートページで{insert 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" : // 7      } 8 }
具体的にはここではあまり言わないで、読者は関連ドキュメントを参考にすることができて、作者はこれに対してよく知らないで、分かち合うのが人を誤ることを恐れます.