Pregunta

Un servidor HTTP que utiliza el contenido de la negociación para servir en una única dirección URL de la identidad - o gzip-codificado basado en el cliente Accept-Encoding encabezado.

Ahora supongamos que tenemos un caché de proxy como squid entre los clientes y el httpd.

Si el proxy tiene en caché ambas codificaciones de una dirección URL, ¿cómo determinar lo que va a servir?

La no-gzip instancia (que originalmente no sirve con Vary) puede servir para cualquier cliente, pero el codificado instancias (tener Vary: Accept-Encoding) sólo pueden ser enviados a un cliente con el mismo Accept-Encoding el valor del encabezado como se utiliza en la solicitud original.

E. g.La ópera envía "deflate, gzip, x-gzip, identity, *;q=0" pero IE8 envía "gzip, deflate".De acuerdo a la especificación, entonces, cachés de no compartir el contenido codificado en caché entre los dos navegadores.¿Es esto cierto?

¿Fue útil?

Solución

En primer lugar, es mi humilde opinión incorrecta no enviar "Vary: Accept-Encoding". Cuando la entidad varía efectivamente por esa cabecera (o su ausencia)

Una vez dicho esto, la especificación de hecho actualmente no permite que sirve la respuesta en caché de Opera, debido a que la cabecera Vary no coincide con las definiciones en HTTPbis, Parte 6, Sección 2.6 . Tal vez esta es un área donde debemos relajar los requisitos para los cachés (es posible que desee hacer un seguimiento de la IETF lista de correo HTTP ...

ACTUALIZACIÓN: Resulta que este ya estaba marcado como una pregunta abierta; Acabo de añadir un problema en nuestro seguimiento de incidencias para ello, ver Edición 147 .

Otros consejos

Julian es el derecho, por supuesto.Lección: Enviar siempre Vary: Accept-Encoding al oler Accept-Encoding, no importa lo que la respuesta de la codificación.

Para responder a mi pregunta, si por error dejar Vary si un proxy recibe un no codificados respuesta (sin Vary), puede simplemente caché y volver esto para cada solicitud posterior (ignorando Accept-Encoding). Squid no esta.

El gran problema con dejar fuera Vary es que si el caché recibe una variante codificada sin Vary entonces puede enviar esto en respuesta a otras solicitudes, aunque su Accept-Encoding indica que el cliente no puede entender el contenido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top