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.
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
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
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
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');
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.