2016-03-23 21 views
2

Codeigniter kullanarak kod yazdım, Sayfamı ilk kez açtığımda yükleme süresini artırmak istiyorum. Ben kodu yazılı zaman Aslında böyle benim contruct tüm modeli yüklenemedi:Modeli kod yazıcısına yüklemenin en iyi yolu nedir?

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();    
    } 

Sorum, nasıl üstünde veya böyle arasına performansını artırmak için bir model yüklemek için en iyi yolu mu? Yardımlarınız için

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(); 
} 

Teşekkür :)

+0

Görünümün tamamını veya HTTP yanıtını önbelleğe almayı ne dersiniz? İkinci fikir: Örneğin, modelleri [APC] (http://php.net/manual/en/book.apc.php) ile kısmen önbelleğe alabilirsiniz. – Farside

+1

Modelleri yükleme sırasında herhangi bir kod yürütmüyorsanız, bu modellerin "__construct() işlevinde bir şey yapmıyorsa, kaç model yüklediğiniz hakkında endişe etmekten ziyade, aradığınız yöntemleri optimize etmekten daha iyidir." Bellek kullanımı dışında herhangi bir fark yaratacağını düşünmüyor olabilir miyim? – ahmad

cevap

2

CodeIgniter docs ki: Modelleriniz genellikle yüklenen ve denetleyici yöntemlerinden içinden çağrılır.

İlk yaklaşımın büyük bir avantajı vardır: tüm denetleyici yöntemlerinde yeniden kullanabilir ve her yönteme tekrar tekrar yazmak zorunda kalmazsınız. performans konusunda

: Ben, modeldeki işlevler şeyler

yavaşlatabilir herhangi bir fark yapmaz düşünüyorum
3

Size yapılan aramaların sayısını sınırlamak gibi her işlevin içinde tek tek yeniden yüklemek için daha hızlı olacaktır model yüklemek için, ancak fark en az

Muhtemel kurucuya yüklerseniz, bunları denetleyicinin herhangi bir noktasında bir yük altında kullanabilirsiniz, bu biraz yavaş olabilir, ancak faydası yüklü ve hazır. Yine de, verilen tek bir işlev için gerekenden daha fazla bellek kullanabilir. Eğer modelleri yüklenmesi için kod kaydetmek istiyorsanız

, her zaman yapıcı aşağıdaki yapabileceğini:

$this->load->model(['Fa_promo', 'Fa_project', 'Fa_inbox', 'Fa_quotes]); 

Bu tek seferde modellerin tüm yükleyecektir. Bir dizinin aktarılması, yükleyicinin her öğe için kendisini aramasına neden olduğundan, bunun gerçek bir zaman avantajı yoktur, bu nedenle şu anda sahip olduğunuzla aynıdır.

İlgili konular