1、单页面单缓存
步骤:开启缓存($smarty->caching=true|$smarty->caching=2 设置lifetime生存时间)-->设置缓存目录($smarty->cache_dir='')-->
设置缓存文件的生存时间($smarty->cache_lifetime)-->利用display()或fetch()生成缓存文件
2、单页面多缓存
为了处理同样的显示界面,不同的显示内容。内容由url参数决定。同一个模板可以生成多个缓存文件(有多少内容显示就有多少缓存文件),多个缓存文件用display(*tpl,$_GET['id']);在php中可以用is_cached判断模板是否已被缓存,is_cached(*tpl,'$_GET['id'])
3、今天老师讲了一个单页面多缓存的示例:
从学生信息的数据库中像是出所有学生的信息,并且点击详细信息是就会将所选学生的详细信息显示出来:
首先在一个php文件中连接数据库通过mysql_query()和mysql_fetch_assoc()获取所有学生的信息,然后建立smarty,通过display()将其显示在*tpl模板中,在php文件中利用caching=1打开缓存,这样当再次打开同样的页面时就会直接调用缓存中的地址不用再次便已载入代码-->这一部分是单页面单缓存
当学生信息载入后点击详细信息,点击时让他跳转到一个php文件中,在跳转页面时让它传递过去一个id的参数,这是调用display(*tpl,$_GET['id']),利用is_cached(*tpl,$_GET["id"])判断是否已存在与该id相对应的缓存文件,若存在那下次在执行时就不需要在编译代码,然后再次新建一个tpl模板文件,将其载入
*php
<?php
include("connect_mysql.php");
include("../libs/Smarty.class.php");
$smarty=new Smarty;
$smarty->reInitSmarty("../demo/templates","../demo/templates_c","../demo/configs","../demo/cache");
$smarty->caching=1;
if(!$smarty->is_cached("stu_info.tpl",$_GET['id'])){
$q="select * from stu where id='".$_GET["id"]."'";
$res=mysql_query($q);
$arr=array();
while($row=mysql_fetch_assoc($res)){
$arr[]=$row;
}
$smarty->assign("info",$arr);
var_dump($arr);
echo "没有设置缓存……";
}
$smarty->display("stu_info.tpl",$_GET['id']);
?>