Aller au contenu

PHP, headers et gestion des caches


Sujets conseillés

Posté

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:

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 :

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 :

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 :

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 :

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.

Posté

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 ?

Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...