This article explains the simple configuration and usage of ThinkPHP static cache with examples. Share it with everyone for your reference, the details are as follows:
According to the official ThinkPHP manual: ThinkPHP has a built-in static cache class, which implements configurable static cache through the definition of static cache rules.
Enable static cache:
ThinkPHP official manual writes
To use the static caching function, you need to enable the HTML_CACHE_ON parameter and add the static caching rule file htmls.php under the project configuration directory. Both are indispensable. Otherwise the static cache will not take effect.
Add in array() of the configuration file Confconfig.php:
'HTML_CACHE_ON' => true,//开启静态缓存 'HTML_PATH' => '__APP__/html',//静态缓存文件目录,HTML_PATH可任意设置,此处设为当前项目下新建的html目录
Static rule definition:
ThinkPHP official manual writes
There are three ways to define static rules:
Return Array( 'ActionName'=>array('静态规则','静态缓存有效期','附加规则'), //第一种 'ModuleName:ActionName'=>array('静态规则','静态缓存有效期','附加规则'),//第二种 '*'=>array('静态规则','静态缓存有效期','附加规则'),//第三种 …更多操作的静态规则 )
The first is to define global static rules for operations. For example, define the static rules for all read operations as:
'read'=>array('{id}','60')
Among them, {id} means taking $_GET['id'] as the static cache file name, and the second parameter means caching for 60 seconds.
The second is to define static rules for the operation of a certain module. For example, we need to define the read operation of the Blog module for static caching
'Blog:read'=>array('{id}',-1)
The third way is to define global static caching rules. This is used in special cases and is applicable to the operation of any module, such as
'*'=>array('{$_SERVER.REQUEST_URI|md5}') //根据当前的URL进行缓存。
I write here in the static cache rule file htmls.php:
<?php return array( 'getHtml' => array('{:action}', -1),//-1表示永久缓存 ); ?>
The above static caching rule means that the static rules that define all getHtml operations are:
'getHtml'=>array('{:action}',-1)
{:action} indicates that the current operation name is the static cache file name.
Also write in the LibActionIndexAction.class.php file:
<?php class IndexAction extends Action{ //在当前项目的html目录下生成getHtml.shtml public function getHtml() { header('Content-type:text/html;charset=utf-8'); $this->assign('title', '生成html文件'); $this->assign('info', '生成html文件'); $this->display(); } } ?>
Write in TpldefaultindexgetHtml.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>{$title}</title> </head> <body> <h2>{$info}</h2> </body> </html>
Then enter: http://127.0.0.1/myApp/index.php/index/getHtml in the browser and you can see the expected page.
After refreshing the page, the browser address bar will change, as follows:
ps: If you use apache, firefox and opera, they may not support shtml files. You can find "AddType text/html .shtml" and "AddOutputFilter INCLUDES .shtml" in the httpd.conf file and remove the previous "# respectively. "That's it.
Readers who are interested in more thinkPHP-related content can check out the special topics on this site: "ThinkPHP Getting Started Tutorial", "ThinkPHP Common Methods Summary", "Smarty Template Basic Tutorial" and "PHP Template Technology Summary".
I hope this article will be helpful to everyone’s PHP programming based on the ThinkPHP framework.