80 votes

Optimisation des sites Web basés sur Kohana pour la vitesse et l'évolutivité

Un site que j'ai construit avec Kohana a claqué avec une énorme quantité de trafic hier, m'obligeant à prendre du recul et d'évaluer la conception. Je suis curieux de savoir quelles sont certaines des techniques standard pour l'optimisation de Kohana applications basées sur?

Je suis intéressé dans l'analyse comparative. Dois-je configurer Benchmark::start() et Benchmark::stop() pour chaque contrôleur-méthode afin de voir les temps d'exécution pour toutes les pages, ou suis-je en mesure d'appliquer l'analyse comparative à l'échelle mondiale et rapidement?

Je vais utiliser le Cache-bibliothèque de plus dans les temps à venir, mais je suis ouvert à d'autres suggestions que je suis sûr qu'il ya beaucoup de choses que je peux faire, et que je suis tout simplement pas au courant de ce moment.

6voto

Alix Axel Points 63455

Utilisez XDebug et WinCacheGrind ou WebCacheGrind pour profiler et analyser l'exécution de code lente.

WebCacheGrindWinCacheGrind

5voto

porneL Points 42805

Code de profil avec XDebug .

Utilisez beaucoup de cache. Si vos pages sont relativement statiques, alors le proxy inverse pourrait être le meilleur moyen de le faire.

5voto

ae. Points 770

Kohana est en dehors de la zone très très rapide, sauf pour l'utilisation des objets de base de données. Pour citer Zombor ", Vous pouvez réduire l'utilisation de la mémoire en vous assurant de l'aide de la base de données objet de résultat au lieu de résultat tableaux." Ce qui fait un HUGEE différence de performances sur un site qui est claqué. Non seulement faut-il utiliser plus de mémoire, il ralentit l'exécution de scripts.

Aussi, vous devez utiliser la mise en cache. Je préfère memcache et de l'utiliser dans mes modèles comme ceci:

public function get($e_id)
{
	$event_data = $this->cache->get('event_get_'.$e_id.Kohana::config('config.site_domain'));

	if ($event_data === NULL)
	{
		$this->db_slave
			->select('e_id,e_name')
			->from('Events')
			->where('e_id', $e_id);

		$result = $this->db_slave->get();
		$event_data = ($result->count() ==1)? $result->current() : FALSE;

		$this->cache->set('event_get_'.$e_id.Kohana::config('config.site_domain'), $event_data, NULL, 300); // 5 minutes
	}

	return $event_data;
}

Cela permettra également d'augmenter considérablement les performances. Les deux techniques ci-dessus amélioré un des sites de la performance de 80%.

Si vous avez donné quelques informations sur l'endroit où vous pensez que le goulot d'étranglement est, je suis sûr qu'on pourrait donner quelques idées.

Consultez également yslow (google) pour d'autres conseils relatifs à la performance.

1voto

Tamás Pap Points 3918

Strictement lié à Kohana (vous l'avez probablement déjà fait, ou pas):

En mode production:

  1. Activer la mise en cache interne (ceci ne mettra en cache que les résultats de Kohana :: find_file, mais cela peut en fait beaucoup aider.
  2. Désactiver le profileur

Juste mes 2 centimes :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X