web-dev-qa-db-fra.com

Pourquoi "Désactiver le cache" dans les outils de développement Chrome modifie-t-il l'en-tête de réponse "content-encoding: gzip"?

Qu'est-ce que le "cache de désactivation" a à voir avec gzip et la compression? Comment faire si "Disable Cache" est coché, les en-têtes de réponse indiquent le codage du contenu: gzip, mais lorsque "Disable Cache" n'est pas coché (2e capture d'écran) les en-têtes de réponse ne montrent pas l'encodage du contenu: gzip? Lequel est correct ou comment puis-je les montrer tous les deux au format gzip? Je vous remercie.

enter image description hereenter image description here

3
Mike Tink

Qu'est-ce que le "cache de désactivation" a à voir avec gzip et la compression?

Rien directement. Sauf que lorsque "Disable Cache" est coché (c'est-à-dire que le cache du navigateur local est désactivé), le serveur est obligé d'envoyer une nouvelle réponse (et le corps). Vous obtiendrez la même réponse si vous effaciez simplement le cache de votre navigateur avant de faire la demande (avec l'option "Désactiver le cache" non cochée).

À l'inverse, lorsque le cache local est activé, le serveur peut ne pas envoyer de réponse complète (c'est ce qui se passe ici). Dans certaines situations, le navigateur peut ne pas envoyer de requête du tout (en fonction du mécanisme de mise en cache).

Comment faire si "Disable Cache" est coché, les en-têtes de réponse affichent un encodage de contenu: gzip

Parce que le serveur est obligé d'envoyer une réponse complète/récente, y compris un corps de la réponse. C'est le corps de la réponse qui est gzip'd.

mais lorsque "Disable Cache" n'est pas coché (2e capture d'écran), les en-têtes de réponse ne montrent pas l'encodage du contenu: gzip?

Dans ce cas, votre serveur répond avec Status: 304 "Non modifié" car la copie en cache localement est réputée récente. Avec un 304, le serveur n'envoie pas de corps de réponse (il n'y a pas d'en-tête Content-Length) et par conséquent, il n'y a pas de contenu pour gzip. La réponse est finalement extraite du cache du navigateur.

Lequel est correct ou comment puis-je les montrer tous les deux au format gzip?

Les deux sont corrects. L'un est une réponse complète du serveur et du corps, l'autre est une réponse courte (HEAD uniquement) 304 indiquant que la version mise en cache localement doit être utilisée à la place.

2
DocRoot