smarty之缓存笔记

smarty缓存技术


  在smarty中,缓存分为:普通缓存,单模版都缓存,局部缓存。

缓存:
1:首选打开缓存配置项:$smarty->caching=true;

2:缓存生命周期的配置选项:$smarty->cache_lifetime=整秒数

3:$smarty->is_cached('index.html')判断index.html页面是否缓存,如果缓存,避免io操作

 1 include('./libs/Smarty.class.php');
 2 $smarty=new Smarty();
 3 $conn=mysql_connect('127.0.0.1','root','');
 4 mysql_query('use smarty_cache',$conn);
 5 mysql_query('set nemes gbk',$conn);
 6 
 7 $smarty->caching=true;
 8 //开启缓存
 9 $id=$_GET['id']+0;
10 $sql='select * from user where id='.$id;
11 if(!$smarty->is_cached('index.html'))
12 {
13 $result=mysql_query($sql,$conn);
14 $row=mysql_fetch_assoc($result);
15     $smarty->assign('id',$row['id']);
16     $smarty->assign('name',$row['name']);
17     echo '走了数据库';
18 }
19 $smarty->display('index.html');

 


单模版,多缓存

1:缓存参数$smarty->display('index.html',$id);
2:$smarty->is_cached('index.html',$id)判断index.html页面是否缓存,通过id来判断,id可以通过拼凑,可以参考ecshop中的缓存。
原则:凡是能影响页面内容的变量,就要根据此变量cached_id

include('./libs/Smarty.class.php');
$smarty=new Smarty();
$conn=mysql_connect('127.0.0.1','root','');
mysql_query('use smarty_cache',$conn);
mysql_query('set nemes gbk',$conn);

$smarty->caching=true;
//开启缓存
$id=$_GET['id']+0;
$sql='select * from user where id='.$id;
$cached_id=$id+'XX'
if(!$smarty->is_cached('index.html',$cached_id))
{
$result=mysql_query($sql,$conn);
$row=mysql_fetch_assoc($result);
    $smarty->assign('id',$row['id']);
    $smarty->assign('name',$row['name']);
    echo '走了数据库';
}
$smarty->display('index.html',$cached_id);

 



3:局部缓存:
在模版中不需要缓存的地方,用{insert name='nocachedid'}来表示,那么该处最终的值就是,insert_nocachedid()函数的返回值


 <body>
    这是这是一个smarty缓存技术的页面页面<br/>
    {insert name=getname}
    编号:{$id}&nbsp;姓名:{$name}

 </body>
include('./libs/Smarty.class.php');
$smarty=new Smarty();
$conn=mysql_connect('127.0.0.1','root','');
mysql_query('use smarty_cache',$conn);
mysql_query('set nemes gbk',$conn);
function insert_getname()
{

    return $_SESSION['name']
}
$smarty->caching=true;
//开启缓存
$id=$_GET['id']+0;
$sql='select * from user where id='.$id;
if(!$smarty->is_cached('index.html',$id))
{
$result=mysql_query($sql,$conn);
$row=mysql_fetch_assoc($result);
    $smarty->assign('id',$row['id']);
    $smarty->assign('name',$row['name']);
    echo '走了数据库';
}
$smarty->display('index.html',$id);

在ecshop中,用到了smarty模版技术,只能复习下smarty技术了

posted @ 2014-10-31 15:21  尼科  阅读(182)  评论(0编辑  收藏  举报