ホームページ  >  記事  >  バックエンド開発  >  Smarty がキャッシュ構成を部分的に閉じる_PHP チュートリアル

Smarty がキャッシュ構成を部分的に閉じる_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:40:081044ブラウズ

特定の領域のキャッシュ (必要なキャッシュのみ) を無効にするには、いくつかの方法があります:

一、インサー:

insert タグで使用される処理関数を定義します。関数名の形式は、insert_xx (array $params, object &$smarty) です。つまり、定義する関数が insert_abc の場合です。 、テンプレート内で使用方法は {insert name=abc} です

パラメータは$paramsを通じて渡されます

挿入プラグインにすることもできます。ファイル名はinsert.xx.php、関数名はsmarty_insert_aa($params,&$smarty)、xxの定義は上記と同じです


二、登録ブロック:

ブロックを定義します:smarty_block_name($params,$content, &$smarty){return $content;} //nameはエリア名を表します

Register block:$smarty->register_block(name, Smarty_block_name, false); //3 番目のパラメータ false は、この領域がキャッシュされないことを意味します

テンプレートの作成: {name} content {/name}

ブロックプラグインとして記述:

(1) プラグイン関数 block.cacheless.php を定義し、smarty の plugins ディレクトリに配置します

block.cacheless.phpの内容は以下の通りです:

関数 Smarty_block_cacheless($param, $content, &$smarty) {

$content を返す;

}

?>

(2) プログラムとテンプレートを書く

サンプルプログラム: testCacheLess.php

include(Smarty.class.php);

$smarty = 新しい Smarty;

$smarty->caching=true;

$smarty->cache_lifetime = 6;

$smarty->display(cache.tpl);

?>

使用したテンプレート:cache.tpl

キャッシュ済み: {$smarty.now}

{キャッシュレス}

キャッシュなし: {$smarty.now}

{/キャッシュレス}

今すぐ実行すると、コンテンツの両方の行がキャッシュされていることがわかります

(3) Smarty_Compiler.class.php を書き換えます (注: このファイルは非常に重要です。必要に応じて復元するために、最初にバックアップしてください)

Find$this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true); //私のは行 705 です

次のように変更されました:

if($tag_command == キャッシュレス) $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, false);

else $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);

元の文の最後のパラメータを直接 false に変更することもできます。smarty の内部の仕組みはよくわからないので、ブロックがキャッシュレスである限りキャッシュされないという判断を追加しました。

(4)OK、template_c 内のコンパイル済みファイルをクリアして、再度実行します。うまくいきますか?

。 出典: プログラミング ホーム
  • http://www.bkjia.com/PHPjc/486228.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486228.html技術記事特定の領域のキャッシュ (必要なキャッシュのみ) を無効にするには、いくつかの方法があります。 1. insert: insert タグで使用される処理関数を定義します。関数名の形式は、insert_xx(array $params, o..
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。