Projection très lente avec la version 1.8.1

Topics: Francais (French), General
May 7, 2015 at 4:04 AM
Bonjour,

Je travaille sur un site (http://cadeaux.interface.nc) avec la version 1.8.1 et j'utilise une projection avec une requête simple qui me renvoi juste tous les éléments d'un type de contenu qui contient 5 champs texte : nom, prenom, fonction, direction, tel.

Je voudrais utiliser ce qui est renvoyé comme source de données pour utiliser le plugin jquery datatables (https://www.datatables.net/examples/data_sources/dom.html)

Voici mon problème :

Tant que je n'ai pas trop d'enregistrement ça peut aller mais j'ai remarqué que le temps de chargement de la page avec la projection augmente très fortement en fonction du nombre d'élément retourné. Vous me direz c'est normal... plus il y a d'enregistrement plus c'est long mais là j'arrive à avoir 1sec de plus tous les 10 enregistrements et au dessus de 100 c'est pire.

Avec 10 enregistrements = 1 sec
Avec 80 enregistrements = 8 sec
et plus il y a d'enregistrement, plus le temps augmente, allant jusqu'à 69 sec pour 250 enregistrements.

J'observe ce soucis avec ou sans Datatables.

J'ai activé le module WARMUP (Shape tracing est inactif) en ajoutant l'url relative de ma page pour qu'elle soit mise en cache mais cela ne change rien.

Je sais que la meilleure solution est d'utiliser la pagination mais pour utiliser Datatables, je voudrais tout charger puisqu'il n'y a que quelques 10aines de lignes avec pour chaque ligne 5 champs.

Est-ce normal qu'une requête sur un type de contenu assez simple soit aussi longue ?

Merci d'avance pour votre réponse
Coordinator
May 7, 2015 at 4:12 AM
Non, ce n'est pas normal. Profilez.
May 7, 2015 at 4:27 AM
Merci pour cette réponse rapide. J'ai activé mini profiler et voilà le résultat :

http://cadeaux.interface.nc/mini-profiler-resources/results?id=f34d4796-9a76-4e04-89ef-34d8c3973e68

Je comprends bien qu'il y a un pb mais sur toutes les autres pages du site je ne vois rien de particulier. Cela peut-il être dû à l'utilisation d'alternates ?

Encore merci

Tom
Coordinator
May 7, 2015 at 4:44 AM
Non, je ne pense pas. Il faudrait plus de détails, qu'on pourrait avoir en activant le profilage des requêtes SQL.
May 7, 2015 at 5:30 AM
Oups... en activant mini profiler je pensais que cela activerait tout.

Le profiler est activé sur : http://cadeaux.interface.nc/annuaire

J'ai limité le nombre d'enregistrement affiché à 100 pour réduire le temps d'attente

Merci
May 7, 2015 at 6:32 AM
Voici le rapport du profiler :

http://cadeaux.interface.nc/mini-profiler-resources/results?id=a00f051f-f0db-466a-977b-9af5438f30e6

Il y a énormement de requêtes exécutées

Merci
May 7, 2015 at 12:05 PM
Bonjour Bertrand,

J'ai trouvé la source de mon problème. Au niveau de mon type de contenu, j'avais 3 champs Taxonomy que je n'utilisais pas pour le moment et qui étaient utilisés pour alimenter des listes de choix déroulantes. Je les ai supprimés et pour chaque champ supprimé, j'ai gagné à chaque fois 4 sec environ. Au final sans aucun champ de ce type, tout s'affiche bien et vite pour mes 250 enregistrements.

J'imagine maintenant qu'il est préférable d'utiliser un enumeration field ?
Quelles sont les limtes de l'utilisation des taxonomies pour alimenter une liste de choix dans un type de contenu destiné à un affichage sous forme d'une projection ?
Est-il préférable des les utiliser avec obligatoirement une pagination ?

Merci d'avance pour tes réponses

Tom
Coordinator
May 7, 2015 at 8:06 PM
Taxonomy est un bon choix, non. Le problème ici est dans la projection, pas vraiment dans le choix du type de champ. A vue de nez c'est un problème de select n+1 typique. Ça s'optimise...
May 9, 2015 at 11:47 AM
Bonjour,

J'ai vu que tu as fait pas mal de vidéo, tuto... sur divers sujets liés à Orchard.
Existe t'il un lien qui traite de ce problème et de la solution à mettre en place ?

Merci

Tom
Coordinator
May 21, 2015 at 8:11 AM
Je ne crois pas.