Code statut 304

Informations et questions sur Apache en général.

Modérateur : Modérateurs

Pascal07
Nouveau membre
Messages : 2
Inscription : lun. 09 mars 2009, 20:41

Code statut 304

Messagepar Pascal07 » lun. 09 mars 2009, 21:04

Bonjour,

Je cherche à comprendre comment fonctionne la relation client/serveur en fonction de l'état du cache du client.

Dans un premier temps, j'ai désactivé mod_expires avec la ligne:

Code : Tout sélectionner

ExpiresActive Off


Puis je vide le cache de Firefox et j'affiche une page de mon site web.
A l'aide de firebug, je regarde l'échange requête/réponse pour une image (fond_2.png). J'obtiens ceci:

Code : Tout sélectionner

Requête
Host    luxpopuli.fr
User-Agent   Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7
Accept   image/png,image/*;q=0.8,*/*;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://luxpopuli.fr/design/plain_site/stylesheets/miseEnPage_onlineEditor_compressed.css
Cookie   eZSESSIDluxpopuli=6bc33d5cf4096d1cc12d1dd037decbf3; __utmc=1; __utmc=126955792; __utma=126955792.2344210726218851000
.1236424606.1236608760.1236618520.7; __utmz=126955792.1236424606.1.1.utmcsr=(direct)|utmccn=(direct)
|utmcmd=(none); AWSUSER_ID=awsuser_id1236424606524r8822; __utmb=126955792.37.10.1236618520; AWSSESSION_ID
=awssession_id1236618519956r9259

Réponse
Date   Mon, 09 Mar 2009 19:49:32 GMT
Server   Apache/1.3.41 (Unix) mod_gzip/1.3.26.1a mod_deflate/1.0.21 mod_perl/1.30 mod_fastcgi/2.4.6 PHP/4.4.9
 mod_ssl/2.8.31 OpenSSL/0.9.8j
Last-Modified      Thu, 17 Apr 2008 15:35:56 GMT
Etag        "40a9-48076e5c"
Accept-Ranges   bytes
Content-Length   16553
Keep-Alive   timeout=15, max=86
Connection   Keep-Alive
Content-Type   image/png


On voit que la réponse contient le champ d'en-tête Last-Modified qui indique au navigateur que l'image qu'il vient de mettre en cache est inchangée depuis le 17 avril 2008.

Ce que je ne comprends pas, c'est que si je recharge la page en cliquant sur le lien du menu de mon site permettant d'afficher cette page (donc l'image fond_2.png) alors Firebug n'affiche aucune requête GET conditionnelle (If-Modified-Since).
Pourquoi le navigateur n'envoie t-il pas de requête GET conditionnelle alors que la date de dernière modification de l'image est passée ?

Par contre, si je recharge la page avec le bouton «Actualiser la page courante» du navigateur, alors là Firebug affiche une requête GET conditionnelle (et la réponse) pour chacune des images. Le code Statut étant alors 304.

J'avoue ne pas savoir interpréter ce comportement du navigateur.

Merci d'avance,

Pascal

Pascal07
Nouveau membre
Messages : 2
Inscription : lun. 09 mars 2009, 20:41

Re: Code statut 304

Messagepar Pascal07 » mar. 10 mars 2009, 18:56

Bonjour,

La combinaison de touches Ctrl+F5 force donc le navigateur à envoyer des requêtes GET (non conditionnelles, c'est à dire sans en-tête If-Modified-Since) avec comme valeur no-cache dans le champ d'en-tête Cache-Control. Ceci imposant le téléchargement de tous les éléments.

La touche F5 force le navigateur à envoyer des requêtes GET avec comme valeur max-age=0 dans le champ d'en-tête Cache-Control. Ceci imposant, par le biais d'une requête GET conditionnelle, c'est à dire contenant un en-tête If-Modified-Since, la vérification de la date d'expiration de tous les éléments en cache. D'où les codes réponse 304 Not Modified.

Recharger la page à partir de la barre d'URI du navigateur ou d'un lien du menu impose au navigateur d'avoir recourt au fonctionnement naturel de son système de cache. Partant, seuls les éléments absent du cache ou précédemment mis en cache et dont la date de validité n'a pas expirée seront re-téléchargés.

Pascal


Revenir vers « Général »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité