+ -
当前位置:首页 → 问答吧 → smarty 模板,缓存和生成静态页面的处理

smarty 模板,缓存和生成静态页面的处理

时间:2007-08-11

来源:互联网

----------smarty 模板,为了节省编译过程
$tpl->template_dir = 'templates/';
$tpl->compile_dir = 'templates_c/';
$tpl->display('index.tpl');                       //处理正常

----------smarty 缓存,为了快速读取
$tpl->caching = true;                           //should be true when it on the host
$tpl->cache_lifetime = 60 * 60 * 24;     //设置缓存时间,when it on the host cache for one day
$tpl->cache_dir = 'cache/';                  
$tpl->display('index.tpl');                      // 处理异常,无法动态读出数据库内容,仅显示标题或变量

----------smarty 静态页面生成,为了搜索引擎
不知道如何处理?

:( :( :(

作者: julia_yl   发布时间: 2007-08-11

其实你这种方法和优化搜索没有任何关系的,因为搜索的优化并不是说最后运行的是不是静态页面,而是在URL路径中是不是静态。
其实你这用的是smarty的二级静态缓存。

如果要用smarty生成静页页面的话是很容易而且方便的。
$content  = $smarty->fetch();
这个就可以很容易得到由smarty生成的页面内容然后再写入一个html文件中就OK了。:)

作者: virue   发布时间: 2007-08-11

谢谢!
例如 index.php 文件如何生成静态文件?

作者: julia_yl   发布时间: 2007-08-11

  1. $content  = $smarty->fetch();
  2. fopen();
  3. fwrite();
复制代码

或者用ob
  1. ob_start();
  2. $smarty->display();
  3. ob_get_contents();
  4. ob_end_clean();
复制代码

作者: hotbone   发布时间: 2007-08-11

如此说明,每个页面需执行3次
----------1次为模板编译  teple
----------2次为静态缓存  cache
----------3次为静态搜索  fetch

必须这样吗?是否会影响速度?

作者: julia_yl   发布时间: 2007-08-12

从网上找的一段解释:
简单的说吧,smarty开启静态缓存时,是会生成html静态页面,此时可以不执行任何逻辑,只要首先判断是否有缓存生成,有的话直接输出,然后直接停止脚本,这样效率是非常高的,相当于直接打开静态页面,  
   
  不开启静态缓存时,那就会生成模板编译文件,把所有smarty标签转换成echo变量的形式,并不能提高任何效率,但也不会增加太多额外的执行时间,  
   
  “smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定smarty的cache属性为true时,在smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。”

作者: xiaojia   发布时间: 2007-08-13

最好指定了smarty cache的分目录...这样处理会比较高效

作者: londit.cn   发布时间: 2007-08-28

见识了···
但是呢,如果一个新项目,不让用smarty,并且要做到静态化,首先应该做的事情是什么呢???
应该怎么解决呢?
很郁闷·······高手指教!

作者: Alex_Best   发布时间: 2009-06-10

页面信息需要经常更新的,使用了缓存,信息就不能实时更新了。。。。

作者: h405055468   发布时间: 2010-07-16

最好指定了smarty cache的分目录

作者: tieqilin   发布时间: 2010-07-17