[script] Mise en cache des pages PHP
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
tawath a écrit:Bonjour
Ce serait possible de rajouter le code pour vérifier qu'il n'existe pas de page plus récente dans la db et de mettre le cache à jour en conséquence
Si je comprends bien ce que tu veux faire, c'est de tester dans la BDD la date de mise à jour de la page et si la date est plus recente que le fichier en cache, générer un nouveau fichier dans le cache?
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
et pourquoi pas!
Ce fil a aussi des vertus pédagogiques en faisant découvrir de nouvelle fonction PHP à tous ceux qui se lancent, en expliquant des mécanismes et en les personnalisants.
Par exemple, je prépare une petite modification de ce script pour générer automatiquement lors de la mise en cache le fameux fichier XML GoogleSitemap!
Je le teste et le publie dés que possible!
Ce fil a aussi des vertus pédagogiques en faisant découvrir de nouvelle fonction PHP à tous ceux qui se lancent, en expliquant des mécanismes et en les personnalisants.
Par exemple, je prépare une petite modification de ce script pour générer automatiquement lors de la mise en cache le fameux fichier XML GoogleSitemap!
Je le teste et le publie dés que possible!
-

tawath - WRInaute occasionnel

- Messages: 289
- Inscription: 30 Avr 2005
fandecine a écrit:tawath a écrit:Bonjour
Ce serait possible de rajouter le code pour vérifier qu'il n'existe pas de page plus récente dans la db et de mettre le cache à jour en conséquence
Si je comprends bien ce que tu veux faire, c'est de tester dans la BDD la date de mise à jour de la page et si la date est plus recente que le fichier en cache, générer un nouveau fichier dans le cache?
Affirmatif
Tu m'a compris j'ai pas envie de jouer du ftp pour supprimer une page parmi des centaines....
Ton script?
avec joie si il génére aussi la sitemap pour gogol1er que du bonheur
Jpcache je vais me documenter,masi quitte à reinventer la poudre on peut l'améliorer parfois
-

Fab le Fou - WRInaute passionné

- Messages: 1511
- Inscription: 2 Déc 2004
Avec le même objectif d'accélérer le chargement des pages et diminuer la charge du serveur, je suis entrain de revoir le fonctionnement d'un de mes sites.
En fait, au lieu d'appeler la base de données à chaque fois qu'un visiteur appelle une page, je ne le fais qu'une seule fois dans mon backoffice au moment où je mets à jour mes données.
Si l'enregistrement s'est bien passé j'appelle alors des fonctions qui vont générer ou modifier les fichiers contenant le code client qui apparait dans mes pages (via des include()).
En fait, mes pages "pseudo-statiques" seront composées de plusieurs fichiers, qui seront modifiés si il y a lieu lors des mises à jour (il n'y a pas de durée d'expiration à priori).
Cette solution n'est pas meilleure que celle proposée ici, mais c'est une alternative possible ayant un même but.
Fab
En fait, au lieu d'appeler la base de données à chaque fois qu'un visiteur appelle une page, je ne le fais qu'une seule fois dans mon backoffice au moment où je mets à jour mes données.
Si l'enregistrement s'est bien passé j'appelle alors des fonctions qui vont générer ou modifier les fichiers contenant le code client qui apparait dans mes pages (via des include()).
En fait, mes pages "pseudo-statiques" seront composées de plusieurs fichiers, qui seront modifiés si il y a lieu lors des mises à jour (il n'y a pas de durée d'expiration à priori).
Cette solution n'est pas meilleure que celle proposée ici, mais c'est une alternative possible ayant un même but.
Fab
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
comme promis, le script de gération automatique du sitemap est disponible http://www.webrankinfo.com/forums/viewt ... p?p=303101

-

hipopulation - WRInaute occasionnel

