Table of Contents
Detailed explanation of the caching mechanism of Smarty template engine, detailed explanation of smarty template engine
Home Backend Development PHP Tutorial Detailed explanation of smarty template engine caching mechanism, detailed explanation of smarty template engine_PHP tutorial

Detailed explanation of smarty template engine caching mechanism, detailed explanation of smarty template engine_PHP tutorial

Jul 12, 2016 am 08:50 AM
smarty template template engine cache

Detailed explanation of the caching mechanism of Smarty template engine, detailed explanation of smarty template engine

This article describes the caching mechanism of Smarty template engine with examples. Share it with everyone for your reference, the details are as follows:

First of all, 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 files are still PHP files, so they are still compiled when executed. , if it involves a database, you still have to access the database, so the overhead is not small, so smart caching is needed to solve it!

1. Enable global cache

$smarty->cache_dir = "/caches/"; //缓存目录
$smarty->caching = true; //开启缓存,为flase的时侯缓存无效
$smarty->cache_lifetime = 3600; //缓存时间

Copy after login

2. One page uses multiple caches

For example: an article template page will generate multiple article pages, which are 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"]);

Copy after login

As above, cache an article page through the id of the article as the second parameter.

3. Reduce overhead for caching

In other words, cached pages do 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');

Copy after login

4. Clear cache

Generally, caching is not enabled during the development process because the output results remain unchanged during the cache time. However, enabling caching during the application process 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的缓存

Copy after login

5. Turn off local cache

If part of a page is cached and 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) Part of the template using insert is not cached

Define a processing function to be used by the 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, then The method used in the template is {insert name=abc}

Parameters are passed in through $params

It can also be made into an insert plug-in. The file name is: insert.xx.php, the function is named: smarty_insert_aa($params,&$smarty), and the definition of xx 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表示区域名

Copy after login

Registration block:

$smarty->register_block(name, smarty_block_name, false);
//第三参数false表示该区域不被缓存

Copy after login

Template writing:

{name}内容 {/name}

Copy after login

is written as block plug-in:

Step one: 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:

<&#63;php
function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
&#63;>

Copy after login

Step 2: Write programs and templates

Sample program: testCacheLess.php

<&#63;php
include(Smarty.class.php);
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display(cache.tpl);
&#63;>

Copy after login

Template used: cache.tpl

已经缓存的:{$smarty.now}<br>
{cacheless}
没有缓存的:{$smarty.now}
{/cacheless}

Copy after login

Run it now and find that 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 to restore it if necessary)

Find:
Copy code The code is as follows: $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);

was changed 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);

Copy after login

You can also directly change the last parameter of the original sentence to false, which means turning off the default cache.

(3) Use register_function to prevent the plug-in from outputting from the cache

index.tpl:

<div>{current_time}{/div}
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');

Copy after login

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}

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

Readers who are interested in more Smarty-related content can check out the special topics on this site: "Basic Tutorial for Getting Started with Smarty Templates", "Summary of PHP Template Technology", "Summary of PHP Database Operation Skills Based on PDO", "PHP Operations and Operators" Usage summary", "PHP network programming skills summary", "PHP basic syntax introductory tutorial", "php object-oriented programming introductory tutorial", "php string (string) usage summary", "php mysql database operation introductory tutorial" and "Summary of Common Database Operation Skills in PHP"

I hope this article will be helpful to everyone’s PHP program design based on smarty templates.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1133106.htmlTechArticleDetailed explanation of Smarty template engine caching mechanism, Detailed explanation of smarty template engine. This article describes the Smarty template engine caching mechanism with examples. Share it with everyone for your reference, the details are as follows: First of all, let’s talk about s...
Statement of this Website
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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to view and refresh dns cache in Linux How to view and refresh dns cache in Linux Mar 07, 2024 am 08:43 AM

DNS (DomainNameSystem) is a system used on the Internet to convert domain names into corresponding IP addresses. In Linux systems, DNS caching is a mechanism that stores the mapping relationship between domain names and IP addresses locally, which can increase the speed of domain name resolution and reduce the burden on the DNS server. DNS caching allows the system to quickly retrieve the IP address when subsequently accessing the same domain name without having to issue a query request to the DNS server each time, thereby improving network performance and efficiency. This article will discuss with you how to view and refresh the DNS cache on Linux, as well as related details and sample code. Importance of DNS Caching In Linux systems, DNS caching plays a key role. its existence

