我开启了缓存
require dirname(__FILE__).'/run.inc.php';
global $_tpl;
if(!$_tpl->is_cached('member.tpl',$_SERVER['REQUEST_URI'])){
$_member=new MemberAction();
$_member->action();
}
$_tpl->display('member.tpl',$_SERVER['REQUEST_URI']);
$_tpl是smarty模板,MemberAction()是控制器。简单来说是在member.php?action=showupdate里修改了文件数据,这样就跳到member.php?action=show中,但是因为缓存的关系,它直接就加载了member.php?action=show的缓存文件,在member.php?action=show中看不到数据的变化,但数据库数据时修改了的。我想知道如何及时更新数据,修改的部分不缓存。

解决方案 »

  1.   

    smarty有个标记是不缓存的{insert}另一种办法就是member.php?action=showupdate执行完,调用smarty的方法更新member.php?action=show的缓存
      

  2.   

    我先用了{insert} 在MemberAction中用了
    function insert_xxx(){
    return 789;
    }
    member.tpl中用{insert name="xxx"} 它显示could not load plugin file
    我在if(!$_tpl->is_cached('member.tpl',$_SERVER['REQUEST_URI']) ||isset($_GET['id'])){
    $_member=new MemberAction();
    $_member->action();
    }之上用
    function insert_xxx(){
    return 789;
    }
    就可以显示数据789,改变成123,就显示123,这个是什么原因了。
    另一种办法就是member.php?action=showupdate执行完,调用smarty的方法更新member.php?action=show的缓存,这个不知道如何用,能说具体点吗,如何用smarty方法更新member.php?action=show的缓存