- Messages: 346
- Inscription: 28 Juil 2004
yep, faut que je teste cette histoire de mise en cache, je connais ça avec SPIP et c'est vrai que c'est plutot efficace:-)
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Bonjour,
Alors tout d’abords un grand bravo pour ce partage…. ! Et félicitation…
Cependant quelques questions me taraudent encore…
- Vous dites que cela sera efficace en fonction du nombre de requête que l’on évite au serveur en mettant le code généré en cache. Mais quel est à peu près le nombre de requête ? (je comprends bien que cela dépends des requêtes, mais il s’agit juste d’avoir une idée)
- Je n’est pas bien saisie concernant le dossier cache, faut-il simplement le créer ? (dans ce cas quel droit unix doit-on lui donner, à quel endroit le créer ? public_html ?)
- Vous dites que cela est avantageux si l’on est sur un serveur dédié… Mais si le dossier cache est à la racine de notre site, cela revient au même pour un serveur mut. Car le principe reste le même ! Plus besoin de régénérer le document, il est directement envoyé ? ai-je bien compris…. ?
- Si l’on possède un forum, on applique aussi ce type de méthode ? (je pense que ce doit-être lourd, non ? chaque modification supprimer la page en cache, la recréer en cache à la première demande…cela peut-être lourd pour un forum subissant beaucoup de modifications ?)
- Enfin, pour supprimer la page en cache (j’ai bien bien compris qu’il y a un une méthode ftp) mais par impossibilité de procéder comme ceci, je souhaiterais savoir s’il existe une fonction (un code comme pour l’ajout en cache) qui permettrais de supprimer la page en cache à chaque modifcation…(par exemple un site administrable, qui voit son accueil modifier une foi par semaine, cette méthode serait très aventageuse !
Désolé de toutes ces interrogations, mais en tout cas encore un grand bravo….
Merci !!!!!!!!!!
Alors tout d’abords un grand bravo pour ce partage…. ! Et félicitation…
Cependant quelques questions me taraudent encore…
- Vous dites que cela sera efficace en fonction du nombre de requête que l’on évite au serveur en mettant le code généré en cache. Mais quel est à peu près le nombre de requête ? (je comprends bien que cela dépends des requêtes, mais il s’agit juste d’avoir une idée)
- Je n’est pas bien saisie concernant le dossier cache, faut-il simplement le créer ? (dans ce cas quel droit unix doit-on lui donner, à quel endroit le créer ? public_html ?)
- Vous dites que cela est avantageux si l’on est sur un serveur dédié… Mais si le dossier cache est à la racine de notre site, cela revient au même pour un serveur mut. Car le principe reste le même ! Plus besoin de régénérer le document, il est directement envoyé ? ai-je bien compris…. ?
- Si l’on possède un forum, on applique aussi ce type de méthode ? (je pense que ce doit-être lourd, non ? chaque modification supprimer la page en cache, la recréer en cache à la première demande…cela peut-être lourd pour un forum subissant beaucoup de modifications ?)
- Enfin, pour supprimer la page en cache (j’ai bien bien compris qu’il y a un une méthode ftp) mais par impossibilité de procéder comme ceci, je souhaiterais savoir s’il existe une fonction (un code comme pour l’ajout en cache) qui permettrais de supprimer la page en cache à chaque modifcation…(par exemple un site administrable, qui voit son accueil modifier une foi par semaine, cette méthode serait très aventageuse !
Désolé de toutes ces interrogations, mais en tout cas encore un grand bravo….
Merci !!!!!!!!!!
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
thierry8 a écrit:Bonjour,
Alors tout d’abords un grand bravo pour ce partage…. ! Et félicitation…
merci!
thierry8 a écrit:Cependant quelques questions me taraudent encore…
- Vous dites que cela sera efficace en fonction du nombre de requête que l’on évite au serveur en mettant le code généré en cache. Mais quel est à peu près le nombre de requête ? (je comprends bien que cela dépends des requêtes, mais il s’agit juste d’avoir une idée)
par exemple, sur le site de mon profil, il faut compter 5 à 6 requêtes sql par page en moyenne (un peu plus pour la page d'accueil et les têtes de rubriques, un peu moins pour les pages de contenu) à multiplier par 15 à 20.000 pages par jours (pointe du traffic entre 18h30 et 21h30) soit en pointe 8 à 10.000 requêtes sql à l'heure!
thierry8 a écrit:- Je n’est pas bien saisie concernant le dossier cache, faut-il simplement le créer ? (dans ce cas quel droit unix doit-on lui donner, à quel endroit le créer ? public_html ?)
le dossier cache doit être accessible par un script php (je le met à la racine du site). Pour ce qui est des droits, public en lecture bien sur, en ecriture cela dépends de la config du serveur. Il peut etre en 755 par exemple si php en est le propriétaire.
thierry8 a écrit:- Vous dites que cela est avantageux si l’on est sur un serveur dédié… Mais si le dossier cache est à la racine de notre site, cela revient au même pour un serveur mut. Car le principe reste le même ! Plus besoin de régénérer le document, il est directement envoyé ? ai-je bien compris…. ?
Lorsque je dis que c'est moins interressant sur un mutualisé c'est parce que les ressources étant partagées par plusieurs sites, si il n'utilisent pas tous la mise en cache, l'éconnomie de resources sql peut ne pas être significative. En fait, si tu utilise la mise en cache sur ton site sur un mutualisé, tu partage le gain de ressources entre tous les sites héberges sur ce serveur.
thierry8 a écrit:- Si l’on possède un forum, on applique aussi ce type de méthode ? (je pense que ce doit-être lourd, non ? chaque modification supprimer la page en cache, la recréer en cache à la première demande…cela peut-être lourd pour un forum subissant beaucoup de modifications ?)
si ton forum est rewrité, ce n'est pas trés sorcier à mettre en place ni lourds. Par contre, s'il n'est pas rewrté, il te faut faire une tranformation d'une url en nom de fichier valide et unique. En fait, la taille du site n'est pas un problème (le site de mon profil compte plus de 50000 pages!), la fréquence de mise en jours non plus (je fait des mises à jour tout les jours) cela impose seulement beaucoup de rigueur et une structure de site simple et claire pour ne pas oublier d'effacer des pages lors des mises à jour (une simple mise à jour peut effacer 3 à 400 pages du cache)
thierry8 a écrit:- Enfin, pour supprimer la page en cache (j’ai bien bien compris qu’il y a un une méthode ftp) mais par impossibilité de procéder comme ceci, je souhaiterais savoir s’il existe une fonction (un code comme pour l’ajout en cache) qui permettrais de supprimer la page en cache à chaque modifcation…(par exemple un site administrable, qui voit son accueil modifier une foi par semaine, cette méthode serait très aventageuse !
Si tu ne peux pas utiliser les fonctions ftp, tu peux essayer avec la fonction unlink de php.
voila!
- thierry8
- WRInaute accro

- Messages: 3251
- Inscription: 11 Juil 2005
Ok ! merci pour ces éléments complémentaires...
Donc il s'agit bêtement d'un dossier quelconque que l'on utilise pour gérer notre cache....
Oui mais....
... il y aura tout de même un gain de temps pour l'utilisateur...sans doute que pour les ressources cela sera inutile pour un hebergement mut., mais si un utilisateur demande une page déjà existante dans le cache se sera plus rapide que de la recréer...? donc il y a tout de même un gain...(aussi bien pour moi que pour les autres héberger) c'est d'ailleur aussi le but du cache...(ok pour les ressources mais pour cela aussi (vitesse)...non ?)
Ce que je voulais dire, c'est qu'il peut savèrer plus long, pour l'utilisateur...
je m'explique, pour un forum, en prennant un sujet, s'il subit beaucoup de modification, il faudra non seulement rechercher la page dans la base de données mais en plus de ca il faudra très souvent ajouter ou supprimer dans le cache...donc la ou je veux en venir c'est que l'on peut etre perdant du fait que si c'est quelque chose qui est souvent modifié...on effectue plus de commande...donc pas de gain...voyez ou je veux en venir ?
voila!
thierry8 a écrit:
- Je n’est pas bien saisie concernant le dossier cache, faut-il simplement le créer ? (dans ce cas quel droit unix doit-on lui donner, à quel endroit le créer ? public_html ?)
le dossier cache doit être accessible par un script php (je le met à la racine du site). Pour ce qui est des droits, public en lecture bien sur, en ecriture cela dépends de la config du serveur. Il peut etre en 755 par exemple si php en est le propriétaire.
Donc il s'agit bêtement d'un dossier quelconque que l'on utilise pour gérer notre cache....
thierry8 a écrit:
- Vous dites que cela est avantageux si l’on est sur un serveur dédié… Mais si le dossier cache est à la racine de notre site, cela revient au même pour un serveur mut. Car le principe reste le même ! Plus besoin de régénérer le document, il est directement envoyé ? ai-je bien compris…. ?
Lorsque je dis que c'est moins interressant sur un mutualisé c'est parce que les ressources étant partagées par plusieurs sites, si il n'utilisent pas tous la mise en cache, l'éconnomie de resources sql peut ne pas être significative. En fait, si tu utilise la mise en cache sur ton site sur un mutualisé, tu partage le gain de ressources entre tous les sites héberges sur ce serveur.
Oui mais....
thierry8 a écrit:
- Si l’on possède un forum, on applique aussi ce type de méthode ? (je pense que ce doit-être lourd, non ? chaque modification supprimer la page en cache, la recréer en cache à la première demande…cela peut-être lourd pour un forum subissant beaucoup de modifications ?)
si ton forum est rewrité, ce n'est pas trés sorcier à mettre en place ni lourds. Par contre, s'il n'est pas rewrté, il te faut faire une tranformation d'une url en nom de fichier valide et unique. En fait, la taille du site n'est pas un problème (le site de mon profil compte plus de 50000 pages!), la fréquence de mise en jours non plus (je fait des mises à jour tout les jours) cela impose seulement beaucoup de rigueur et une structure de site simple et claire pour ne pas oublier d'effacer des pages lors des mises à jour (une simple mise à jour peut effacer 3 à 400 pages du cache)
Ce que je voulais dire, c'est qu'il peut savèrer plus long, pour l'utilisateur...
je m'explique, pour un forum, en prennant un sujet, s'il subit beaucoup de modification, il faudra non seulement rechercher la page dans la base de données mais en plus de ca il faudra très souvent ajouter ou supprimer dans le cache...donc la ou je veux en venir c'est que l'on peut etre perdant du fait que si c'est quelque chose qui est souvent modifié...on effectue plus de commande...donc pas de gain...voyez ou je veux en venir ?
voila!
-

tawath - WRInaute occasionnel

- Messages: 289
- Inscription: 30 Avr 2005
Hello
je fais tourner un cache sur un site en mutualisé ca soulage sans plus
en cas de requêtes multiple la db ne decroche plus
sur un site en duplicate mais dans un sous-domaine du premier
pas de cache et l'index s'affiche en moitie moins de temps...
La science s'interroge
je fais tourner un cache sur un site en mutualisé ca soulage sans plus
en cas de requêtes multiple la db ne decroche plus
sur un site en duplicate mais dans un sous-domaine du premier
pas de cache et l'index s'affiche en moitie moins de temps...
La science s'interroge
Lectures recommandées sur ce thème :
- [script] Mise en cache des pages PHP - V2
- Problème de mise en cache de pages PHP
- [tutoriel] Mise en cache en PHP, la version complète.
- Mise en cache PHP et librairie GD, est ce correct svp ?
- Utilisation intensive de la mise en cache des pages PHP.
- Mise en cache des pages php : mon alternative hérétique !
- [script] php class cache : accélérez vos pages !
- Recherche script d'annuaire PHP avec lien caché
- Mise en place d'un script de news php dans wordpress
- Comment lancer un script php à parrtir d'un autre script php ?
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

