我使用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();
}
感谢您的帮助:)
答案 0 :(得分:3)
在每个函数中单独加载它们会更快,因为您可以限制加载模型的调用次数,但差异可能很小
如果你在构造函数中加载它们,那么你可以在一个加载的控制器中的任何一点使用它们,这可能会慢一点,但好处是它们已加载并准备就绪。它可以使用比单个给定函数所需的更多的内存。
如果要保存用于加载模型的代码,可以始终在构造函数中执行以下操作:
$this->load->model(['Fa_promo', 'Fa_project', 'Fa_inbox', 'Fa_quotes]);
这将一次性加载所有模型。这没有实时的好处,因为传递数组会导致加载器为每个项目调用自身,因此它与您当前拥有的相同。
答案 1 :(得分:2)
codeigniter docs说:通常会在控制器方法中加载和调用模型。
第一种方法有很大的优势:您可以在所有控制器方法中重复使用它,而不必一遍又一遍地输入每种方法。
关于绩效:我认为它没有任何区别,模型中的功能可能会减慢事情