Pourquoi est ce que SPIP n'utilise pas ce Header Il renvoie bien la
date Last-Modified seulement c'est dommage car les clients recoivent
quand même la page concernée non ? ? Utiliser ce header ne
représenterait-il pas un gain de bande passante et de charge du
serveur ? ?
Sur un de mes site j'ai traffiqué inc-public-glopal.php3 de la manière
suivante et je dois dire que c'est plutot pratique. HtDig ne mets
plus que 1 heure à indexer le site contre 3 et je pense que pour des
moteurs comme google le gain sera encore plus énorme (en temps et en
bande passante)...
if ($lastmodified) { @Header ("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastmodified)." GMT");
$gmdate_mod = gmdate('D, d M Y H:i:s', $lastmodified) . ' GMT';
$if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);
if ($if_modified_since == $gmdate_mod) {
header("HTTP/1.0 304 Not Modified");
exit;
} @Header ("Expires: ".gmdate("D, d M Y H:i:s", $lastmodified + $delais)." GMT");
}
Ok, je note pour preg_replace, pour la prochaine fois.
Sinon ca a peut etre déjà été un sujet de discussion mais pourquoi ne
pas regénerer le cache en fonction du champs if_modified_since ?
Si on a une requete avec un if_modified_since plus vieux que la date
stockée dans la base SQL alors on regénere le contenu.
Ca fait que le cache reste toujours à jour. Bien sûr on garde le
système d'expiration car si le site à peu de visiteurs et (par
malchance) que tous ces visiteurs ont des browsers n'envoient pas ce
header on se retrouve toujours avec du vieux contenu.
Sinon ca a peut etre déjà été un sujet de discussion mais pourquoi ne
pas regénerer le cache en fonction du champs if_modified_since ?
Si on a une requete avec un if_modified_since plus vieux que la date
stockée dans la base SQL alors on regénere le contenu.
Peux-tu préciser ta pensée ? A quoi ressemblerait le code ?
Il serait facile de disposer dans spip_meta de la date de dernière màj de la
base (enfin, de mise-à-jour du contenu, pas des stats, moteur de recherche
etc.);
Mais ta proposition ne reviendrait-elle pas à entièrement vider le cache (ie
recalculer toutes les pages) dès qu'il y a une petite modif sur le site ? Si
c'est ça, on risque fort d'avoir un sytème qui fait des montées en charge
impressionnantes à chaque publication d'article -- c'est-à-dire précisément
au moment où un admin est en train de bosser dessus... pas évident que ça
soit une bonne idée.