Comment les caches proxy HTTP décident entre le service des ressources par rapport codées identitaires gzip?

StackOverflow https://stackoverflow.com/questions/694918

Question

Un serveur HTTP utilise-négociation de contenu pour servir une seule URL ou gzip-identitaire codé sur la base de l'en-tête Accept-Encoding du client.

Maintenant que nous avons un cache proxy comme Squid entre les clients et le httpd.

Si le proxy a mis en cache les deux encodages d'une URL, comment est-elle déterminer quels servir?

L'instance non-gzip (pas à l'origine servi avec Vary) peut être servi à tout client, mais les instances codées (ayant de Vary: Accept-Encoding) ne peut être envoyé à un client avec la valeur d'en-tête de Accept-Encoding identique a été utilisé dans la demande initiale .

par exemple. Opera envoie "deflate, gzip, x-gzip, identity, *;q=0" mais IE8 envoie "gzip, deflate". Selon les spécifications, alors, les caches ne doivent pas partager les caches codées de contenu entre les deux navigateurs. Est-ce vrai?

Était-ce utile?

La solution

Tout d'abord, il est à mon humble avis pas incorrect d'envoyer « Variez: Accept-Encoding ». En effet, lorsque l'entité Varie par cet en-tête (ou son absence)

Cela étant dit, les spécifications ne permettant pas actuellement en effet au service de la réponse en cache à l'Opéra, car la tête Vary ne correspond pas selon les définitions HTTPbis, partie 6, section 2.6 . Peut-être cela est un domaine où nous devons assouplir les exigences pour les caches (vous pouvez suivre sur la page liste de diffusion IETF HTTP ...

Mise à jour: se avère que ce qui était déjà marqué comme une question ouverte; Je viens d'ajouter un problème dans notre numéro de suivi pour cela, voir Problème 147 .

Autres conseils

Julian a raison, bien sûr. Leçon:. Toujours envoyer Vary: Accept-Encoding quand renifler Accept-Encoding , peu importe ce que le codage de réponse

Pour répondre à ma question, si vous laissez tort Vary dehors, si un proxy reçoit une réponse non codée (sans Vary), il peut simplement mettre en cache et renvoyer ce pour chaque requête (en ignorant Accept-Encoding). Squid Est-ce .

Le gros problème avec laissant de côté Variez est que si le cache reçoit une variante codée sans Variez alors il peut envoyer ce en réponse à d'autres demandes, même si leur Accept-Encoding indique que le client ne peut pas comprendre le contenu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top