2010-06-10 16 views
7

Me pregunto cómo funciona el almacenamiento en caché con la API basada en la negociación de contenido. Desde el para obtener un recurso en XML o JSON, el URI será el mismo, por ejemplo:Descanso de la negociación de contenido y almacenamiento en caché

http://example.com/bikes/mountain 

El servicio devuelve JSON/XML basado en el encabezado Accept tipo. ¿Qué tan inteligentes son los cachés?

Por ejemplo:

  • si un cliente ha pedido este tipo con Aceptar para volver XML.
  • la respuesta es almacenada en caché por el servidor web, por ejemplo, 1 minuto.
  • segundas solicitudes de los clientes mismo recurso con Aceptar para volver tipo JSON

¿Reconoce el almacenamiento en caché de verificación tipos/contenido en absoluto? ¿O esto daría como resultado que el solicitante JSON recupere los datos XML, ya que eso es lo que el servidor había almacenado en caché? Espero que esto sea algo tan obvio que ya se haya solucionado, de lo contrario, ¿no es ese un argumento bastante grande para incluir .xml/.json en el URI?

Supongo que mi pregunta es, básicamente, ¿puedo usar de forma segura la negociación de contenido mientras sigo utilizando técnicas estándar de almacenamiento en caché?

Respuesta

2

Darrel tiene razón en que el encabezado Variar le dice al cliente qué encabezados de solicitud puede variar para obtener diferentes representaciones de un recurso.

Ese valor le dice al cliente que puede solicitar la representación en un formato de archivo diferente, configurando o cambiando el encabezado Aceptar (en su caso, JSON o XML). También puede obtener una representación diferente de su bicicleta de montaña en inglés y en francés si usa el encabezado Aceptar idioma.

Las dos solicitudes envían valores diferentes, por lo que siempre deben guardarse en caché por separado.

Cuando utiliza un valor de '*' en el encabezado Vary, eso significa que la respuesta no se debe almacenar en caché.

2

Sí. Observe la descripción del encabezado Vary en RFC 2616

En mi comprensión simplista del encabezado vary, las cach utilizarán los campos del encabezado que se nombran en el encabezado vary para identificar de manera única la representación en caché.

Cuestiones relacionadas