[script] Mise en cache des pages PHP
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
- Code: Tout sélectionner
<form action="<?php dcPostUrl(); ?>" method="post" id="comment-form">
<fieldset>
j'ai ça dans une page, et dans le cache <?php dcPostUrl(); ?> = rien du tout.
en gros dans le cache ça me donne:
- Code: Tout sélectionner
<form action="" method="post" id="comment-form">
<fieldset>
une idée du pourquoi du comment?
- Code: Tout sélectionner
@function dcPostURL
Cette fonction affiche l'URI du billet, son permalien. On l'utilisera dans
l'affichage d'un billet (boucle ou pas). Par exemple:
|<a href="<?php dcPostURL(); ?>">lien permanent</a>
*/
function dcPostURL()
{
echo $GLOBALS['news']->getPermURL();
}
et bien sur je suis allé cherché après getpermurl:
- Code: Tout sélectionner
# Lien permanent vers le commentaire
function getPermURL()
{
$post_titre_url = $this->blog->str2url($this->f('post_titre'));
$url = sprintf($this->blog->front_url['post'],$this->f('postyear'),
$this->f('postmonth'),$this->f('postday'),
$this->f('post_id'),$post_titre_url);
return $url.'#c'.$this->f('comment_id');
}
Je trouve le code assez mal fait en fait... Peut etre parsque j'ai pas tout comprit mais:
Votre page PHP ici
moi cette partie je l'aurai mit dans
if ($fd) {
en adaptant histoire de n'executer le code php QUE SI LE CACHE n'existe pas, car la j'ai l'impression que tu l'executes de toute façon non?
Votre page PHP ici
moi cette partie je l'aurai mit dans
if ($fd) {
en adaptant histoire de n'executer le code php QUE SI LE CACHE n'existe pas, car la j'ai l'impression que tu l'executes de toute façon non?
pourtant, j'ai mis les commentaires JeunZ! Tu est fatigué ou tu me teste?
le secret c'est ob_start(); à partir de la, tout ce qui suit n'est pas envoyé au navigateur mais bufférisé.
ensuite, ob_get_contents() récupére le contenu du buffer, on peut alors areter la bufferisation avec ob_end_flush() et sauvegarder le contenu dans le fichier cache.
simple, non?
le secret c'est ob_start(); à partir de la, tout ce qui suit n'est pas envoyé au navigateur mais bufférisé.
ensuite, ob_get_contents() récupére le contenu du buffer, on peut alors areter la bufferisation avec ob_end_flush() et sauvegarder le contenu dans le fichier cache.
simple, non?
Je suis d'accord (je suis pas un pro je vais sans doute dire une connerie, surtout que je n'ai jamais utilisé cette histoire de buffer), mais même si ce n'est pas envoyé au navigateur c'est executé coté serveur non?
(aie ca y est je crois que j'ai dit la connerie).
(aie ca y est je crois que j'ai dit la connerie).
Et bien alors si on met une condition sur l'existance du fichier cache on peut ne pas executer le code php et ainsi économiser des ressources serveurs.
Si cache alors on met le cache sinon on execute le code php et on génère le cache.
C'est mieux que :
On execute le code php, si le cache existe on affiche le cache sinon on génère le cache et on affiche le code php.
Dans la seconde solution celle présentée ici on execute toujours le code php alors que dans un cas c'est inutile je crois.
Si cache alors on met le cache sinon on execute le code php et on génère le cache.
C'est mieux que :
On execute le code php, si le cache existe on affiche le cache sinon on génère le cache et on affiche le code php.
Dans la seconde solution celle présentée ici on execute toujours le code php alors que dans un cas c'est inutile je crois.
- Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*360)) { //si la page existe dans le cache et n'a pas expirée
ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
?>
[i]Votre page PHP ici[/i]
<?php
$contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
ob_end_flush();// on termine la bufferisation
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
if ($fd) {
fwrite($fd,$contenuCache); // on ecrit le contenu du buffer dans le fichier cache
fclose($fd);
}
} else { // le fichier cache existe déjà
include ($fichierCache); // on le copie ici
}
Jeunz -> c'est ce qu'il fait. Avant de buffériser, il teste si le cache n'est pas expiré, si c'est le cas il fait le include du fichier en cache, sinon il exécute le code en le bufférisant
Ba alors je comprend pas car avec la méthode ci dessu testé hier pendant 3h la charge de mon dédié n'a pas changé par contre j'avais un affichage un peu plus rapide.
J'ai fait ma modif, et ma charge est depuis lors divisée par 10...
J'ai fait ma modif, et ma charge est depuis lors divisée par 10...
Tu peux mettre ta modification? Est-ce que tu as pu constater que des fichiers étaient créés dans le répertoire cache?
C'est bizarre, parce que dans la logique du script de fandecine, il n'exécute le php que si le fichier est expiré...
C'est bizarre, parce que dans la logique du script de fandecine, il n'exécute le php que si le fichier est expiré...
Attention! Si la page PHP que tu met en cache consomme peu de resources, tu vera pas de changement notoire de charge. Par contre si ttu fait un max de requettes Mysql, y a pas photo ni sur la vitesse de chargement, ni sur la charge du serveur.
Par exemple, lorsque je fais une grose Maj sur mon site, je peux te dire que je vois la charge grimper en fleche jusqu'a ce que le cahe soit regénéré.
Maintenent je serais curieux de voir ton code modifié!?
Par exemple, lorsque je fais une grose Maj sur mon site, je peux te dire que je vois la charge grimper en fleche jusqu'a ce que le cahe soit regénéré.
Maintenent je serais curieux de voir ton code modifié!?
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Les albums web Picasa passent à 1 Go de stockage
- Le cache de Google : description, explications
- Photos satellite des incendies en Grèce dans Google Earth
- L'algorithme de Google en résumé (mars 2003)
- Ajouter un Gadget Google sur son site
- Google Desktop pour Mac OS X
- Picasa Web Albums en français
- Google Pack s'enrichit de 2 nouveaux logiciels gratuits
- Explications sur le Crawl Caching Proxy de Google
- Nouvel article : "Google en résumé"
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités









le forum