Smarty 有个问题一直相求解一下?
发布于:2022-01-17 09:50:54
#1 活着的生人
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步骤(从数据库获取数据)吗?程序大概是符合判别的?请高手指点!!!
该贴已经同步到 活着的生人的微博
2012-01-22 15:21:06
#2 jake
问题1,获取实例是为了后面的代码,如果没有获取实例,那么怎么对实例操作呢?
问题2,在上面的程序里面,正如你所料,第二次执行的时候,读取数据库之类的操作还是会被重新执行(这是因为从上而下执行的),只是因为模板被缓存了,所以模板在缓存时间内,不会接收新数据,也就仍然是原来的数据。
要使用缓存来跳过访问数据库,有两个方案,一是使用spCache(看手册介绍),二是在访问数据库前,先通过smarty实例检查一下该模板有没有被缓存,如无则执行读取数据库和缓存模板操作,有则直接显示模板。
2012-01-23 16:37:46
#3 活着的生人
“先通过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模板文件地址
这个例子中如何改?
求教,老大??
2012-01-23 18:11:56
#5 活着的生人
回复 4 jake 我对这个框架的运用有进了一步,由于接触php时间不长,再弱弱的问一个问题:Smarty缓存和spCache缓存,如何选择哪种技术进行自己的项目缓存技术,在怎样的情况下,哪种更具有优势?
请jake老大指定?!
2012-01-23 21:26:49
#6 jake
smarty缓存是模板缓存,spCache是数据缓存。可以一起用,不是相互斥的技术。
smarty模板缓存适用于模板不频繁修改,并且页面内容也经常不变动,但是页面显示次数比较多的情况,类似静态页面的道理。
spCache缓存,主要针对复杂查询,比如说很复杂的一条SQL查询语句(如包含子查询等),或者因为逻辑而无法使用索引查询的SQL语句(比如说模糊查找)。
2012-01-23 23:31:43
#7 活着的生人
回复 6 jake 多谢jake老大指教,大过年还能为我解答疑问,多谢了:handshake!
2012-01-24 12:25:39