smarty并不能生成html文件。他是把文件内容生存表态存起来。访问的还是php文件。不过php代码只一点点,速度基本和html文件无二。

解决方案 »

  1.   

    生成的缓存在你指定的cache目录。生成的文件不是纯html,里面还有一些控制信息的,不能直接使用。
      

  2.   

    那样的话,1。如何可以控制即时更新刷新cache,而不是根据每页缓存中的时间刷新?
    2。我看了cache文件夹中的文件了,比如我里面有一个%%CC^CC7^CC77D5AB%%play.htm(模板我是以.htm为后缀的文件),这个是歌曲的播放页面,里面传过来的歌曲id只有一个,而我测试的歌曲上万个,那么每次访问都更新这个值的话,这个smarty就没有意义了。如生成html文件,每次就直接调用html了。请教这种情况下使用smarty生成的缓存是否有意义??
      

  3.   

    控制缓存更新有两种办法,一是你设置的$cache_lifetime过期。另一种是自己后台程序用clear_cache控制更新。csdn貌似用的就是第一种时间过期式。将id写入$cache_id。不同的$cache_id将生成不同的缓存文件。假如不写入$cache_id,缓存后不管你访问哪一个$id,显示的页面都将是第一次访问时的$id页面。
      

  4.   

    将id写入$cache_id。不同的$cache_id将生成不同的缓存文件。怎么设定呢?
    php文件开头只是这样设定的:
    $smarty=new Smarty();
    $smarty->templates_dir ="./templates"; //设置模板目录
    $smarty->compile_dir ="./templates_c"; //设置编译目录
    $smarty->cache_dir ="./cache"; //设置缓存目录
    $smarty->cache_lifetime = 0;      //设置缓存时间
    $smarty->caching =true;
    $smarty->left_delimiter="<{"; //设置左边界
    $smarty->right_delimiter="}>"; //设置右边界怎么设定使每个id都生成一个缓存文件?请楼上的老兄Gdj赐教!
      

  5.   

    看看display的参数
    display( string template [, string cache_id [, string compile_id]])把第二个参数,$cache_id换成你的$id即可
      

  6.   

    果然如gdj所言,我是这么写的:
    $smarty->display("play.htm","$id");多谢Gdj