首页布局大概是这样的,有一个登录模块,登录前,显示的是用户名、密码输入框这些登录信息;登录后显示的是用户的信息资料。那么这块就不能
cache起来。采用原来的方法就是,首页用个静态
html,这块用个iframe包含动态脚步来处理。使用
symfony就不用这样了,首页设置cache起来,设置with_layout: false,并把首页其他布局的Partial, Component, 或者Component Slot(比如各栏目最新10条信息等)设置为cache状态,只留下登录模块不cache,那么就实现了上述功能。
如一个显示信息的
页面:showSuccess.php,把它分成两部分:
基本信息
留言信息(有些留言只能对版主看到,需要动态判断,不去cache)
把这两块做成info的component方式
一个叫baseinfo,一个叫gbinfo。
那么在showSuccess.php里调用这两个component
复制内容到剪贴板
代码:
include_component('info','baseinfo',array('info'=>$info,'sf_cache_key' => $info->getId()));
include_component('info','gbinfo',array('info'=>$info)); 那么在cache.yml里:
复制内容到剪贴板
代码:
_baseinfo:
enabled: on
lifetime: 86400这样就把baseinfo这块cache起来了,多加个’sf_cache_key’ => $info->getId()是为了给这块cache启个代号,在清除cache时,比如修改信息内容后要把这块的cache清掉。
清除cache:
复制内容到剪贴板
代码:
$cacheManager = $this->getContext()->getViewCacheManager();
$cacheManager->remove('@sf_cache_partial?module=info&action=_baseinfo&sf_cache_key='.$info->getId());