Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai quelques interrogations sur les routes de Zend Framework 2.
J'ai lu que les routes littérales étaient moins lourdes que les routes par segment, quels sont les avantages/inconvénients de chacune ? (Je pense que les routes littérales ne sont pas meilleures en tout point, sinon les segments n'existeraient pas).
Dans la Skeleton Application, le module de base contient une route littérale "home", pourtant je n’arrive pas à la la cibler en utilisant son nom "home" dans la barre d'adresse, alors que ça fonctionne avec la route par segment "application". Ce serait une des différences entre ces 2 types de routes ?
Est-ce qu'on déclare les routes littérales de la même manière que les routes par segment dans "module.config.php" ? (Je sais qu'on les déclare ici, mais je parle des paramètres).
Concernant les performances, j'ai l'impression que Zend Framework 2 est plus long à charger que sa première version, comment améliorer les performances ?
Si je suis sûr que mon application ne sera disponible que dans une seule langue, je n'ai pas besoin de Zend\I18n\Translator\Translator (qui est par défaut activé dans la Skeleton Application) ? Je gagnerai en performance ?
Tous les fichiers contenus dans la Skeleton Application sont-ils nécessaires ?
Merci de bien vouloir me renseigner !
Dernière modification par Seryus (27-05-2013 10:01:55)
Hors ligne
Pour les routes, la différence entre littérale et segment, c'est que la segment te permet d'insérer des paramètres dans ton url :
Prenons un exemple:
www.monsite.fr/mapage/id
tupourrais avoir besoin de ces urls la:
www.monsite.fr/mapage/1
www.monsite.fr/mapage/2
www.monsite.fr/mapage/3
www.monsite.fr/mapage/4
...
en utilisant les routes segment tu peu définir tes routes comme ceci : www.monsite.fr/mapage[/:id]
alors qu'en utilisant les littérales tu devrait définir chaque route à la main. (et avoir ainsi une action par url).
Edit: Et oui ces deux types de routes se déclarent de la même manière dans module.config.php. finEdit
Je ne pense pas qu'il y ai vraiment une question de performance dans ces deux types d'urls mais s'il y en a une, considère que c'est négligeable.
Le skeleton est prévu pour répondre aux besoins de base d'un développeur, tu n'a pas besoin d'y toucher normalement, si tu doit optimiser le temps de réponse de ton site, vérifie plutôt ton code que celui du skeleton
Dernière modification par flobrflo (26-05-2013 10:53:46)
Hors ligne
Salut, en fait le skeleton contient une route par segment pour pouvoir tester facilement le ZF2 car sa route par segment permet de gérer dynamiquement toutes les urls possibles en fonction de ton contrôleur. Le problème c'est que c'est moins rapide que via une route litéral que tu vas définir pour chaque url.
Admettons que tu ais un contrôleur LoginController et une action indexAction dedans. La fonction indexAction va s'occuper d'afficher la page d'accueil pour se connecter à ton site. En utilisant la route segment par défaut tu vas avoir l'url suivante http://monsite.fr/login/index et c'est pas forcément très parlant tu pourrais vouloir la renommer en http://monsite/user/login. Pour ça tu dois définir une route qui pointe vers le contrôleur LoginController et vers l'action indexAction.
De plus les routes par segment fonctionnent via des regexp c'est donc un traitement supplémentaire pour voir si l'url saisi peut correspondre à la route. Tandis que litéral tu as déjà défini un dur l'url donc il va recherche l'url s'il la trouve il a la route. Le mieux est donc d'utiliser le plus souvent des routes litérales et quand il y a des paramètres dynamiques utiliser les segments.
Hors ligne
Ok merci pour ces renseignements. Je pense avoir bien compris comment fonctionnaient les routes en regardant le code du Sekeleton Application.
Pour mon soucis de performance, j'ai refait le tutoriel du site officiel de Zend, et au moment où j'appelle
return new ViewModel(array( 'albums' => $this->getAlbumTable()->fetchAll(), ));
dans mon controller AlbumController, le temps d'attente de la requête GET qui récupère le HTML passe de 110ms à 1,2s (je fais mes tests en local). C'est normal ? Il me semble que sous Zend 1 j'étais à 0,6ms avec quelques enregistrements dans la BDD, là 1,2s avec rien dedans o.o
Puis pour les fichiers de la Skeleton Application, à part la library Zend, tout ce qu'il y a dans le dossier "vendor" est vraiment utile ?
Dernière modification par Seryus (27-05-2013 08:35:02)
Hors ligne
Ah bah oui dans le dossier vendor tu vas y mettre tous les modules externes que tu souhaites ajouter à ton application. Par exemple un moteur de template Twig, Doctrine 2 etc ... Et le composer le fait pour toi tout seul .
Pour les perfs je dois dire que ça dépend de ta machine en fait j'ai remarqué que sur windows c'était généralement lent comparé à linux, ensuite il faut vraiment se renseigner sur les fonctionnalités de mise en cache qui apportent un vrai confort.
Hors ligne
Ok merci ! Pour le cache je verrais à la fin pour éviter les prises de têtes inutiles pendant le développement du site
Hors ligne
1,2 s c'est beaucoup trop.
Sur mon application, en local, avec une dizaine de requêtes via Doctrine, et un affichage assez complexe, je suis aux alentours de 140 ms (et encore, j'ai pas activé plusieurs caches, donc je devrais être en dessous des 100 ms).
N'oublie pas d'utiliser APC également (ou n'importe quel cache d'op-code). C'est indispensalbe dès que tu utilises de gros frameworks comme Zend.
Hors ligne
bakura a écrit:
1,2 s c'est beaucoup trop.
Sur mon application, en local, avec une dizaine de requêtes via Doctrine, et un affichage assez complexe, je suis aux alentours de 140 ms (et encore, j'ai pas activé plusieurs caches, donc je devrais être en dessous des 100 ms).
N'oublie pas d'utiliser APC également (ou n'importe quel cache d'op-code). C'est indispensalbe dès que tu utilises de gros frameworks comme Zend.
Je vais voir pour APC. Mais en ce qui concerne mes performances sans cache, c'est normal ? Sachant que mes requêtes ne sont pas compliquées, que ma BDD est presque vide et que je ne fais que récupérer/afficher quelques lignes ?
Hors ligne
Salut, sur windows c'est plus long que sur mac ou linux. J'ai mon pc portable sous linux et les temps de réponse sont meilleurs que sur mon windows sur une machine moins performante. Personnellement ça ne m'étonne pas trop j'ai a peu près la même chose sous windows sans cache. C'est d'ailleurs bien bordélique de trouve un PHP avec le cache APC d'activé pour windows.
Hors ligne
Ok merci pour ces renseignements, ça me rassure d'un coté. Je développe sous Windows mais le serveur en production sera sous Linux, ça devrait aller si j'utilise le cache comme on me l'a conseillé
Hors ligne