Smarty 模板引擎下缓存设置

Posted Shuo_128

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Smarty 模板引擎下缓存设置相关的知识,希望对你有一定的参考价值。

缓存:就是将用户重复使用的内容进行缓存生成html内容。

  缓存类型

    全局缓存: 将整个页面内容都生成静态内容。

      Cache_dir: 缓存目录配置

      Cache_lifetime:缓存的有效周期

      Cacheing:设置是否开启缓存

    局部缓存: 控制整个页面中的某个内容缓存,或者某个内容不缓存。

      insert函数调用的内容不缓存:

        定义insert类型的函数:

          Smarty 2.x版本:

            Function insert_插件名(参数列表){

              功能代码

            }

          Smarty 3.x版本:

            Function smarty_insert_插件名(参数){

              功能代码

            }

      前台调用

        {ts:insert name="插件名"}

    register_plugins()

      函数定义:

        Function smarty_modifier/block/function_插件名(参数){

          代码

        }

      动态注册函数为临时插件

        $tpl -> register_plugins("类型",函数名,前台调用的标签名)

        类型:modifier/block/function

        $tpl ->registerplugin("function","getmessage","samrty_function_插件名",控制是否缓存)

        True|默认不写:缓存数据

        False:不缓存数据

      前台调用:

        {ts:前台调用的标签名}

  【smarty.inc.php#首先要在smarty.inc.php中加入缓存文件的开启#

<?php
require_once("./libs/Smarty.class.php");
$tpl = new Smarty;
$tpl -> template_dir = "./templates/";
$tpl -> compile_dir = "./compilers/";
$tpl -> cache_dir = "./caches/";  //设置缓存文件目录
$tpl -> cache_lifetime = 30;  //缓存文件保留时间
$tpl -> caching = true;
$tpl -> left_delimiter = "{ts:";
$tpl -> right_delimiter= "}";
?>

  【contents.php】

<?php
require_once("./smarty.inc.php");
require_once("./mysql.class.php");
$id = 1;
if(isset($_GET[‘id‘]))
    $id = $_GET[‘id‘];

$sql = "select * from ts_ch_news where id={$id}";
$db = new MySql;
$db -> query($sql);
$data = $db -> find();
$tpl -> assign("title",$data[‘title‘]);
$tpl -> assign("body",$data[‘body‘]);

$cacheid = md5($_SERVER[‘REQUEST_URI‘]);
$tpl -> display("contents.html",$cacheid);
?>

  【contents.html】

<html>
    <head>
        <title>{ts:$title}</title>
    </head>
    <body>
        {ts:$body}
    </body>
</html>

 

  Display(模板文件名,缓存id);

    缓存id:文件的url地址进行md5加密

    $cache_id= md5($_SERVER[‘REQUEST_URI‘])  

    #因为给缓存文件传值的时候需要id唯一,所以这里我们调用$_SERVER[‘REQUEST_URI‘并用MD5进行加密处理既可做到唯一#

  删除缓存

        $tpl ->iscached("模板文件"[,缓存id])  判断缓存文件是否存在

        $tpl -> clear_cache("模板文件"[,缓存id])   删除某个缓存文件

        $tpl->clear_all_cache();  全部删除

<?php
if($tpl -> iscached("contents.html",$cache_id)){
    $tpl -> clearCache("contents.html",$cache_id);
    $tpl -> clearAllCache();
}
?>

 

以上是关于Smarty 模板引擎下缓存设置的主要内容,如果未能解决你的问题,请参考以下文章

Smarty模板引擎

全面剖析Smarty缓存机制一[三种缓存方式]

(12) PHP 随笔---Smarty模板引擎 单模板多缓存局部不缓存 20--21

php模板引擎smarty

smarty 快速入门

smarty 快速入门