发新话题
打印

用Symfony动态构建cache

用Symfony动态构建cache

首页布局大概是这样的,有一个登录模块,登录前,显示的是用户名、密码输入框这些登录信息;登录后显示的是用户的信息资料。那么这块就不能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());
努力为phpres做贡献
时刻准备着,当机会来临时你就成功了
打好基础,增加社会经验
资深技术工程师是我的梦想
承接各种团体网站外包服务和各种it技术培训
准备申请AJAX版大,希望大家支持~~

TOP

发新话题