[script] Mise en cache des pages PHP
-

JeunZ - WRInaute accro

- Messages: 5301
- Inscription: 18 Fév 2004
- 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?
-

JeunZ - WRInaute accro

- Messages: 5301
- Inscription: 18 Fév 2004
- 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');
}
-

JeunZ - WRInaute accro

- Messages: 5301
- Inscription: 18 Fév 2004
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?
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
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?
-

JeunZ - WRInaute accro

- Messages: 5301
- Inscription: 18 Fév 2004
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).
-

JeunZ - WRInaute accro

- Messages: 5301
- Inscription: 18 Fév 2004
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.
-

Phix - WRInaute occasionnel

- Messages: 420
- Inscription: 15 Juin 2004
- 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
-

Phix - WRInaute occasionnel

- Messages: 420
- Inscription: 15 Juin 2004
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é...
-

fandecine - Modérateur

- Messages: 2024
- Inscription: 2 Avr 2005
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é!?
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


