重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
页面缓存
成都创新互联主营徽州网站建设的网络公司,主营网站建设方案,app软件开发公司,徽州h5小程序定制开发搭建,徽州网站营销推广欢迎徽州等地区企业咨询
1.先使用数据库加载一组数据。
//PDO 数据库连接
$pdo = new PDO('MySQL:host=localhost;dbname=grade', 'root', '123456');
//设置字符集
$pdo->query('SET NAMES UTF8');
//得到准备对象
$stmt = $pdo->prepare("SELECT * FROM one");
//执行 SQL 语句
$stmt->execute();
//初始化
$object = [];
//组装数据列表
while ($rows = $stmt->fetchObject()) {
$object[] = $rows;
}
//输出显示
echo '执行了数据库操作';
$smarty->assign('object', $object);
$smarty->display('12.tpl');
姓名 | 数学 | 语文 | 英语 |
---|---|---|---|
{$obj->user} | {$obj->math} | {$obj->chinese} | {$obj->english} |
暴露问题:这张数据表,可能很长时间不会有所改动,比如一天,一周,一个月都不会
改动。但是,用户每次访问,都要经过数据库,造成性能上的极大浪费。这时,我们想通过
缓存技术,将第一次生成的页面静态化,然后以后就访问这个静态页面,从而避免执行数据
库操作。
2.开启缓存
//在配置文件里开启缓存设置
$smarty->caching = true;
//缓存的目录,第一次会自动生成
$smarty->cache_dir = 'cache';
刷新页面后,会自动生成 cache 目录。并生成了一个静态页面,下次访问是会访问这
个静态页面。不会因为数据库数据改变,而发生变化。但是,这个地方还是有问题的,虽然
访问的是静态页面。但并没有说,不执行 PHP 连接数据库,执行数据库这个步骤,所以,
我们还需要进行静态页面的判断工作。
3.判断缓存
//判断缓存是否存在
if (!$smarty->isCached('12.tpl')) {
}
先判断缓存是否存在,然后再执行 PHP 代码(包括执行数据库连接和执行)。如果存
在缓存,就直接忽略 PHP 代码部分,直接读取缓存,这样避免数据库执行浪费。
二.局部不缓存
1.使用{nocache}...{/nocache}让局部不缓存。
{nocache}
{$smarty.now|date_format:"Y-m-d H:i:s"}
{/nocache}
2.如果不缓存的内容本身是标签,可以在标签后直接加上 nocache 即可。
{$smarty.now|date_format:"Y-m-d H:i:s" nocache}