|
发表于 2015-3-19 09:39:14
|
显示全部楼层
本帖最后由 yuzhigang5460 于 2015-3-19 09:45 编辑
不像你问的问题,或者没看懂你问题的本质。 
在一个请求里公用的数据,Controller是入口, 客户端首先会发送一些如查询参数或者post过来的数据,控制器用这些数据做入输入,通过使用model来获得更多的视图数据加载视图。 整个过程中,数据一旦加载后,利用已有的数据可以去加载更多数据。不能说已经查询了一次用户信息,现在要加载该用户发表的帖子,model又去加载一次用户信息和帖子信息,这显然不合理。
在一个Session里公用的数据, 一般会扩展一个Controller, 如:
PHP复制代码
class MY_Controller extends CI_Controller {
protected $_data = array();
protected $_user = array();
protected $_is_login = false;
public function __construct ()
{
parent ::__construct ();
$this->_pre_controller ();
$this->_fill_common_data ();
}
private function _fill_common_data ()
{
$this->_data ['is_login'] = $this->_is_login ;
$this->load->model('setting_model', 'setting');
//……
}
protected function _pre_controller ()
{
$this->_user = $this->nsession->userdata('user');
$this->_is_login = !empty($this->_user );
if($this->_is_login ){
$this->_data ['user'] = $this->_user ;
}
//……
}
复制代码
每次都可用user信息了,不用自己再多次加载。
另外如楼上所说,可以缓存一些数据库的数据,CI中已经提供了很多缓存驱动,但本质还是那个流程。 |
|