Configurar cookies, encabezados y sondeo

En este tema se describen los procedimientos para configurar la forma en que la caché administra las cookies, los encabezados HTTP y el sondeo del servidor de origen, incluida la modificación del comportamiento predeterminado que hace que la caché difiera de los estándares documentados, la anulación de los encabezados HTTP que podrían provocar que el contenido almacenable en caché no se almacene en la caché, y configurar la caché para que siempre sondee el origen para el contenido actualizado en circunstancias especializadas.

Divergencia del comportamiento de la caché con respecto a los estándares

De forma predeterminada, la caché integrada cumple con los siguientes estándares:

  • RFC 2616, “Protocolo de transferencia de hipertexto HTTP/1.1”
  • Los comportamientos de almacenamiento en caché descritos en RFC 2617, “Autenticación HTTP: Autenticación básica y de acceso implícito”
  • El comportamiento de almacenamiento en caché descrito en RFC 2965, “HTTP State Management Mechanism”

Las directivas integradas y los atributos del grupo de contenido predeterminado garantizan la conformidad con la mayoría de estos estándares.

El comportamiento de caché integrado predeterminado difiere de las especificaciones de la siguiente manera:

  • Hay soporte limitado para el encabezado Vary. De forma predeterminada, cualquier respuesta que contenga un encabezado Vary se considera que no se puede almacenar en caché a menos que esté comprimido. Una respuesta comprimida contiene Content-Encoding: Gzip, Content-Encoding: Deflate o Content-Encoding: Pack200-gzip y se puede almacenar en caché incluso si contiene el encabezado Vary: Accept-Encoding.
  • La caché integrada ignora los valores de los encabezados Cache-Control: No-cache y Cache-Control: Private. Por ejemplo, una respuesta que contiene Cache-Control: No-cache=” Set-Cookie” se trata como si la respuesta contenía Cache-Control: No-cache. De forma predeterminada, la respuesta no se almacena en caché.
  • Una imagen (Content-Type = image/*) siempre se considera almacenable en caché incluso si una respuesta de imagen contiene encabezados Set-Cookie o Set-Cookie2, o si una solicitud de imagen contiene un encabezado Cookie. La caché integrada elimina los encabezados Set-Cookie y Set-Cookie2 de una respuesta antes de almacenarla en caché. Esto difiere de RFC 2965. Puede configurar el comportamiento compatible con RFC de la siguiente manera:
add cache policy rfc_compliant_images_policy -rule "http.res.header.set-cookie2.exists || http.res.header.set-cookie.exists" -action NOCACHE


bind cache global rfc_compliant_images_policy -priority 100 -type REQ_OVERRIDE
  • Los siguientes encabezados Cache-Control en una solicitud obligan a una caché compatible con RFC a volver a cargar una respuesta almacenada en caché desde el servidor de origen:

Cache-control: max-age=0

Cache-control: no-cache

Para protegerse contra ataques de denegación de servicio, este comportamiento no es el predeterminado. Para obtener más información, consulte la sección “Inserción de un encabezado de control de caché”.

  • De forma predeterminada, el módulo de almacenamiento en caché considera que una respuesta puede almacenarse en caché a menos que un encabezado de respuesta indique lo contrario. Para que este comportamiento sea compatible con RFC 2616, establezca -WeakPosRelexpiry y -WeakNegreSexpiry en 0 para todos los grupos de contenido.

Eliminar cookies de una respuesta

Las cookies suelen ser personalizadas para un usuario y, por lo general, no deben almacenarse en caché. El parámetro Remove Response Cookies elimina los encabezados Set-Cookie y Set-Cookie2 antes de almacenar en caché una respuesta. De forma predeterminada, la opción Eliminar cookies de respuesta para un grupo de contenido impide el almacenamiento en caché de las respuestas con encabezados Set-Cookie o Set-Cookie2.

Nota: Cuando las imágenes se almacenan en caché, el comportamiento integrado es eliminar los encabezados Set-Cookie y Set-Cookie2 antes del almacenamiento en caché, sin importar cómo esté configurado el grupo de contenido. Nota: Citrix recomienda que acepte las cookies de respuesta predeterminadas para cada grupo de contenido que almacene respuestas incrustadas, por ejemplo, imágenes.

Para configurar Quitar cookies de respuesta para un grupo de contenido mediante la interfaz de línea de comandos:

En el símbolo del sistema, escriba:

set cache contentgroup <name> -removeCookies YES

Para configurar Quitar cookies de respuesta para un grupo de contenido mediante la utilidad de configuración

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenido y seleccione el grupo de contenido.
  2. En la ficha Otros, en el grupo Configuración, selecciona la opción Eliminar cookies de respuesta.

Inserción de encabezados HTTP en tiempo de respuesta

La caché integrada puede insertar encabezados HTTP en las respuestas resultantes de los hits de caché. El dispositivo Citrix® Citrix ADC® no altera los encabezados de las respuestas resultantes de errores en la memoria caché.

En la tabla siguiente se describen los encabezados que se pueden insertar en una respuesta.

Encabezado Especificación
Edad Proporciona la antigüedad de la respuesta en segundos, calculada a partir del momento en que se generó la respuesta en el servidor de origen. De forma predeterminada, la caché inserta un encabezado Age para cada respuesta que se sirve desde la caché.
vía Enumera protocolos y destinatarios entre los puntos inicial y final de una solicitud o respuesta. El dispositivo Citrix ADC inserta un encabezado Via en cada respuesta que sirve desde la caché. El valor predeterminado del encabezado insertado es “NS-Cache-9.2:Último octeto de la dirección IP de Citrix ADC”. Para obtener más información, consulte “Configuración de atributos globales para almacenamiento en caché”.
ETag La caché admite la validación de respuestas mediante encabezados Last-Modified y ETag para determinar si una respuesta está obsoleta. La caché inserta un ETag en una respuesta solo si almacena en caché la respuesta y el servidor de origen no ha insertado su propio encabezado ETag. El valor de ETag es un número único arbitrario. El valor de ETag para una respuesta cambia si se actualiza desde el servidor de origen, pero permanece igual si el servidor envía una respuesta 304 (objeto no actualizado). Los servidores de origen normalmente no generan validadores para contenido dinámico porque el contenido dinámico se considera que no se puede almacenar en caché. Puede anular este comportamiento. Con la inserción del encabezado eTag, se permite que la caché no sirva respuestas completas. En su lugar, se requiere que el agente de usuario almacene en caché la respuesta dinámica enviada por la caché integrada la primera vez. Para forzar a un agente de usuario a almacenar en caché una respuesta, configure la caché integrada para insertar un encabezado ETag y reemplazar el encabezado Cache-Control proporcionado por el origen.
Control de caché Normalmente, el dispositivo Citrix ADC no modifica los encabezados de capacidad de caché en las respuestas que se sirven desde el servidor de origen. Si el servidor de origen envía una respuesta etiquetada como no almacenable en caché, el cliente tratará la respuesta como no almacenable en caché incluso si el dispositivo Citrix ADC almacena en caché la respuesta. Para almacenar en caché las respuestas dinámicas en un agente de usuario, puede reemplazar encabezados Cache-Control desde el servidor de origen. Esto solo se aplica a los agentes de usuario y otras memorias caché intermedias. No afectan a la caché integrada.
Encabezado Especificación
Edad Proporciona la antigüedad de la respuesta en segundos, calculada a partir del momento en que se generó la respuesta en el servidor de origen. De forma predeterminada, la caché inserta un encabezado Age para cada respuesta que se sirve desde la caché.
vía Enumera protocolos y destinatarios entre los puntos inicial y final de una solicitud o respuesta. El dispositivo Citrix ADC inserta un encabezado Via en cada respuesta que sirve desde la caché. El valor predeterminado del encabezado insertado es “NS-Cache-9.2:Último octeto de la dirección IP de Citrix ADC”. Para obtener más información, consulte “Configuración de atributos globales para almacenamiento en caché”.
ETag La caché admite la validación de respuestas mediante encabezados Last-Modified y ETag para determinar si una respuesta está obsoleta. La caché inserta un ETag en una respuesta solo si almacena en caché la respuesta y el servidor de origen no ha insertado su propio encabezado ETag. El valor de ETag es un número único arbitrario. El valor de ETag para una respuesta cambia si se actualiza desde el servidor de origen, pero permanece igual si el servidor envía una respuesta 304 (objeto no actualizado). Los servidores de origen normalmente no generan validadores para contenido dinámico porque el contenido dinámico se considera que no se puede almacenar en caché. Puede anular este comportamiento. Con la inserción del encabezado eTag, se permite que la caché no sirva respuestas completas. En su lugar, se requiere que el agente de usuario almacene en caché la respuesta dinámica enviada por la caché integrada la primera vez. Para forzar a un agente de usuario a almacenar en caché una respuesta, configure la caché integrada para insertar un encabezado ETag y reemplazar el encabezado Cache-Control proporcionado por el origen.
Control de caché Normalmente, el dispositivo Citrix ADC no modifica los encabezados de capacidad de caché en las respuestas que se sirven desde el servidor de origen. Si el servidor de origen envía una respuesta etiquetada como no almacenable en caché, el cliente tratará la respuesta como no almacenable en caché incluso si el dispositivo Citrix ADC almacena en caché la respuesta. Para almacenar en caché las respuestas dinámicas en un agente de usuario, puede reemplazar encabezados Cache-Control desde el servidor de origen. Esto solo se aplica a los agentes de usuario y otras memorias caché intermedias. No afectan a la caché integrada.

Insertar un encabezado de edad, vía o ETag

Los siguientes procedimientos describen cómo insertar encabezados Age, Via y ETag.

Para insertar un encabezado Age, Via o Etag mediante la interfaz de línea de comandos:

En el símbolo del sistema, escriba:

set cache contentgroup <name> -insertVia YES -insertAge YES -insertETag YES

Para insertar un encabezado Age, Via o Etag mediante la interfaz gráfica de usuario

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenido y seleccione el grupo de contenido.
  2. En la ficha Otros, en el grupo Inserciones de encabezado HTTP, seleccione las opciones Vía, Edad o ETag, según corresponda.
  3. Los valores de los otros tipos de encabezado se calculan automáticamente. Tenga en cuenta que configura el valor Via en la configuración principal de la caché.

Insertar un encabezado de control de caché

Cuando la caché integrada reemplaza un encabezado Cache-Control que insertó el servidor de origen, también reemplaza el encabezado Expira. El nuevo encabezado Expira contiene un tiempo de caducidad en el pasado. Esto garantiza que los clientes HTTP/1.0 y cachés (que no entienden el encabezado Cache-Control) no almacenen en caché el contenido.

Para insertar un encabezado de control de caché mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba:

set cache contentgroup <name> -cacheControl <value>

Para insertar un encabezado de control de caché mediante la utilidad de configuración

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenido y
    1. Haga clic en la ficha Método de caducidad, borre la configuración de caducidad heurística y predeterminada y establezca el valor relevante en el cuadro de texto Expirar contenido después.
    2. Haga clic en la ficha Otros y escriba el encabezado que desea insertar en el cuadro de texto Control de caché. Alternativamente, haga clic en Configurar para establecer las directivas Cache-Control en las respuestas almacenadas en caché.

Ignorando los encabezados de control de caché y pragma en las solicitudes

De forma predeterminada, el módulo de almacenamiento en caché procesa los encabezados Cache-Control y Pragma. Los siguientes tokens en los encabezados Cache-Control se procesan como se describe en RFC 2616.

  • máx-edad
  • max-rancia
  • only-if-cache
  • sin caché

Un encabezado Pragma: No-cache en una solicitud se trata de la misma manera que un encabezado Cache-Control: No-cache.

Si configura el módulo de almacenamiento en caché para que ignore los encabezados Cache-Control y Pragma, una solicitud que contenga un encabezado Cache-Control: No-Cache hace que el dispositivo Citrix ADC recupere la respuesta del servidor de origen, pero la respuesta almacenada en caché no se actualiza. Si el módulo de almacenamiento en caché procesa encabezados Cache-Control y Pragma, la respuesta almacenada en caché se actualiza.

En la siguiente tabla se resumen las implicaciones de varias configuraciones para estos encabezados y la configuración Ignorar solicitud de recarga del explorador.

Configuración de Ignorar Cache-Control y Pragma encabezados Configuración de Omitir solicitud de recarga del explorador Resultado
Sí o No Ignore los encabezados Cache-Control y Pragma del cliente, incluida la directiva Cache-Control: No-cache.
No El encabezado Cache-Control: No-cache produce un fallo de caché, pero una respuesta que ya está en la caché no se actualiza.
No No Una solicitud que contiene un encabezado Cache-Control: No-cache causa una pérdida de caché y la respuesta almacenada se actualiza.

Para ignorar los encabezados Cache-Control y Pragma en una solicitud mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba:

set cache contentgroup <name> -ignoreReqCachingHdrs YES

Para ignorar las solicitudes de recarga del explorador mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba:

set cache contentgroup <name> -ignoreReloadReq NO

Nota: De forma predeterminada, el parámetro -Ignorereloadreq se establece en YES.

Para ignorar los encabezados Cache-Control y Pragma en una solicitud mediante el uso de la interfaz gráfica de usuario

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenido y seleccione el grupo de contenido.
  2. En la ficha Otros, en el grupo Configuración, seleccione la opción Ignorar control de caché y cabeceras de Pragma en solicitudes.

Ejemplo de una directiva para ignorar encabezados Cache-Control

En el ejemplo siguiente, se configura una directiva de anulación de tiempo de solicitud para almacenar en caché las respuestas que contienen Content-type: Image/* independientemente del encabezado Cache-Control en la respuesta.

Para configurar una directiva de anulación de tiempo de solicitud para almacenar en caché todas las respuestas con image/*

Vacíe la caché con la opción Invalidar todo.

Para obtener más información, consulte “Flushing Responses in a Content Group.”

Configure una nueva directiva de caché y dirija la directiva a un grupo de contenido concreto. Para obtener más información, consulte “Configuración de una directiva en la caché integrada.”

Asegúrese de que el grupo de contenido que utiliza la directiva está configurado para ignorar los encabezados Cache-Control, como se describe en “Ignorando Cache-Control y Pragma Headers in Requests.”

Enlazar la directiva al banco de directivas de anulación de tiempo de solicitud.

Para obtener más información, consulte el tema Vinculación global de una directiva de almacenamiento en caché integrada.

Sondear el servidor de origen cada vez que se recibe una solicitud

Puede configurar el dispositivo Citrix ADC para que consulte siempre el servidor de origen antes de ofrecer una respuesta almacenada. Esto se conoce como encuesta cada vez (PET). Cuando el dispositivo Citrix ADC consulta el servidor de origen y la respuesta PET no ha caducado, una respuesta completa del servidor de origen no sobrescribe el contenido almacenado en caché. Esta propiedad es útil cuando se sirve contenido específico del cliente.

Después de que caduque una respuesta PET, el dispositivo Citrix ADC la actualiza cuando llega la primera respuesta completa del servidor de origen.

La función de encuesta cada vez (PET) funciona de la siguiente manera:

Para una respuesta almacenada en caché que tiene validadores en forma de un eTag o un encabezado Last-Modified, si la respuesta caduca, se marca automáticamente PET y se almacena en caché.

Puede configurar PET para un grupo de contenido.

Si configura un grupo de contenido como PET, todas las respuestas del grupo de contenido se marcan como PET. El grupo de contenido PET puede almacenar respuestas que no tienen validadores. Las respuestas que se marcan automáticamente como PET siempre caducarán. Las respuestas que pertenecen a un grupo de contenido PET pueden caducar después de un retraso, en función de cómo configure el grupo de contenido.

Dos tipos de solicitudes se ven afectadas por el sondeo:

  • Solicitudes condicionales: Un cliente emite una solicitud condicional para asegurarse de que la respuesta que tiene es la copia más reciente. Una solicitud de agente de usuario para una respuesta PET almacenada en caché siempre se convierte en una solicitud condicional y se envía al servidor de origen. Una solicitud condicional tiene validadores en encabezados If-Modified-Since o If-None-Match. El encabezado If-Modified-Since contiene la hora del encabezado Last-Modified. Un encabezado If-None-Match contiene el valor del encabezado eTag de la respuesta. Si la copia del cliente de la respuesta es nueva, el servidor de origen responde con 304 Not Modified. Si la copia está obsoleta, una respuesta condicional genera un 200 OK que contiene toda la respuesta.
  • Solicitudes no codificadas: Una solicitud no condicional solo puede generar 200 OK que contenga toda la respuesta.
Respuesta del servidor de origen Acción
Enviar la respuesta completa El servidor de origen envía la respuesta tal cual al cliente. Si la respuesta en caché ha caducado, se actualiza.
304 No modificado Los siguientes valores de encabezado en la respuesta 304 se fusionan con la respuesta en caché y la respuesta en caché se sirve al cliente: Date, Expira, Age, Cache-Control header Max-Age y S-Maxage tokens
401 No autorizado; 400 Solicitud incorrecta; 405 Método no permitido; 406 No aceptable; 407 Autenticación Proxy requerida La respuesta del origen se envía tal cual al cliente. La respuesta almacenada en caché no se cambia.
Cualquier otra respuesta de error, por ejemplo, 404 Not Found La respuesta del origen se envía tal cual al cliente. Se elimina la respuesta almacenada en caché.

Nota El parámetro Encuesta cada vez trata las respuestas afectadas como no almacenables.

Para configurar el sondeo cada vez mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba:

add cache contentgroup <contentGroupName> -pollEveryTime YES

Para configurar la encuesta cada vez mediante la interfaz gráfica de usuario

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenido y seleccione el grupo de contenido.
  2. En la ficha Otros, en el grupo Configuración, seleccione Encuesta cada vez (validar contenido almacenado en caché con origen para cada solicitud) opción.

Contenido específico del PET y del cliente

La función PET puede garantizar que el contenido se personalice para un cliente. Por ejemplo, un sitio web que sirve contenido en varios idiomas examina el encabezado de solicitud Accept-Language para seleccionar el idioma del contenido que está publicando. Para un sitio web en varios idiomas donde el inglés es el idioma predominante, todo el contenido en inglés se puede almacenar en caché en un grupo de contenido PET. Esto garantiza que cada solicitud vaya al servidor de origen para determinar el idioma de la respuesta. Si la respuesta es en inglés y el contenido no ha cambiado, el servidor de origen puede servir un 304 Not Modified en la caché.

En el ejemplo siguiente se muestran comandos para almacenar en caché las respuestas en inglés en un grupo de contenido PET, configurar una expresión con nombre que identifique las respuestas en inglés en la caché y configurar una directiva que utilice este grupo de contenido y expresión con nombre. Negrita se usa para enfatizar:

add cache contentgroup EnglishLanguageGroup -pollEveryTime YES
add expression containsENExpression –rule "http.res.header(\\"Content-Language\\").contains(\\"en\\")"
add cache policy englishPolicy -rule containsENExpression -action CACHE -storeInGroup englishLanguageGroup
bind cache policy englishPolicy -priority 100 -precedeDefRules NO

PET y autenticación, autorización y auditoría

Outlook Web Access (OWA) es un buen ejemplo de contenido generado dinámicamente que se beneficia de PET. Todas las respuestas de correo (objetos *.EML) tienen un validador de ETag que permite almacenarlas como respuestas PET.

Cada solicitud de una respuesta de correo viaja al servidor de origen, incluso si la respuesta está almacenada en caché. El servidor de origen determina si el solicitante está autenticado y autorizado. También verifica que la respuesta existe en el servidor de origen. Si todos los resultados son positivos, el servidor de origen envía una respuesta 304 sin modificación.