Detailed explanation of how Smarty template engine caches
This article mainly introduces the Smarty template engine caching mechanism, and analyzes the principles of the Smarty template engine caching mechanism in the form of examples, how to enable and use it, and related precautions. Friends in need can refer to it. I hope to be helpful.
The details are as follows:
First let’s talk about smarty caching and compilation. These are two different concepts. Compilation is enabled by default, while the caching mechanism needs to be turned on manually. Smarty compiled The file is still a PHP file, so it is still compiled when executed. If it involves a database, it still needs to access the database, so the overhead is not small, so smarty caching is needed to solve it!
1. Enable global cache
$smarty->cache_dir = "/caches/"; //缓存目录 $smarty->caching = true; //开启缓存,为flase的时侯缓存无效 $smarty->cache_lifetime = 3600; //缓存时间
2. Use multiple caches for one page
For example: an article template page Multiple article pages will be generated, and of course cached into many pages. It is very simple to implement. Just set the second parameter in the display() method and specify a unique identifier. The following php code:
$smarty->display('index.tpl',$_GET["article_id"]);
As above, cache an article page through the second parameter of the article's id.
3. Reduce the cost of caching
In other words, the cached page does not need to be processed by the database, and can be judged through the is_cached() method!
if(!$smarty->is_cached('index.tpl')){ //调用数据库 } $smarty->display('index.tpl');
4. Clear the cache
Generally, the cache is not turned on during the development process, because the output result remains unchanged during the cache time, but it is turned on during the application process Caching can greatly improve web performance. The method to clear the cache is as follows:
clear_all_cache();//清除所有缓存 clear_cache('index.tpl');//清除index.tpl的缓存 clear_cache('index.tpl',cache_id);//清除指定id的缓存
5. Turn off local caching
If part of a page is cached, but another part does not need to be cached, You can do this. For example, to display the user's login name, you need to turn off the cache. Smarty provides the following three solutions:
(1) Use part of the insert template not to be cached
Definition A processing function to be used for an insert tag. The function name format is: insert_xx (array $params, object &$smarty) where xx is the name of insert. That is to say, if the function you define is insert_abc, use the method in the template For {insert name=abc}
parameters are passed in through $params
can also be made into an insert plug-in, the file name is: insert.xx.php, and the function name is: smarty_insert_aa($ params, &$smarty), xx definition is the same as above
(2)$smarty->register_block($params, &$smarty) prevents a certain block of the entire page from being cached
Define a block:
smarty_block_name($params,$content, &$smarty){return $content;} //name表示区域名
Register block:
$smarty->register_block(name, smarty_block_name, false); //第三参数false表示该区域不被缓存
Template writing:
{name}内容 {/name}
Write as block plug-in:
Step 1: Define a plug-in function: block.cacheless.php and place it in smarty’s plugins directory
The content of block.cacheless.php is as follows:
<?php function smarty_block_cacheless($param, $content, &$smarty) { return $content; } ?>
Step 2: Write programs and templates
Sample program: testCacheLess.php
<?php include(Smarty.class.php); $smarty = new Smarty; $smarty->caching=true; $smarty->cache_lifetime = 6; $smarty->display(cache.tpl); ?>
Template used: cache.tpl
已经缓存的:{$smarty.now}<br> {cacheless} 没有缓存的:{$smarty.now} {/cacheless}
Now run it and find that it is It doesn’t work, both lines of content are cached
Step 3: Rewrite Smarty_Compiler.class.php(Note: This file is very important, please back it up first. Restore when necessary)
Find:
Copy code The code is as follows:
$this->_plugins[block ][$tag_command] = array($plugin_func, null, null, null, true);
Modify to:
if($tag_command == cacheless) $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);
You can also directly change the last parameter of the original sentence to false , that is, turn off the default cache.
(3) Use register_function to prevent the plug-in from outputting from the cache
index.tpl:
<p>{current_time}{/p} index.php: function smarty_function_current_time($params, &$smarty){ return date("Y-m-d H:m:s"); } $smarty=new smarty(); $smarty->caching = true; $smarty->register_function('current_time','smarty_function_current_time',false); if(!$smarty->is_cached()){ ....... } $smarty->display('index.tpl');
Note:
Define a function, the function name format is :smarty_type_name($params, &$smarty)
type is function
name is the user-defined label name, here it is {current_time}
two Parameters are required, even if they are not used in the function, they must be written. The functions of the two parameters are the same as above.
Related recommendations:
#Yii2 simple parsing using cache
Build PHP framework and build a template engine example
What are the php smarty template operators? How to use operators?
The above is the detailed content of Detailed explanation of how Smarty template engine caches. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Python is a versatile programming language that is popular in the field of data analysis and machine learning. Its simplicity, readability, and rich library make it ideal for handling complex data tasks. One such powerful application is RFM analysis, a technique used in marketing to segment customers based on their purchasing behavior. In this tutorial, we will guide you through the process of implementing RFM analysis using Python. We will start by explaining the concept of RFM analysis and its importance in marketing. We will then gradually dive into the practical aspects of RFM analysis using Python. In the next part of the article, we will demonstrate how to calculate an RFM score for each customer using Python, taking into account the values for recency, frequency, and