Advanced Usage of PHP APCu: Unlocking the Hidden Power Advanced Usage of PHP APCu: Unlocking the Hidden Power Mar 01, 2024 pm 09:10 PM

PHPAPCu (replacement of php cache) is an opcode cache and data cache module that accelerates PHP applications. Understanding its advanced features is crucial to utilizing its full potential. 1. Batch operation: APCu provides a batch operation method that can process a large number of key-value pairs at the same time. This is useful for large-scale cache clearing or updates. //Get cache keys in batches $values=apcu_fetch(["key1","key2","key3"]); //Clear cache keys in batches apcu_delete(["key1","key2","key3"]);2 .Set cache expiration time: APCu allows you to set an expiration time for cache items so that they automatically expire after a specified time.

How to save video files from browser cache to local How to save video files from browser cache to local Feb 23, 2024 pm 06:45 PM

How to Export Browser Cache Videos With the rapid development of the Internet, videos have become an indispensable part of people's daily lives. When browsing the web, we often encounter video content that we want to save or share, but sometimes we cannot find the source of the video files because they may only exist in the browser's cache. So, how do you export videos from your browser cache? This article will introduce you to several common methods. First, we need to clarify a concept, namely browser cache. The browser cache is used by the browser to improve user experience.

How to add PPT mask How to add PPT mask Mar 20, 2024 pm 12:28 PM

Regarding PPT masking, many people must be unfamiliar with it. Most people do not understand it thoroughly when making PPT, but just make it up to make what they like. Therefore, many people do not know what PPT masking means, nor do they understand it. I know what this mask does, and I don’t even know that it can make the picture less monotonous. Friends who want to learn, come and learn, and add some PPT masks to your PPT pictures. Make it less monotonous. So, how to add a PPT mask? Please read below. 1. First we open PPT, select a blank picture, then right-click [Set Background Format] and select a solid color. 2. Click [Insert], word art, enter the word 3. Click [Insert], click [Shape]

Caching mechanism and application practice in PHP development Caching mechanism and application practice in PHP development May 09, 2024 pm 01:30 PM

In PHP development, the caching mechanism improves performance by temporarily storing frequently accessed data in memory or disk, thereby reducing the number of database accesses. Cache types mainly include memory, file and database cache. Caching can be implemented in PHP using built-in functions or third-party libraries, such as cache_get() and Memcache. Common practical applications include caching database query results to optimize query performance and caching page output to speed up rendering. The caching mechanism effectively improves website response speed, enhances user experience and reduces server load.

APCu Best Practices: Improving the Efficiency of Your Applications APCu Best Practices: Improving the Efficiency of Your Applications Mar 01, 2024 pm 10:58 PM

Optimizing Cache Size and Cleanup Strategies It is critical to allocate appropriate cache size to APCu. A cache that is too small cannot cache data effectively, while a cache that is too large wastes memory. Generally speaking, setting the cache size to 1/4 to 1/2 of the available memory is a reasonable range. Additionally, having an effective cleanup strategy ensures that stale or invalid data is not kept in the cache. You can use APCu's automatic cleaning feature or implement a custom cleaning mechanism. Sample code: //Set the cache size to 256MB apcu_add("cache_size",268435456); //Clear the cache every 60 minutes apcu_add("cache_ttl",60*60); Enable compression

The relationship between CPU, memory and cache is explained in detail! The relationship between CPU, memory and cache is explained in detail! Mar 07, 2024 am 08:30 AM

There is a close interaction between the CPU (central processing unit), memory (random access memory), and cache, which together form a critical component of a computer system. The coordination between them ensures the normal operation and efficient performance of the computer. As the brain of the computer, the CPU is responsible for executing various instructions and data processing; the memory is used to temporarily store data and programs, providing fast read and write access speeds; and the cache plays a buffering role, speeding up data access speed and improving The computer's CPU is the core component of the computer and is responsible for executing various instructions, arithmetic operations, and logical operations. It is called the "brain" of the computer and plays an important role in processing data and performing tasks. Memory is an important storage device in a computer.

Effects of C++ template specialization on function overloading and overriding Effects of C++ template specialization on function overloading and overriding Apr 20, 2024 am 09:09 AM

C++ template specializations affect function overloading and rewriting: Function overloading: Specialized versions can provide different implementations of a specific type, thus affecting the functions the compiler chooses to call. Function overriding: The specialized version in the derived class will override the template function in the base class, affecting the behavior of the derived class object when calling the function.

See all articles