我使用Codeigniter编写代码,我想在第一次打开页面时增加加载时间。事实上,当我写代码时,我会像这样加载我的结构中的所有模型:
public function __construct(){
parent::__construct();
$this->load->model('Fa_promo');
$this->load->model('Fa_project');
$this->load->model('Fa_inbox');
$this->load->model('Fa_quotes');
$this->data['keywords']=$this->Configuration->get_keyword();
$this->data['about'] = $this->Fa_menu->get__content_from__slug('about');
$this->data['menu']=$this->Fa_menu->list_menu_level1();
$this->Configuration->update_hits();
}
我的问题是,如何以最好的方式加载模型,以提高上述或类似的性能?
public function __construct(){
parent::__construct();
}
public function a(){
$this->load->model('Fa_promo');
$this->Fa_promo->load();
}
public function (){
$this->load->model('Fa_project');
$this->Fa_project->load();
}
感谢您的帮助:)
在每个函数中单独加载它们会更快,因为您可以限制加载模型的调用次数,但差异可能是最小的
如果您将它们全部加载到构造函数中,那么您可以在控制器中的任何点从一个加载中使用它们,这可能会慢一点,但好处是它们已经加载并准备好了。不过,它可能会使用比单个给定函数所需的内存更多的内存。
如果你想保存加载模型的代码,你可以在构造函数中执行以下操作:
$this->load->model(['Fa_promo', 'Fa_project', 'Fa_inbox', 'Fa_quotes]);
这将一次性加载所有模型。这并没有实时的好处,因为传递一个数组会导致加载程序为每个项调用自己,所以它与您当前拥有的相同。
代码点火器文档说:您的模型通常会从控制器方法中加载和调用。
第一种方法有一个很大的优点:您可以在所有控制器方法中重用它,而不必一遍又一遍地键入每个方法。
关于性能:我认为这没有任何区别,模型中的函数可能会减慢