#1 Le 25/11/2008, à 10:48
- LR
[Autre solution] PHP : Contrôle du cache du navigateur
Salut,
J'ai une page qui contient une liste assez longue. Cette page est un peu longue à charger et quand je clique sur un élément de la liste pour afficher son détail et qu'ensuite je fais "back" sur mon navigateur, la page remet plusieurs secondes à s'afficher.
Comment faire pour que le cache fonctionne et que le code php ne soit pas réexécuté à chaque fois ?
Merci d'avance
Dernière modification par LR (Le 16/12/2008, à 16:29)
Hors ligne
#2 Le 25/11/2008, à 14:46
- nicolas66
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Ajax ?
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#3 Le 25/11/2008, à 16:07
- Linul
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Ajax va exécuter à nouveau la page.
Tu peux utiliser les header en PHP pour modifier le cache-control, tu peux aussi le faire directement dans le HTML je ne sais pas ce que ça vaut
Dernière modification par Linul (Le 25/11/2008, à 16:08)
PC: Clevo N151zu / Ubuntu 18.04
Hors ligne
#4 Le 25/11/2008, à 18:00
- yohann
Re : [Autre solution] PHP : Contrôle du cache du navigateur
ou utiliser un moteur de template genre smarty, bon c'est pas le cache du navigateur mais un cache sur le serveur, mais ca permet de ne pas executer le code php lorsque ce n'est pas necessaire
j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.
Hors ligne
#5 Le 26/11/2008, à 10:20
- LR
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Merci pour vos réponses et vos conseils. Je ne peux pas utiliser de moteur de template sur cette application.
J'ai un peu essayé d'utiliser cache-control mais ça ne marche pas comme je m'y attends et je ne comprends pas bien le fonctionnement.
C'est pour ça que j'espérais trouver qqun qui avait déjà été confronté à ce genre de problèmes et pourrait m'expliquer et partager son expérience.
Hors ligne
#6 Le 27/11/2008, à 01:44
- Bzh
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Je vais t'aider...
Déjà, je vais essayer de mieu comprendre...
Pourquoi ta page est-elle longue à charger ?
Est-ce du à la taille du code html généré ?
Est-ce du à un grand nombre de requetes à une base de données ?
Est-ce du à un traitement PHP lourd ?
Hors ligne
#7 Le 27/11/2008, à 09:22
- LR
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Il s'agit d'un code vraiment mal écrit, un fichier de 1500 lignes qui propose un formulaire permettant d'appliquer un filtre sur une liste d'éléments. Je ne peux malheureusement pas réécrire ce script, ce qui devrait normalement être fait.
Le formulaire prend déjà 9 secondes à se générer (mal écrit, beaucoup de sql). J'ai pu "résoudre" ça avec ob_start puis include du formulaire puis stocker ob_end_contents dans la session...
La liste est générée par une boucle qui fait des centaines de lignes et plein de requêtes sql.
J'aimerais juste savoir si le plus simple ne serait pas d'utiliser le cache navigateur. Je ne sais pas comment piloter ça.
Merci pour ton aide
Hors ligne
#8 Le 16/12/2008, à 16:08
- apoleidon
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Bonjour,
la solution est d'utiliser ajax...
Sur click d'un élément de le liste, du code javascript récupère l'identifiant de l'élement.
Il appèle une méthode coté serveur en passant l'id pour demander "que" le détail de cet élément.
Le code javascript coté client reçoit donc que le détail et il faut ensuite l'insérer au bon endroit de la page, sans modifier le reste.
Une solution serait d'afficher la liste d'éléments dans un tableau html et de prévoir une ligne vide (comportant un identifiant) sous chaque élément pour contenir le détail ...
Après réception du détail, il reste à faire un getElementById pour y afficher le détail (ou créer un sous tableau qui affichera le détail)
#9 Le 16/12/2008, à 16:29
- LR
Re : [Autre solution] PHP : Contrôle du cache du navigateur
Merci mais ça implique trop de travail d'intégrer cette façon de faire dans cette application. J'ai trouvé une solution (sale mais efficace) : http://www.developpez.net/forums/m3801393-6/
Hors ligne