Version complète: sur le forum Webmaster Hub : PHP, headers et gestion des caches
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
froidure_nicolas
Voilà, comme la plupart des sites qui sont générés avec mon CMS ont pour objet de ne changer qu'à l'occasion, j'ai créé un cache.

Partant de là, je me suis dis que quitte à créer un cache sur le serveur, autant, par la même occasion, implémenter une gestion du cache client. Malheureusement, alors que pour IE, tout est Ok, Firefox me joue des tours. wacko.gif

En effet, prennons pour exemple http://bbcomposer.elitwork.com/manuel.html (la page d'accueil n'est pas concernée par le cache).

La première requête fonctionne corectement, téléchargement de la page et mise sous cache.

Les requêtes suivantes pour la même page se soldent de deux manières, la première qui fonctionne :
CODE
GET /manuel.html HTTP/1.1
Host: bbcomposer.elitwork.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://bbcomposer.elitwork.com/accueil.html
Cookie: lang=fr
If-Modified-Since: Sat, 14 Oct 2006 10:04:10 GMT

HTTP/1.x 304 Not Modified
Date: Sat, 14 Oct 2006 10:25:02 GMT
Server: Apache/2.0.58 (Unix) mod_ssl/2.0.58 OpenSSL/0.9.7i
Connection: Keep-Alive
Keep-Alive: timeout=15, max=100
Vary: Accept-Encoding,User-Agent


La seconde :
CODE
GET /manuel.html HTTP/1.1
Host: bbcomposer.elitwork.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://bbcomposer.elitwork.com/manuel.html
Cookie: lang=fr
If-Modified-Since: Sat, 14 Oct 2006 10:27:38 GMT

HTTP/1.x 200 OK


Et le navigateur, au lieu d'afficher la page, affiche un début d'entête (entre deux ?) que je ne peux bizarrement pas copier/coller ici.
EDIT : J'ai pu le faire avec Enregistrer-sous :
CODE
HTTP/1.1 304 Not Modified
Date: Sat, 14 Oct 2006 11:55:52 GMT
Server: Apache/2.0.58 (Unix) mod_ssl/2.0.58 OpenSSL/0.9.7i
Connection: Keep-Alive
Keep-Alive: timeout=15, max=97
Cache-Control: max-age=0, must-revalidate
Vary: Accept-Encoding,User-Agent
X-Pad: avoid browser bug


Et pourtant, ces deux requêtes reçoivent la même réponse en PHP :
CODE
header('Status: 304 Not Modified');
header('Cache-Control: max-age=0, must-revalidate');


Pour info :
L'utilisation de :
header('HTTP/1.0 304 Not Modified'); OU header('HTTP/1.1 304 Not Modified'); OU header('HTTP/1.x 304 Not Modified');
OU header('Not Modified', true, 304);
Ne résoud rien.

Retirer : header('Cache-Control: max-age=0, must-revalidate');
Ne change rien...

En local, tout est OK.
froidure_nicolas
Apparemment, certains utilisateurs de Firefox n'ont pas ce problème, j'ai traduit cela "avoid browser bug" dans google et ça signifie (selon lui) : "éviter le bogue de navigateur ".

Sagit-il d'un bug de Firefox ? Dois-je le signaler ?
froidure_nicolas
Etant donné le flot de réponse à ce sujet, j'ai décidé de soumettre ce problème sur le site de Mozilla. Je tiendrai au courant la communauté de leur réponse.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.