SpeedPHP技术交流论坛

 找回密码
 论坛注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 217|回复: 6

Smarty 有个问题一直相求解一下? [复制链接]

Rank: 4

发表于 2012-1-22 15:21:06 |显示全部楼层
Smarty 有个问题一直相求解一下:

$mTest = spClass("m_test");                                // 1、加载 模型(m_test.php),并且进行实例化
$this->Smarty_test = $mTest>findAll();                // 2、从数据库中获取数据,并保存在 变量Smarty_test 中
$smarty = $this->getView();                                 // 3、获取模板引擎实例(问题:这一步不是很明白,具体有什么作用?)
$smarty->caching = true;                                     // 4、开启Smarty缓存
$smarty->cache_lifetime = 3600;                           // 5、设置Smarty缓存时间
$this->display('test.html');                                    // 6、Smarty模板文件地址

问题一:第3步骤中括号中的问题?
问题二:假设 test.html 页面已经被缓存,并没有超过缓存时间,此时进行再次访问。
据我所知,程序代码是从上到下,进行一行行进行解析。那么 程序还会进行第2步骤(从数据库获取数据)吗?程序大概是符合判别的?请高手指点!!!

该贴已经同步到 活着的生人的微博

管理员

@speedphp

Rank: 9Rank: 9Rank: 9

发表于 2012-1-23 16:37:46 |显示全部楼层
问题1,获取实例是为了后面的代码,如果没有获取实例,那么怎么对实例操作呢?

问题2,在上面的程序里面,正如你所料,第二次执行的时候,读取数据库之类的操作还是会被重新执行(这是因为从上而下执行的),只是因为模板被缓存了,所以模板在缓存时间内,不会接收新数据,也就仍然是原来的数据。

要使用缓存来跳过访问数据库,有两个方案,一是使用spCache(看手册介绍),二是在访问数据库前,先通过smarty实例检查一下该模板有没有被缓存,如无则执行读取数据库和缓存模板操作,有则直接显示模板。
提问前注意:请先查手册、搜索本站和搜索论坛来查找答案,大部分问题都在手册和论坛旧贴中能够得到解答!

提问时注意要把问题说清楚,最好包括:代码、错误提示、截图等

Rank: 4

发表于 2012-1-23 18:11:56 |显示全部楼层
“先通过smarty实例检查一下该模板有没有被缓存”,这个具体代码是怎样的?

$mTest = spClass("m_test");                                // 1、加载 模型(m_test.php),并且进行实例化
$this->Smarty_test = $mTest>findAll();                // 2、从数据库中获取数据,并保存在 变量Smarty_test 中
$smarty = $this->getView();                                 // 3、获取模板引擎实例(问题:这一步不是很明白,具体有什么作用?)
$smarty->caching = true;                                     // 4、开启Smarty缓存
$smarty->cache_lifetime = 3600;                           // 5、设置Smarty缓存时间
$this->display('test.html');                                    // 6、Smarty模板文件地址

这个例子中如何改?
求教,老大??

管理员

@speedphp

Rank: 9Rank: 9Rank: 9

发表于 2012-1-23 20:23:45 |显示全部楼层
smarty官方手册上有清楚的说明
http://www.smarty.net/docs/en/api.is.cached.tpl
提问前注意:请先查手册、搜索本站和搜索论坛来查找答案,大部分问题都在手册和论坛旧贴中能够得到解答!

提问时注意要把问题说清楚,最好包括:代码、错误提示、截图等

Rank: 4

发表于 2012-1-23 21:26:49 |显示全部楼层
回复 4# jake


我对这个框架的运用有进了一步,由于接触php时间不长,再弱弱的问一个问题:Smarty缓存和spCache缓存,如何选择哪种技术进行自己的项目缓存技术,在怎样的情况下,哪种更具有优势?
请jake老大指定?!

管理员

@speedphp

Rank: 9Rank: 9Rank: 9

发表于 2012-1-23 23:31:43 |显示全部楼层
smarty缓存是模板缓存,spCache是数据缓存。可以一起用,不是相互斥的技术。

smarty模板缓存适用于模板不频繁修改,并且页面内容也经常不变动,但是页面显示次数比较多的情况,类似静态页面的道理。

spCache缓存,主要针对复杂查询,比如说很复杂的一条SQL查询语句(如包含子查询等),或者因为逻辑而无法使用索引查询的SQL语句(比如说模糊查找)。
提问前注意:请先查手册、搜索本站和搜索论坛来查找答案,大部分问题都在手册和论坛旧贴中能够得到解答!

提问时注意要把问题说清楚,最好包括:代码、错误提示、截图等

Rank: 4

发表于 2012-1-24 12:25:39 |显示全部楼层
回复 6# jake

多谢jake老大指教,大过年还能为我解答疑问,多谢了
您需要登录后才可以回帖 登录 | 论坛注册

Archiver|SpeedPHP.com ( 粤ICP备08008671号 )  

GMT+8, 2012-2-23 05:46

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部