2012-01-25 16 views
7

Espero que alguien pueda aconsejar sobre el método adecuado para hacer que Varnish envíe encabezados de control de caché. Actualmente, mi configuración está enviando "Cache-Control: no-cache" a los clientes.Cómo establecer los encabezados de control de caché de barniz

Gracias de antemano a cualquier persona que pudiera ser capaz de ayudar a ...

+0

Podría ayudar si se le explica lo que quiere. ¿Qué configuración (barniz o su back-end) está enviando encabezados sin caché? Puede anular estos encabezados en Varnish, pero si esto es 'correcto' depende de la semántica de sus respuestas (son reutilizables, sobre clientes, por cuánto tiempo, etc.). – ivy

+0

@ivy, gracias por su respuesta. Lo que intento lograr es que ** Barniz ** envíe encabezados de control de caché que especifico manualmente, independientemente de lo que el back-end envíe a Varnish. –

Respuesta

11

su back-end está enviando "Cache-Control: no-cache" de barniz que implica dos cosas:

  • Varnish no almacenará la respuesta en el caché (por lo que fallará una próxima búsqueda)
  • Sus clientes (navegadores y proxies intermedios) no almacenarán en caché las respuestas (y las solicitarán una y otra vez).

La solución es simple: eliminar los encabezados de control de caché después de obtener la respuesta del servidor (y antes de almacenarlos en el caché).

En el archivo de VCL hacer:

sub vcl_fetch { 
    remove beresp.http.Cache-Control; 
    set beresp.http.Cache-Control = "public"; 
} 

Usted puede optar por hacer esto solamente para ciertas URL (envolverlo en (if req.url ~ "") lógica) y hacer cosas de forma más avanzada.

+1

A partir de Varnish 4.0 'vcl_fetch' fue reemplazado por' vcl_backend_response' –

3

Varnish ignora Cache-Control: nocache según la documentación. Aquí está la evidencia que confirma que:

http://drupal.org/node/1418908

Para obtener ese resultado, se debe detectar la cabecera Cache-Control. nocache. desde su back-end, y luego invalidar la caché, establecer la respuesta de fondo para no cacheable, o emitir max-age: 0 en el otro encabezado (se me olvida el nombre en este momento).

+0

Este problema ha sido cerrado. Creo que el cartel se dio cuenta de que cometió un error. –

0

[ivy] tiene buenos consejos, y/pero se vuelve un poco complicado cuando intenta obedecer la intención de un servidor para el almacenamiento en caché del usuario final (navegador). He encontrado this resource para ser útil en la comprensión de una manera de configurar barniz de aferrarse a una memoria caché más largo que un navegador es instruido para ...

https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching

Cuestiones relacionadas