ADC

Configurar cookies, encabezados y sondeos

En este tema se explica cómo configurar la memoria caché para administrar las cookies, los encabezados HTTP y el sondeo del servidor de origen. Esto incluye modificar el comportamiento predeterminado que hace que la memoria caché difiera de los estándares documentados, anular los encabezados HTTP que podrían provocar que el contenido almacenable en caché no se almacene en la memoria caché y configurar la memoria caché para que siempre sondee el origen del contenido actualizado.

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

De forma predeterminada, la memoria caché integrada se adhiere a los siguientes estándares RFC:

  • RFC 2616, “HTTP HTTP/1.1”
  • Los comportamientos de almacenamiento en caché descritos en RFC 2617, “Autenticación HTTP: autenticación de acceso básica y implícita”
  • El comportamiento de almacenamiento en caché descrito en RFC 2965, “Mecanismo de administración del estado HTTP”

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

El comportamiento predeterminado de la memoria caché integrada difiere de la especificación de la siguiente manera:

  • La funcionalidad es limitada para el encabezado Vary. De forma predeterminada, cualquier respuesta que contenga un encabezado Vary no se puede almacenar en caché a menos que se comprima. Una respuesta comprimida contiene codificación de contenido: gzip, codificación de contenido: desinflar o codificación de contenido: pack200-gzip y se puede almacenar en caché incluso si contiene el encabezado Vary: Accept-coding.
  • La caché integrada ignora los valores del control de caché de encabezados: sin caché y control de caché: privado. Por ejemplo, una respuesta que contiene control de caché: no-cache=”Set-cookie” se trata como si la respuesta contenía Cache-Control: sin caché. De forma predeterminada, la respuesta no se almacena en caché.
  • Una imagen (tipo de contenido = 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 de cookie. La memoria caché integrada elimina los encabezados set-cookie y set-cookie2 de una respuesta antes de almacenarla en caché. Esto difiere del 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
<!--NeedCopy-->
  • Los siguientes encabezados de control de caché en una solicitud obligan a una memoria caché compatible con RFC a recargar una respuesta almacenada en caché desde el servidor de origen:

Cache-control: max-age=0

Cache-control: no-cache

Para protegerse de los ataques de denegación de servicio, este comportamiento no es el predeterminado.

  • Por defecto, el módulo de almacenamiento en caché considera que una respuesta se puede almacenar en caché a menos que una cabecera 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 las cookies de una respuesta

Las cookies a menudo se personalizan para un usuario y, por lo general, no deben almacenarse en caché. El parámetro Remove Response Cookies elimina los encabezados Set-Cookie and Set-Cookie2 antes de almacenar en caché una respuesta. De forma predeterminada, la opción Remove Response Cookies de un grupo de contenido evita 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 Set-Cookie2 los encabezados Set-Cookie y antes del almacenamiento en caché, sin importar cómo esté configurado el grupo de contenido.

Citrix recomienda que acepte el valor predeterminado Remove Response Cookies para cada grupo de contenido que almacene respuestas incrustadas, por ejemplo, imágenes.

Para configurar Remove Response Cookies un grupo de contenido mediante la interfaz de línea de comandos:

En la línea de comandos, escriba:

set cache contentgroup <name> -removeCookies YES

Configurar Eliminar cookies de respuesta para un grupo de contenido mediante la GUI de NetScaler

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

Inserción de encabezados HTTP en tiempo de respuesta

La memoria caché integrada puede insertar encabezados HTTP en las respuestas que resultan de las solicitudes de caché. El dispositivo NetScaler no modifica los encabezados en las respuestas que resultan de errores de caché.

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

Header 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 los protocolos y los destinatarios entre los puntos de inicio y finalización de una solicitud o una respuesta. El dispositivo NetScaler inserta un encabezado Via en cada respuesta que sirve desde la memoria caché. El valor predeterminado del encabezado insertado es NS-CACHE-10.0: último octeto de la dirección IP de NetScaler”. Para obtener más información, consulte “Configuración de atributos globales para el almacenamiento en caché.”
Tag La memoria caché admite la validación de respuestas mediante Last-Modified y encabezados Tag para determinar si una respuesta está obsoleta. La memoria caché inserta una Tag en una respuesta solo si almacena en caché la respuesta y el servidor de origen no ha insertado su propia cabecera Tag. El valor Tag es un número único y arbitrario. El valor Tag de 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 el 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 de encabezados Tag, se permite que la memoria caché no sirva respuestas completas. En cambio, se requiere que el agente de usuario almacene en caché la respuesta dinámica enviada por la memoria caché integrada la primera vez. Para forzar a un agente de usuario a almacenar en caché una respuesta, configure la memoria caché integrada para insertar un encabezado Tag y reemplazar el encabezado Cache-Control proporcionado por el origen.
Control de caché El dispositivo NetScaler normalmente 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 trata la respuesta como no almacenable en caché, incluso si el dispositivo NetScaler almacena en caché la respuesta. Para almacenar en caché las respuestas dinámicas en un agente de usuario, puede reemplazar los encabezados de Cache-Control del servidor de origen. Esto se aplica solo a los agentes de usuario y a otras memorias caché intervinientes. No afectan a la memoria caché integrada.
Header 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 los protocolos y los destinatarios entre los puntos de inicio y finalización de una solicitud o una respuesta. El dispositivo NetScaler inserta un encabezado Via en cada respuesta que sirve desde la memoria caché. El valor predeterminado del encabezado insertado es “NS-CACHE-9.2: último octeto de la dirección IP de NetScaler”. Para obtener más información, consulte “Configuración de atributos globales para el almacenamiento en caché.”
Tag La memoria caché admite la validación de respuestas mediante las cabeceras Last-Modified y Tag para determinar si una respuesta está obsoleta. La memoria caché inserta una Tag en una respuesta solo si almacena en caché la respuesta y el servidor de origen no ha insertado su propia cabecera Tag. El valor Tag es un número único y arbitrario. El valor Tag de 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 el 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 de encabezados Tag, se permite que la memoria caché no sirva respuestas completas. En cambio, se requiere que el agente de usuario almacene en caché la respuesta dinámica enviada por la memoria caché integrada la primera vez. Para forzar a un agente de usuario a almacenar en caché una respuesta, configure la memoria caché integrada para insertar un encabezado Tag y reemplazar el encabezado Cache-Control proporcionado por el origen.
Control de caché El dispositivo NetScaler normalmente 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 trata la respuesta como no almacenable en caché, incluso si el dispositivo NetScaler almacena en caché la respuesta. Para almacenar en caché las respuestas dinámicas en un agente de usuario, puede reemplazar los encabezados de Cache-Control del servidor de origen. Esto se aplica solo a los agentes de usuario y a otras memorias caché intervinientes. No afectan a la memoria caché integrada.

Insertar un encabezado de edad, vía o etiqueta

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

Inserte un encabezado Age, Via o Etag mediante la interfaz de comandos de NetScaler:

En la línea de comandos, escriba:

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

Configure el encabezado Age, Via o Etag mediante la GUI de NetScaler

  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, Edado ETag, según corresponda.
  3. Los valores de los demás tipos de encabezado se calculan automáticamente. Configure el valor Via en la configuración principal de la memoria caché.

Insertar un encabezado de control de caché

Cuando la memoria caché integrada reemplaza un encabezado de Cache-Control que el servidor de origen insertó, también reemplaza el encabezado Expires. El nuevo encabezado Expires contiene una fecha de caducidad en el pasado. Esto garantiza que los clientes y las memorias caché HTTP/1.0 (que no entienden el encabezado Cache-Control) no almacenan en caché el contenido.

Inserte un encabezado cache-control mediante la interfaz de comandos de NetScaler

En la línea de comandos, escriba:

set cache contentgroup <name> -cacheControl <value>

Inserte un encabezado de control de caché mediante la GUI de NetScaler

  1. Vaya a Optimización > Almacenamiento en caché integrado > Grupos de contenidoy
    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 Caducar contenido después.
    2. Haga clic en la ficha Otros y escriba el encabezado que quiere insertar en el cuadro de texto Cache-Control. También puede hacer clic en Configurar para establecer las directivas de Cache-Control en las respuestas almacenadas en caché.

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

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

  • edad máx
  • max-rancio
  • solo en caché
  • sin caché

Un encabezado Pragma: sin caché en una solicitud se trata de la misma manera que un encabezado Cache-Control: sin caché.

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 NetScaler 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 los 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 para ignorar encabezados Cache-Control y Pragma Configuración para ignorar solicitud de recarga del explorador Resultado
Sí o no Ignore los encabezados Cache-Control y Pragma del cliente, incluida la directiva Cache-Control: sin caché.
No El encabezado Cache-Control: sin caché produce un error de caché, pero una respuesta que ya está en la memoria caché no se actualiza.
No No Una solicitud que contiene un encabezado Cache-Control: sin caché provoca una falta 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 la línea de comandos, escriba:

set cache contentgroup <name> -ignoreReqCachingHdrs YES

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

En la línea de comandos, escriba:

set cache contentgroup <name> -ignoreReloadReq NO

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

Ignorar los encabezados de Cache-Control y Pragma en una solicitud mediante la GUI

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

Ejemplo de una directiva para ignorar los encabezados de Cache-Control:

En el siguiente ejemplo, 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 imagen/*

Vaciar la memoria caché con la opción Invalidar todo.

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

Asegúrese de que el grupo de contenido que utiliza la directiva esté configurado para ignorar los encabezados de Cache-Control, como se describe en “Ignorar encabezados de Cache-Control y Pragma en Solicitudes.”

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.

Servidor de origen de sondeo cada vez que se recibe una solicitud

Puede configurar el dispositivo NetScaler 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 NetScaler consulta el servidor de origen y la respuesta PET no ha caducado, una respuesta completa del servidor de origen no sobrescribe el contenido en caché. Esta propiedad es útil cuando se publica contenido específico del cliente.

Cuando caduca una respuesta PET, el dispositivo NetScaler la actualiza cuando llega la primera respuesta completa del servidor de origen.

La función Poll Every Time (PET) funciona de la siguiente manera:

Para una respuesta en caché que tiene validadores en forma de etiqueta o encabezado de última modificación, si la respuesta caduca, se marca automáticamente como 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 caducan. Las respuestas que pertenecen a un grupo de contenido PET pueden caducar tras un retraso, en función de cómo configure el grupo de contenido.

Los sondeos afectan a dos tipos de solicitudes:

  • Solicitudes condicionales: un cliente emite una solicitud condicional para garantizar 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 los encabezados If-Modified-Since o If-None-Match. El encabezado If-Modified-Since contiene el tiempo desde el encabezado Last-Modified. Un encabezado If-None-Match contiene el valor del encabezado Tag de la respuesta. Si la copia de la respuesta del cliente es nueva, el servidor de origen responde con 304 No modificado. Si la copia está obsoleta, una respuesta condicional genera 200 OK que contiene toda la respuesta.
  • Solicitudes no condicionales: una solicitud no condicional solo puede generar 200 OK que contenga la respuesta completa.
Respuesta del servidor de origen Acción
Envía 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 almacenada en caché y la respuesta en caché se sirve al cliente: Tokens Date, Expires, Age, Cache-Control header Max-Age y S-Maxage
401 no autorizado; 400 solicitudes incorrectas; 405 método no permitido; 406 no aceptable; se requiere autenticación de proxy 407 La respuesta del origen se entrega tal cual al cliente. La respuesta almacenada en caché no cambia.
Cualquier otra respuesta de error, por ejemplo, 404 Not Found La respuesta del origen se entrega tal cual al cliente. La respuesta almacenada en caché se elimina.

Nota: El parámetro Poll Every Time trata las respuestas afectadas como no almacenables.

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

En la línea de comandos, escriba:

add cache contentgroup <contentGroupName> -pollEveryTime YES

Encuesta mediante la interfaz gráfica de usuario

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

PET y contenido específico del cliente

La función PET puede garantizar que el contenido se personalice para un cliente. Por ejemplo, un sitio web que ofrece contenido en varios idiomas examina el encabezado de solicitud Accept-Language para seleccionar el idioma del contenido que publica. Para un sitio web multilingüe en el que 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 entregar 304 No modificado a la memoria caché.

El siguiente ejemplo muestra 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 memoria caché y configurar una directiva que utilice este grupo de contenido y la expresión con nombre. Bold 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
<!--NeedCopy-->

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 del PET. Todas las respuestas de correo (objetos *.EML) tienen un validador ETag que permite que se almacenen como respuestas PET.

Cada solicitud de respuesta de correo se dirige al servidor de origen, incluso si la respuesta se almacena en caché. El servidor de origen determina si el solicitante está autenticado y autorizado. También verifica que la respuesta exista en el servidor de origen. Si todos los resultados son positivos, el servidor de origen envía una respuesta 304 No modificada.