|
本帖最后由 xgdd1987 于 2009-10-8 21:12 编辑
CI框架的页面缓存一直是令CI爱好者非常头疼的一件事,我也是深受其困。。前段时间终于下定决心,要扩展一下,有幸调试成功。。我在这里就和大家分享一下吧。。
CI的页面缓存能自动生成,如果页面有变动但是却不能把缓存及时删除。现在我扩展的这个功能,可以随时自动生成缓存,也可以随时调用函数来删除它,这样就不用为缓存不能急时删除而头疼了。。。废话不在多说,进入正题:
这里要扩展两个东西,一个是My_Output.php,一个是My_URI.php,把这两个文件(去我的附件里下载即可)放到system/application/libraries下即可(注意:文件名请不要改..)
然后就是修改system/application/config/config.php,找到$config['cache_path'] ='';把它替换成$config['cache_path'] = 'system/cache/page/';
最后在system/cache下建立一个page文件夹,这样就能扩展成功了。。
使用的时候,在你的控制器里载入页面之前调用$this->output->cache(n)即可。。例如在welcome控制器的index()方法中写入$this->output->cache("3600"),参数是你想要缓存保存的多长时间,单位分钟...然后它就会在system/cache/page下生成一个以控制器和方法名 命名的文件夹welcome+index,在这个文件夹里就是生成的缓存文件...
如果你想要删除某个页面的缓存,调用$this->output->clear_page_cache("参数");参数是你调用的控制器的名字+方法名;例如我们想要删除上面生成的system/cache/page/welcome+index文件夹下的缓存,直接调用$this->output->clear_page_cache("welcome/index");(注意:中间用“/”隔开);
到这里你就可以随心所欲的操控页面缓存了,是不是很 高兴啊,赶快去试一下吧。。我在这里再提示一下,如果你也启用了数据库缓存的话,这样一来可能声成的缓存文件有点乱,建议你在system/cache/下,建立一个和page文件夹并列的文件家,用来存储数据库缓存..别忘了修改config.php啊.. 大家如果还有什么不明白的,欢迎来咨询。。。
--BY 文秀小夏
因为国庆节放假,我也好几天没来登录过了。。网友crgod 对我的这篇贴子发表了不同的看法,我也着重重新研究了一下,发现确实有不足之处 ,在这里我向他表示感谢。。经过我的努力之后,修正了以前的小问题。。现在的页面缓存,在处理分页时,可以把分页放在同一文件夹下(同一控制器+方法名下的分页),删除缓存的时候,可以连同生成存放缓存的文件夹一并删除...程序我已经重新上传了,请大家放心下载即可...
使用的时候大家可以按我上面介绍的方法正常配置即可。。我在这里提醒大家一个小问题,在CI文档中说$this->output->cache(n)这句代码可以放到方法的任何地方,本人以为不大好。。我认为在你的方法得到数据库的查询结果时,判断一下结果集是否为空,当不为空时在加入这行代码:$this->output->cache("3600");然后载入视图即可。。这样做的好处是,只有得到结果集后才生成缓存,避免了人为的恶意在浏览器里输入参数生成大量缓存。。。 好了,就到这里了,如有不当之处,请大家再次提出批评,多多指教啊。。。
--BY 文秀小夏 |
评分
-
查看全部评分
|