[spip-dev] Petite question

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");
}

Oui, c'est une bonne idée ; je vais l'ajouter dans la version CVS.

Merci !

-- Fil

PS: on n'a pas le droit d'utiliser preg_replace pour garder une
compatibilité maximale.

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.

Non ?

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.

-- Fil