Mise en cache et page dynamique - PHP - Programmation
Marsh Posté le 10-03-2006 à 16:22:11
utilise smarty, ça fera tout a ta place
A pis adoDB( ou une autre librairie d'abstraction) pour mettre en cache les résultats de tes requetes!
Marsh Posté le 10-03-2006 à 16:34:12
hum... j'ai déjà passé pas mal d'heures à lire la documentation de smarty, j'y retourne de ce pas pour continuer à la lire voir si je ne suis pas passé à coté de quelque chose.
mais je ne comprends pas comment un systeme de cache peut fonctionner avec l'exemple que j'ai mis plus haut :
utilisateur A voit page index => hop mise en cache de la page avec le message "welcome A"
utilisateur B voit page index => il recupere le cache... mais il voit "welcome A" à la place de welcome B
je dois surement comprendre quelque chose de travers ...
Marsh Posté le 10-03-2006 à 16:44:28
Citation : Le cache est utilisée pour accélérer l'appel de display() ou de fetch() en sauvegardant leur résultat dans un fichier. Si un fichier de cache est disponible lors d'un appel, il sera affiché sans qu'il ne soit nécessaire de regénérer le résultat. Le système de cache peut accélérer les traitements de façon impressionnante, en particulier les templates dont la compilation est très longue. Comme le résultat de display() ou de fetch()est dans le cache, un fichier de cache peut être composé de plusieurs fichiers de templates, plusieurs fichiers de configuration, etc. |
Le reste ici
Marsh Posté le 10-03-2006 à 17:03:32
ReplyMarsh Posté le 10-03-2006 à 17:09:16
fluminis > D'aprés ce que je sais de smarty, ca permet de mettre une partie de la page en cache.
En gros, si sur ta page d'acceuil t'as 50% de la page qui est constitué par les 5 derniéres news et que tu ne rajoutes une news qu'une fois par semaine, alors t'as tout intéret à mettre en cache cette partie là et à ne rendre invalide cette mise en cache que quand tu rajouteras une nouvelle news.
De cette maniére, t'auras au moins la moité de ta page d'acceuil qui est en cache.
En faisant ça pour chaque élément de la page qui ne bouge pas souvent, tu peux avoir en cache un grand pourcentage de ta page. Evidement, ca veut dire qu'il faut reconstituer la page à l'arrivé
Marsh Posté le 10-03-2006 à 17:15:37
Juste une petite intervention, si je peux me permettre, concernant l'utilisation des moteurs de templates tels que Smarty.
http://www.phppatterns.com/docs/de [...] =templates
Marsh Posté le 10-03-2006 à 17:35:38
j_lecruel a écrit : Juste une petite intervention, si je peux me permettre, concernant l'utilisation des moteurs de templates tels que Smarty. |
Article très interessant
D'ailleurs je suis totalement d'accord avec la conclusion:
Citation : In short, the point of template engines should be to separate your business logic from your presentation logic, not separate your PHP code from your HTML code. |
Reste que dans ce topic précis, le point était sur la mise en cache et je ne citais smarty que comme un moyen d'éviter de ré-inventer la roue!
Reste qu'il est toujours plus instructif de tout faire soi-même, après ça dépend des contraintes de temps par exemple. Et puis j'ai du mal a croire que la V1 d'un système de cache d'un developpeur isolé puisse rivaliser d'entrée en termes de performance!
Marsh Posté le 10-03-2006 à 17:38:47
En même temps, conseiller Smarty pour la mise en cache (donc pour améliorer les performances) alors que l'utilisation de ce même Smarty va les lui plomber...
... quoi... moi, anti-templates engine ?
Marsh Posté le 10-03-2006 à 18:14:05
j_lecruel a écrit : En même temps, conseiller Smarty pour la mise en cache (donc pour améliorer les performances) alors que l'utilisation de ce même Smarty va les lui plomber... |
Alors la par contre je m'outre!!!
Smarty ne plombe pas les perfs. Encore une fois je demande a voir qui est le plus perfomant entre un truc perso et la mise en case de smarty!
Mais on s'arrete on tiens un bon troll "pour ou contre l'utilisation des templates!"
Marsh Posté le 10-03-2006 à 19:29:23
j_lecruel a écrit : Juste une petite intervention, si je peux me permettre, concernant l'utilisation des moteurs de templates tels que Smarty. |
Tanks a lot !
Quel article tres interessant !
Citation : Reste que dans ce topic précis, le point était sur la mise en cache et je ne citais smarty que comme un moyen d'éviter de ré-inventer la roue! |
Je suis loin d'être mancho et j'adore réinventer la roue pour savoir comment ça marche. Du point du vu des perfs, je suis d'accord que mon systeme perso ne concurrencera pas un systeme tel que Smarty qui a fait ses preuves. Mais ça ne fait rien, j'ai envie de le faire moi même.
Et c'est clair que j'ai surtout besoin de la mise en cache plus que de la fonctionnalité moteur de template.
Smarty imbrique les deux, mais est ce une obligation ?
Peut-etre que l'utilisation de fonctions ob_start et autre pour recupérer le contenu de mes pages et les mettre en dur qq part me suffirait...
mais j'en reviens encore à mon probleme... si a quelques endrois dans la page je dois faire des tests dependant du user visualisant la page alors je ne peux pas mettre en cache ces parties...
Marsh Posté le 10-03-2006 à 19:35:48
non, tu ne pourras jamais mettre en cache un élément de la page qui varie à chaque visite (typiquement, "bonjour Bidule" ). Ce qui est on-ne-peut-plus logique
donc il faut mettre en cache uniquement les parties dont les mises à jour sont rares
Marsh Posté le 10-03-2006 à 22:46:13
De la même veine: quelqu un a t il essayé les <<server side includes>>? Pour des petits sites ça apporte peut être quelque gains de performance? Je nai jamais bidouillé des server side includes que sur des pages d erreur apache.
Marsh Posté le 12-03-2006 à 18:35:36
Djebel1 a écrit : non, tu ne pourras jamais mettre en cache un élément de la page qui varie à chaque visite (typiquement, "bonjour Bidule" ). Ce qui est on-ne-peut-plus logique |
C'est vrai je suis bete
Par contre, je peux surement tricher un peu et mettre le lien visible pour tout le monde et si l'utilisateur n'a pas le droit d'effectuer cette action il aurra le droit à un beau message du genre "vous n'etes pas authorisé à faire... ".
De cette manière, je pourrai mettre quasiment toute ma page en cache...
Marsh Posté le 12-03-2006 à 19:32:24
ouais enfin mettre toute la page en cache à l'exeption d'une ligne, c'est pas la mort non plus ^^
Marsh Posté le 10-03-2006 à 16:04:47
Bonjour,
Depuis quelques temps je tente de me documenter sur la mise en cache des pages afin d'accelerer mon site.
mais je ne comprends pas bien comment je peux appliquer ça à mon site, je m'explique :
en gros, avec la mise en place d'un cache :
1. si la page existe dans le cache
2. la renvoyer a l'utilisateur
3. sinon
4. l'executer
5. la mettre en cache
6. la renvoyer a l'utilisateur
bien, mais sur mes pages, j'ai des liens du genre : "mon profil" ou "modifier mon commentaire" qui n'apparaissent que si l'utilisateur est logué ou si le message qu'il voit lui appartient. Pour l'instant, je n'ai pas de cache donc je fais dans ma page php des tests un peu partout là où j'ai ce genre de lien à afficher, mais si la page est en cache, alors je ne fais plus ces tests...
Comment dois-je procceder pour mettre en place un systeme de cache à votre avis ?
---------------
http://poemes.iceteapeche.com - http://www.simuland.net