Recently, "Black Myth: Wukong" has attracted huge attention around the world. The number of people online at the same time on each platform has reached a new high. This game has achieved great commercial success on multiple platforms. The Xbox version of "Black Myth: Wukong" has been postponed. Although "Black Myth: Wukong" has been released on PC and PS5 platforms, there has been no definite news about its Xbox version. It is understood that the official has confirmed that "Black Myth: Wukong" will be launched on the Xbox platform. However, the specific launch date has not yet been announced. It was recently reported that the Xbox version's delay was due to technical issues. According to a relevant blogger, he learned from communications with developers and "Xbox insiders" during Gamescom that the Xbox version of "Black Myth: Wukong" exists.

What are the employment prospects of clinical pharmacy at Harbin Medical University? Although the national employment situation is not optimistic, pharmaceutical graduates still have good employment prospects. Overall, the supply of pharmaceutical graduates is less than the demand. Pharmaceutical companies and pharmaceutical factories are the main channels for absorbing such graduates. The demand for talents in the pharmaceutical industry is also growing steadily. According to reports, in recent years, the supply-demand ratio for graduate students in majors such as pharmaceutical preparations and natural medicinal chemistry has even reached 1:10. Employment direction of clinical pharmacy major: After graduation, students majoring in clinical medicine can engage in medical treatment, prevention, medical research, etc. in medical and health units, medical research and other departments. Employment positions: Medical representative, pharmaceutical sales representative, sales representative, sales manager, regional sales manager, investment manager, product manager, product specialist, nurse

Nowadays, website development is inseparable from an important component-template engine. A template engine refers to a tool that combines page templates and data to generate HTML code with a specific format. In various website development frameworks, the template engine is an essential component, because the template engine can greatly reduce the duplication of code and improve the dynamics of the page. One of the most common and popular template engines is Smarty. Smarty is a DSL (DomainSpecif

In modern web development, the separation of front-end and back-end has become a very popular trend, which allows developers to better organize projects and improve the efficiency of project development. PHP and Smarty are two very commonly used technologies, which can be used to achieve front-end and back-end separation development. This article will introduce how to use PHP and Smarty to achieve front-end and back-end separation development. What is front-end and back-end separation development? In traditional web development, the front-end is mainly responsible for the presentation of the page and the logic of interaction with the back-end. The backend is mainly responsible for the business

As a PHP developer, using a template engine is a natural choice. Smarty is a popular template engine that provides a way to separate HTML/CSS/JavaScript from PHP code, allowing developers to better organize and manage projects. In this article, we will learn how to use Smarty template engine during PHP development. 1. Install Smarty Before, we must install Smarty. In this article we will use Composer to install

PHP is a powerful server-side scripting language that can be used to develop web applications. In the early days of web development, programmers used a lot of HTML and JavaScript code to develop web applications. However, this approach is difficult to maintain and manage because the HTML and JavaScript code can become very complex. To solve this problem, the Smarty template engine was created. Smarty is a template engine developed based on PHP for managing and generating W

Recently, some friends reported how to download win10 image files. Because there are so many image files on the market, what should I do if I want to find a regular file to download? Today, the editor has brought you the link to download the image and the detailed solution steps. Let’s take a look at them together. win10 image quick download and installation tutorial download link >>> System Home Ghostwin101909 image 64-bit version v2019.11<<<>>>Win10 image 64-bit v2019.07<<<>>>Win10 image 32-bit v2019.07<< <1. Search through the Internet
