Home  >  Article  >  Backend Development  >  smarty local caching technology [source code analysis]_PHP tutorial

smarty local caching technology [source code analysis]_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 17:41:53861browse

I have been using other template engines before. Today, when I was listening to the bkJia training course, I talked about the local cache of the smarty template engine. It felt very good. I combined my own understanding here and sighed. If there is anything wrong, place, I hope friends will reply. Let’s all learn together. At the same time, I would also like to thank Teacher Zhang for providing a very excellent learning platform for PHP beginners like us.

I discovered that smarty is such a powerful and magical thing, which makes me like it as much as the template engine I used before.

Because I enable smarty’s cache by default, but the data in some places is updated in real time or updates quickly, so it is not suitable for caching. In this way, local caching will be useful.

1. insert method

Define a function to display time:

<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>

Then in the template:

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

In this way, every time you open the page, the real-time time will be displayed instead of the cached time. Note that the function name here must start with insert, and the name in the template corresponds to it.

This method is simple, but if the content to be displayed is a large piece, it should not be used.

2. Dynamic block method

<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>

In template:

<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>

In this way, every time you refresh the page, the displayed time will be different.

3. Plug-in block method

Create a file in the Smarty/plugins directory

Block.nocache.php content is as follows:

<ol class="dp-c"><li class="alt"><span><span><?php   </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></span></li></ol>

This has the same effect as method 2, and the tags in the template are also the same. There is no need to register_block in the php file, which is very convenient.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/486092.htmlTechArticleI have been using other template engines before. Today, when I was listening to the PHP100 training course, I talked about the smarty template engine. Caching, it feels pretty good. I would like to express my feelings based on my own understanding...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn