Smarty的配置与高级缓存技术分享
框架(架构) / 管理员 发布于 7年前 185
Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface。
学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件,给后台服务器减少很多负担。
下载与配置
官方下载:Smarty Download
下载完后,解压到自己项目的文件目录下。
复制代码 代码如下:$smarty->cache_dir = MY_SMARTY_DIR . '/cache/' ; //设置缓存的存放路径
$smarty->force_compile = false; //强迫编译
Smarty 缓存技术
全局缓存
局部缓存
insert 法
动态 block 法
插件 block 法
全局缓存技术
顾名思义,全局缓存就是把整个页面生成缓存文件,指定该缓存文件的存活时间,在指定时间内再次浏览整个页面,将直接读取缓存文件。
注意:一个模板只能有一个缓存文件,如果您的模板存在多个页面的话,就要为缓存 设置一个ID。 例如一个页面有多个文章:
http://website/index.php?p=1
http://website/index.php?p=2
重点:使用缓存技术,很大一个原因就是为了减少对数据库的读写,所以我们要用$smarty->isCached('index.tpl')来判断缓存是否存在,如果存在了就不要再次操作数据库。
PS:我用的是Smarty3版本,这个版本很多方法的命名都发生变化了,如果是Smarty2的话会出现“Call of unknown method ‘isCached'.”,请使用$smarty->is_cached()。
后面出现的 Smarty3:registerPlugin(), Smarty2:register_block() 也一样是版本的问题。
下面我们来看一下有缓存和没缓存的速度比较:
1.首次浏览,没有缓存 Total Time 0.01421
局部缓存技术
局部缓存 = 部分缓存, 就是一个页面的缓存中,并不是全都生成缓存,可以自定义设置某个功能模块不生成缓存,每次浏览都会更新数据;
例如:网页显示用户的状态、网页的统计数据、广告条等,这些数据的更新速度都非常快,不宜缓存,这样,局部缓存便有用武之地了。
局部缓存有3个方法:
一、insert法
insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数.
使用方法:
注意这里的函数名一定要以insert开头,模板中的name与之对应。
index.php
cache: 2012-06-04 15:46:52
这种方法简单,但是如果要显示的内容是一大块的,就不宜使用了。
二、动态block 法
php中自定义块
index.php
[code]
//smarty 3
// function declaration
function smarty_block_nocache ($param,$content,$smarty)
{
return $content;
}
// register with smarty
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");
index.tpl
{nocache}{$date}{/nocache}
然后看缓存文件 , 得出结论每次调用该模板都会重新执行$date
[/code]
tpl_vars['date']->value;?>
这个方法和第2个差不多,只是把php中的自定义块,放到smarty目录中的plugins文件夹中。
在Smarty/plugins目录下建一个文件 block.nocache.php 内容如下:
总结
可以总结出Smarty缓存技术,能大大的提高网站的速度和质量,用法也比较简单。
最后提醒一下的就是, Smarty生成的缓存文件的扩展名虽然是php,但并不会被当作php代码来解析.
作者:那瞬间
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号