226 votes

Code d'état HTTP 200 (cache) vs code d'état 304?

Je suis à l'aide de la "Google Page Speed" plug-in pour Firefox pour accéder à mon site web.

Certains des composants sur ma page est indiquée à l'état HTTP:

200 200 (cache) 304

Par Google "Page Speed".

Ce que je suis confus au sujet de qui est la différence entre 200 (cache) et 304.

J'ai rafraîchi la page plusieurs fois (mais n'ont pas effacé le cache de mon navigateur) et il semble toujours que mon favicon.ico et quelques images sont statut=200 (cache), alors que certaines autres images sont de statut http 304.

Je ne comprends pas pourquoi la différence.

Mise à JOUR:

À l'aide de Google "Page Speed", je reçois un "200 (cache)" pour http://example.com/favicon.ico ainsi que http://cdn.example.com/js/ga.js

Mais, je reçois un statut http "304" pour http://cdn.example.com/js/combined.min.js

Je ne comprends pas pourquoi j'ai deux fichiers JavaScript situé dans le même répertoire /js/, un retour à un état http 304 et de l'autre le retour de 200 (cache) code d'état.

240voto

Ben Points 4937

Les articles avec le code "200 (cache)" susceptibles d'avoir une date ultérieure Expires: - têtes indiquent qu'ils seront valables pour un certain temps sans avoir besoin d'un rafraîchissement ou d'un cas particulier comme l'icone (la plupart des navigateurs les mettre en cache un certain temps sans vérification des modifications, à moins que vous de forcer le rafraîchissement ou de vider le cache). Lorsque le navigateur reçoit la demande de ces éléments, il vérifie le cache et, le cas échéant, renvoie la version du cache; à aucun moment, est une requête faite au serveur.

304s, d'autre part, sont la réponse du serveur une fois que le navigateur a vérifié si le fichier a été modifié depuis la dernière version, il avait mis en cache (la réponse "aucune").

Pour plus optimale de performances de site web, vous êtes mieux de la fixation d'un lointain avenir, Expires: - tête pour tous les actifs du possible, et puis, quand un actif doit être changé, en changeant le nom de fichier réel de l'actif, ou l'ajout d'une chaîne de version aux demandes de l'actif. Ceci élimine le besoin pour toute demande, à moins que l'actif a changé à partir de la version en cache. Yahoo! a plus de cache de performance liés à des lignes directrices, qui, assurez-vous que les ETags sont correctement configurés.

71voto

James Lawruk Points 8106

200 (cache) des moyens de Firefox est tout simplement à l'aide de l'localement version mise en cache. C'est le plus rapide car pas de demande pour le serveur Web est fait.

304 signifie que Firefox est l'envoi d'un "Si-Modified-since" conditionnel demande au serveur Web. Si le fichier n'a pas été mis à jour depuis la date de l'envoi par le navigateur, le serveur Web renvoie une réponse 304 qui dit essentiellement à Firefox d'utiliser sa version mise en cache. Il n'est pas aussi rapide que 200 (cache) parce que la demande est envoyée au serveur Web, mais le serveur n'a pas à envoyer le contenu du fichier.

Pour votre dernière question, je ne sais pas pourquoi les deux fichiers JavaScript dans le même répertoire sont de retour à des résultats différents.

19voto

Pooch Points 161

Cela m'a jeté un long moment. La première chose que je voudrais vérifier que vous n'êtes pas recharger la page en cliquant sur le bouton actualiser, qui sera toujours question d'une demande conditionnelle pour les ressources et sera de retour 304s pour beaucoup des éléments de la page. Au lieu d'aller jusqu'à la barre d'url, sélectionnez la page et appuyez sur entrée, comme si vous aviez tapé dans la même URL, encore une fois, qui vous donnera un meilleur indicateur de ce qui est mis en cache correctement. Cet article fait un excellent travail en expliquant la différence entre le conditionnel et inconditionnel de la demande et de la façon dont le bouton actualiser les affecte: http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about-conditional-http-requests-and-the-refresh-button.aspx

9voto

richleland Points 969

HTTP 304 est "non modifié". Votre serveur web est fondamentalement dit au navigateur "ce fichier n'a pas changé depuis la dernière fois que vous avez demandé." Alors qu'un HTTP 200 est dit au navigateur "voici une réponse réussie - qui doivent être retournés lorsque c'est la première fois que votre navigateur est d'accéder au fichier ou la première fois qu'une copie modifiée est en cours d'accès.

Pour plus d'informations sur les codes d'état de vérifier http://en.wikipedia.org/wiki/List%5Fof%5FHTTP%5Fstatus%5Fcodes.

3voto

Brandon H Points 2063

304 n'est pas modifié. Je reçois beaucoup ce code dans mes fichiers multimédias comme css et js.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X