Quelle est la différence entre le code d'état HTTP 200 (cache) vs code de statut 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.
Vous devez vous connecter pour publier un commentaire.
Les articles avec le code "200 (cache)" ont été remplies directement à partir de votre cache de navigateur, ce qui signifie que les demandes initiales pour les articles ont été retournés avec les en-têtes indiquant que le navigateur puisse les mettre en cache (par exemple une date ultérieure
Expires
ouCache-Control: max-age
en-têtes), et au moment de vous a déclenché une nouvelle demande, ceux mis en cache, les objets étaient encore stockés dans le cache local et n'avait pas encore expiré.304s, d'autre part, sont la réponse du serveur une fois que le navigateur a vérifié si un fichier a été modifié depuis la dernière version, il avait mis en cache (la réponse "aucune").
Pour la plupart optimal de performances de site web, vous êtes mieux de la fixation d'un présent-futur
Expires:
ouCache-Control: max-age
- tête pour tous les actifs, 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 vraiment changé à partir de la version dans le cache (pas besoin de réponse 304). Yahoo! a plus de cache de performance liés à des lignes directrices, qui, assurez-vous que les ETags sont correctement configurés.200 OK
réponse à partir du cache local. En d'autres termes, Firebug fait une demande/réponse de cycle de une demi-heure, et a mis en cache le résultat: le résultat a été une200 OK
, et le résultat est toujours un200 OK
, seulement maintenant, le résultat est à venir à partir de la mémoire cache plutôt que de partir du serveur.max-age
etage
en-têtes combiné peut également entraîner 200 (cache) des résultats siage
est à moins demax-age
. La seule exception est lorsque l'utilisateur clique sur le bouton actualiser de votre navigateur, dans ce cas, une 304-tête est envoyé.href
,url,
etsrc
les références de chaque fichier à inclure une "empreinte" (soit une valeur de hachage d'un fichier ou d'un simple nombre incrémenté), et puis de dire au serveur de la bande que des empreintes et sert juste àstyle.css
ou quoi que ce soit. Si vous ne pouvez pas le faire sur le serveur, votre système de construction de renommer les fichiers avec l'empreinte digitale.304
? OK. Puis en faisant ce mène à une200
? Ce autre est qui peut déclencher une demande qui ne nécessite pas de revalidation?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.
À 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.
Cela me jeta un long moment, trop. 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
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_of_HTTP_status_codes.
304 est pas modifié. j'obtiens ce code dans mes fichiers multimédia comme le css et le js.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5
Pour votre dernière question, pourquoi ? Je vais essayer de l'expliquer avec ce que je sais
Une brève explication de ces trois codes d'état en termes simples.
Si la mise en cache est activée sur le serveur
Pour certains fichiers du navigateur est de décider de la demande de serveur et pour certains c'est de se décider à lire à partir stockées (cache) des fichiers. Pourquoi est-ce ? Tous les fichiers ont une date d'expiration, de sorte
Si un fichier n'est pas expiré, le navigateur va utiliser du cache (200 cache).
Si le fichier est expiré, les requêtes du navigateur de serveur pour un fichier. Le serveur de fichiers dans les deux endroits (le navigateur et le serveur). Si le même fichier, le serveur refuse la demande. Selon le protocole navigateur utilise un fichier existant.
regardez cette nginx configuration
Ici la date d'expiration est fixée à 60 secondes, de sorte que tous les fichiers statiques sont mis en cache pendant 60 secondes. Donc, si u demande de nouveau un fichier dans un délai de 60 secondes navigateur de lire à partir de la mémoire (200 mémoire). Si u demande au bout de 60 secondes navigateur va demander du serveur (304).
J'ai supposé que le fichier n'est pas modifié après 60 secondes, dans ce cas, vous obtenez 200 (c'est à dire, mis à jour le fichier va être récupérées à partir du serveur).
Donc, si les serveurs sont configurés avec différentes expirant et la mise en cache des en-têtes (les politiques), l'état peut varier.
Dans votre cas, vous êtes à l'aide de ca, le but principal de la rdc est de haute disponibilité et de livraison rapide. Par conséquent, ils utilisent de multiples serveurs. Même s'il semble que les fichiers soient dans le même répertoire, ca peut utiliser plusieurs serveurs pour fournir u contenu, si ces serveurs ont des configurations différentes. Ensuite, ce statut peut changer. Espérons que cela aide.