最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Smarty的配置与高级缓存技术分享
时间:2026-09-20 18:40:02 编辑:袖梨 来源:一聚教程网
Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface 前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface。 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件,给后台服务器减少很多负担。 下载与配置 官方下载:Smarty Download 下载完后,解压到自己项目的文件目录下。 复制代码 代码如下: require('../libs/Smarty.class.php'); $smarty = new Smarty; //$smarty->force_compile = true; //强迫编译 $smarty->debugging = true; //调试 $smarty->caching = true; //开启缓存 $smarty->cache_lifetime = 120; //缓存存活时间(秒) $smarty->cache_dir = MY_SMARTY_DIR . '/cache/' ; //设置缓存的存放路径注意:如果你发现缓存文件每次浏览都会发生改变,请看 Smarty的 force_compile , 它会强迫Smarty每次调用(重新)编译模板。这项设置不受$compile_check的限制。默认情况下,它是无效的。它对于开发和调试很方便.但它决不能使用于产品环境下.如果启动了缓存,每次将会重新生成缓存文件. $smarty->force_compile = false; //强迫编译 Smarty 缓存技术 全局缓存 局部缓存 insert 法 动态 block 法 插件 block 法 全局缓存技术 顾名思义,全局缓存就是把整个页面生成缓存文件,指定该缓存文件的存活时间,在指定时间内再次浏览整个页面,将直接读取缓存文件。 复制代码 代码如下: $smarty->caching = true; //开启缓存 $smarty->cache_lifetime = 120; //缓存存活时间(秒)注意:一个模板只能有一个缓存文件,如果您的模板存在多个页面的话,就要为缓存 设置一个ID。 例如一个页面有多个文章: http://we*bsi*te*/index.php?p=1 http://w*e*b*site/index.php?p=2 复制代码 代码如下: //$_SERVER['REQUEST_URI']方法 //将当前页面的URL(包含?后面的所有参数)进行md5加密 $url=md5($_SERVER['REQUEST_URI']); //设置缓存文件名 $smarty->display('index.tpl',$url);重点:使用缓存技术,很大一个原因就是为了减少对数据库的读写,所以我们要用$smarty->isCached('index.tpl')来判断缓存是否存在,如果存在了就不要再次操作数据库。 复制代码 代码如下: if(!$smarty->isCached('index.tpl')){ echo "ACACHE NO FOUND!"; $sql = "SELECT * FROM test"; $query = mysql_query($sql); $row = mysql_fetch_row($query); $smarty->assign("loaddatabase",$row[1]); } 这里又有问题了,如果我改了数据库的某个内容,想更新显示内容,但是缓存又还没到消亡时间,那该肿么办呢? $smarty->clearCache("index.tpl"); 上面的clearCache可以解决这个问题,只要更新了数据后,调用clearCache清除一下缓存就可以了。 PS:我用的是Smarty3版本,这个版本很多方法的命名都发生变化了,如果是Smarty2的话会出现“Call of unknown method ‘isCached'.”,请使用$smarty->is_cached()。 后面出现的 Smarty3:registerPlugin(), Smarty2:register_block() 也一样是版本的问题。 下面我们来看一下有缓存和没缓存的速度比较: 1.首次浏览,没有缓存 Total Time 0.01421
相关文章
- JEV人工智能官网入口:Jev AI国内访问与申请教程 09-20
- 用蓝耘元生代搭建本地图库语义搜索:一句话定位目标图片 09-20
- 企业级 Agent 如何从提效走向增收:落地路径与实践解析 09-20
- Smarty的配置与高级缓存技术分享 09-20
- 制造业AI改造:设备停机报修如何减少售后反复沟通 09-20
- AI 生成代码最容易藏坑的环节有哪些? 09-20