Heim  >  Artikel  >  Backend-Entwicklung  >  smarty局部缓存技术[源码分析]_PHP教程

smarty局部缓存技术[源码分析]_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:41:53858Durchsuche

  之前一直使用其它的模板引擎,今天在听bkJia培训课程的时候,讲到了smarty模板引擎的局部缓存,感觉挺好的,在此结合自身的理解,感慨一翻,要是有什么不对的地方,希望朋友跟贴回复。 大家一起共勉学习。 同时也感谢张老师,为像我们这样的PHP初学者提供一个非常优秀的学习平台。

  发现smarty是如此强大与神奇的一个东东,使我对它的好感不亚于对以前使用的模板引擎.

  由于我默认是开启smarty的缓存的,但是在些地方的数据是实时更新或者更新较快的,不宜缓存,这样,局部缓存便有用武之地了。

  1,insert 法

  定义一个函数显示时间的:

<ol class="dp-c">
<li class="alt"><span><span class="keyword">function</span><span> insert_get_current_time(){  </span></span></li>
<li>
<span>    </span><span class="vars">$timestamp</span><span>=</span><span class="func">empty</span><span class="keyword">empty</span><span>(</span><span class="vars">$timestamp</span><span>)?time():</span><span class="vars">$timestamp</span><span>;  </span>
</li>
<li class="alt">
<span>    </span><span class="vars">$timeoffset</span><span>=(int) </span><span class="string">+8</span><span>;  </span>
</li>
<li>
<span>    </span><span class="keyword">return</span><span> </span><span class="vars">$ret</span><span>=</span><span class="func">gmdate</span><span>(</span><span class="string">"Y-n-j g:ia"</span><span>, </span><span class="vars">$timestamp</span><span> + </span><span class="vars">$timeoffset</span><span> * 3600);  </span>
</li>
<li class="alt"><span>} </span></li>
</ol>

  然后在模板中:

 

<ol class="dp-c"><li class="alt"><span><span>{insert name=</span><span class="string">"get_current_time"</span><span>} </span></span></li></ol>

  这样每次打开页面,显示的都是即时时间,而不是缓存的。注意这里的函数名一定要以insert开头,模板中的name与之对应。

  这种方法简单,但是如果要显示的内容是一大块的,就不宜使用了。

  2,动态block 法

 

<ol class="dp-c">
<li class="alt"><span><span class="comment">//部分缓存 </span><span> </span></span></li>
<li>
<span class="keyword">function</span><span> smarty_block_nocache(</span><span class="vars">$param</span><span>, </span><span class="vars">$content</span><span>, </span><span class="vars">$smarty</span><span>)  </span>
</li>
<li class="alt"><span> {  </span></li>
<li>
<span>    </span><span class="keyword">return</span><span> </span><span class="vars">$content</span><span>;  </span>
</li>
<li class="alt"><span>}  </span></li>
<li>
<span class="vars">$smarty</span><span>->register_block(</span><span class="string">nocache</span><span>, </span><span class="string">smarty_block_nocache</span><span>, false); </span>
</li>
</ol>

在模板中:

 

<ol class="dp-c">
<li class="alt"><span><span>{nocache}  </span></span></li>
<li>
<span>{</span><span class="vars">$smarty</span><span>.now}  </span>
</li>
<li class="alt"><span>{/nocache} </span></li>
</ol>

\

  这样每次刷新页面,显示的时间都是不同的。

  3,插件block 法

  在Smarty/plugins目录下建一个文件

  block.nocache.php 内容如下:

 

<ol class="dp-c">
<li class="alt"><span><span><?php    </span></span></span></li>
<li>
<span class="keyword">function</span><span> smarty_block_nocache(</span><span class="vars">$param</span><span>, </span><span class="vars">$content</span><span>, </span><span class="vars">$smarty</span><span>)  </span>
</li>
<li class="alt"><span>{  </span></li>
<li>
<span>      </span><span class="keyword">return</span><span> </span><span class="vars">$content</span><span>;   </span>
</li>
<li class="alt"><span>}    </span></li>
<li><span>?> </span></li>
</ol>

  这样做与方法2的效果是一样的,模板中标签也一样。在 php文件中就不必要再register_block了,很方便。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/486092.htmlTechArticle之前一直使用其它的模板引擎,今天在听PHP100培训课程的时候,讲到了smarty模板引擎的局部缓存,感觉挺好的,在此结合自身的理解,感慨...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn