Bonjour,
Je développe actuellement un petit site sur CakePHP et j'ai un problème car mes pages, et principalement les pages faisant des requêtes dans la base de données mettent vraiment beaucoup de temps à charger (jusque 7 secondes pour certaines).
Y a t-il une solution très efficace à cela ?
Merci d'avance
Bonjour,
Déjà il te faut identifier le problème
Ce que je fais pour ce genre de choses, c'est un affichage d'une page sans données, comme ça la page s'affiche en moins d'1s, et je charge mes données en ajax.
Il semblerait que CakePhp charge tous les Models déjà.
De plus, j'ai bien l'impression que mes passages de variables avec $this->set ralentissent beaucoup.
Et enfin, les redirect rallongent aussi le temps !
C'est vraiment problématique car c'est inacceptable en terme d'expérience utilisateur.
Si vous savez quoi faire ce serait vraiment super :D
Quand tu dis
Matthieu Petit:"Il semblerait que CakePhp charge tous les Controller déjà."
Il semblerait que tu n'ai pas compris le fonctionnement de type MVC, éventuellement tu pourrais charger tous les modèles, mais il nous faudrait un peux de ton code pour qu'on puisse comprendre.
Peux tu nous en dire un peu plus sur ta structure et nous copier les codes des éléments correspondant afin que l'on puisse t'aider.
Bonjour,
Lors de l'affichage d'une page "basique" il ne devrait pas y avoir de redirect car oui les redirect rallonge un peu.
Le site tourne sur windows? quel logiciel? ça peut être un facteur très important car souvent ça rame sur windows (genre wamp ou easyphp).
Chalut,
Il faut que tu regardes que tes recursive soit régler à ton utilisation voulu. un recursive 2, tu es content ça marche mais ça te remonte x données dont tu n'as pas besoin.
Merci pour ta réponse coloo, elle se rapproche de mon problème et est une solution de performance mais je crois que mon problème est ailleurs.
1 - Ma page redirige vers une action.
2 - Cette action fait appel à une API et redirige vers la page précédente
3 - Une fois redirigé cette page (point 1) fait à son tour appel à une API
J'ai bien l'impression que c'est cet appel à une API (deux fois) qui ralenti l'exécution. Ce même site web met déjà du temps quand il fait appel à l'API d'Indeed donc la, 2 appels font beaucoup.
Est-ce que quelqu'un sais comment réduire ce temps ? Je crois que ça va être compliqué car on est dans une problématique serveur la !
S'il n'y a aucune solution, comment feriez-vos pour améliorer le confort de l'utilisateur et qu'il est pas ou moins l'impression d'attendre ?
Merci d'avance pour vos réponses :)
Tu as deux moyens d'améliorations :
1) Parallélisme de tes requêtes
2) Asynchronisme
Pour le 1), voici le problème
RequeteA |---------------------|
RequeteB |--------------------------------|
---------------------------------------------------------------------
t(s) 0 1 2 3 4 5
Tu attends que la requeteA soit établie pour effectuer la requêteB.
Avec le parallélisme, tu peux avoir ça :
RequeteA |----------------------|
RequeteB |--------------------------------|
---------------------------------------------------------------------
t(s) 0 1 2 3 4 5
Résultat, tu peux afficher ton contenu au bout de 3s au lieu de 5s.
Pour le 2), voici comment le résoudre. Regarde comment fait Facebook, ils proposent un layout avec de fausses données (des images grises, ...) le temps que les requêtes s'exécutent.
L'idée s'est d'avoir une page index() sans aucune requête pour qu'elle s'affiche rapidement. Et tu fais tes appels à l'API en AJAX.