

# Almacenamiento en caché de contenido en función de encabezados de solicitud
<a name="header-caching"></a>

CloudFront le permite elegir si desea que CloudFront reenvíe los encabezados al origen y almacene en caché diferentes versiones de un objeto especificado en función de los valores de encabezado de las solicitudes de los lectores. Esto le permite ofrecer distintas versiones del contenido en función del dispositivo del usuario, la ubicación del espectador, su idioma y otros criterios.

**Topics**
+ [Encabezados y distribuciones: información general](#header-caching-web)
+ [Selección de los encabezados para basar el almacenamiento en caché](#header-caching-web-selecting)
+ [Configuración de CloudFront para que respete la configuración de CORS](#header-caching-web-cors)
+ [Configuración del almacenamiento en caché en función del tipo de dispositivo](#header-caching-web-device)
+ [Configuración del almacenamiento en caché en función del idioma del lector](#header-caching-web-language)
+ [Configuración del almacenamiento en caché en función de la ubicación del lector](#header-caching-web-location)
+ [Configuración del almacenamiento en caché en función del protocolo de la solicitud](#header-caching-web-protocol)
+ [Configuración del almacenamiento en caché para archivos comprimidos](#header-caching-web-compressed)
+ [Cómo afecta al rendimiento el almacenamiento en caché en función de los encabezados](#header-caching-web-performance)
+ [Cómo afectan al almacenamiento en caché las mayúsculas o minúsculas de los encabezados y sus valores](#header-caching-web-case)
+ [Encabezados que CloudFront devuelve al lector](#header-caching-web-response)

## Encabezados y distribuciones: información general
<a name="header-caching-web"></a>

De forma predeterminada, CloudFront no tiene en cuenta los encabezados al almacenar los objetos en la caché en ubicaciones periférica. Si el origen devuelve dos objetos que se diferencian solo por los valores de los encabezados de solicitud, CloudFront almacena solo una versión del objeto en la caché.

Puede configurar CloudFront para reenviar los encabezados al origen, lo que hace que CloudFront almacene en caché varias versiones de un objeto en función de los valores en uno o varios encabezados de solicitud. Para configurar CloudFront para almacenar en caché los objetos en función de los valores de encabezados específicos, se especifica la configuración del comportamiento de la caché para la distribución. Para obtener más información, consulte [Caché en función de encabezados de solicitud seleccionados](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesForwardHeaders).

Supongamos que las solicitudes de espectadores de `logo.jpg` contienen un encabezado personalizado `Product` con un valor de `Acme` o `Apex`. Al configurar CloudFront para que almacene en caché los objetos en función del valor del encabezado `Product`, CloudFront reenvía solicitudes de `logo.jpg` al origen e incluye el encabezado `Product` y los valores del encabezado. CloudFront almacena en caché `logo.jpg` una vez por cada solicitud cuyo valor del encabezado `Product` es `Acme` y otra vez por cada solicitud cuyo valor es `Apex`.

Puede configurar cada comportamiento de la caché en una distribución para realizar una de las siguientes acciones: 
+ Reenviar todos los encabezados al origen
**nota**  
**Para configuraciones de caché heredadas**: si configura CloudFront para reenviar todos los encabezados al origen, CloudFront no almacena en caché los objetos asociados con este comportamiento de la caché. En su lugar, envía todas las solicitudes al origen.
+ Reenvíe una lista de encabezados que especifique. CloudFront almacena en caché los objetos en función de los valores de todos los encabezados especificados. CloudFront también reenvía los encabezados que reenvía de forma predeterminada, pero almacena en caché los objetos solo según los encabezados que especifique. 
+ Reenviar solo los encabezados predeterminados. En esta configuración, CloudFront no almacena los objetos en caché en función de los valores de los encabezados de solicitudes.

Para consultar la cuota actual de la cantidad de encabezados que puede reenviar para cada comportamiento de la caché o para solicitar una ampliación de la cuota, consulte [Cuotas en encabezados](cloudfront-limits.md#limits-custom-headers).

Para obtener información acerca del uso de la consola de CloudFront para actualizar una distribución de modo que CloudFront reenvíe encabezados al origen, consulte [Actualizar una distribución](HowToUpdateDistribution.md). Para obtener información sobre el uso de la API de CloudFront para actualizar una distribución existente, consulte [Actualizar distribución](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) en la *Referencia de la API de Amazon CloudFront*.

## Selección de los encabezados para basar el almacenamiento en caché
<a name="header-caching-web-selecting"></a>

Los encabezados que puede reenviar al origen y en los que CloudFront basa el almacenamiento en caché dependen de si el origen es un bucket de Amazon S3 o un origen personalizado.
+ **Amazon S3**: puede configurar CloudFront para reenviar y almacenar en caché los objetos en función de un número de encabezados específicos (consulte la lista de excepciones que se muestra a continuación). Sin embargo, le recomendamos que evite reenviar encabezados con un origen de Amazon S3, excepto que necesite implementar el uso compartido de recursos entre orígenes (CORS) o desee personalizar contenido mediante Lambda@Edge en eventos producidos en el origen.
  + Para configurar CORS, debe reenviar encabezados que permitan a CloudFront distribuir contenido para sitios web que están habilitados para el uso compartido de recursos entre orígenes (CORS). Para obtener más información, consulte [Configuración de CloudFront para que respete la configuración de CORS](#header-caching-web-cors). 
  + Para personalizar el contenido mediante el uso de encabezados que reenvía al origen de Amazon S3, debe escribir y agregar funciones Lambda@Edge y asociarlas a la distribución de CloudFront para desencadenarlas mediante un evento producido en el origen. Para obtener más información acerca del uso de encabezados para personalizar contenido, consulte [Personalización de contenido por encabezados de tipo de dispositivo o país: ejemplos](lambda-examples.md#lambda-examples-redirecting-examples).

    Le recomendamos que evite reenviar encabezados que no esté utilizando para la personalización de contenido, ya que el reenvío de encabezados adicionales puede reducir la tasa de aciertos de caché. Es decir, CloudFront; no puede atender tantas solicitudes de cachés perimetrales, como una proporción de todas las solicitudes.
+ **Origen personalizado**: puede configurar CloudFront para almacenar en caché en función del valor de cualquier encabezado de solicitud, excepto los siguientes:
  + `Connection`
  + `Cookie`: si desea reenviar y almacenar en caché en función de las cookies, utilice otra configuración diferente en la distribución. Para obtener más información, consulte [Almacenamiento en caché de contenido en función de cookies](Cookies.md).
  + `Host (for Amazon S3 origins)`
  + `Proxy-Authorization`
  + `TE`
  + `Upgrade`

  Puede configurar CloudFront para almacenar en caché los objetos en función de los valores de los encabezados `Date` y `User-Agent`, pero no lo recomendamos. Estos encabezados tienen muchos valores posibles y el almacenamiento en caché en función de los valores podría hacer que CloudFront reenvíe una cantidad de solicitudes significativamente mayor al origen.

Para obtener una lista completa de encabezados de solicitudes HTTP y cómo los procesa CloudFront, consulte [Encabezados de solicitudes HTTP y comportamiento de CloudFront (personalizado y orígenes de Amazon S3)](RequestAndResponseBehaviorCustomOrigin.md#request-custom-headers-behavior).

## Configuración de CloudFront para que respete la configuración de CORS
<a name="header-caching-web-cors"></a>

Si ha habilitado el uso compartido de recursos entre orígenes (CORS) en un bucket de Amazon S3 o en un origen personalizado, debe elegir encabezados específicos para reenviar, para respetar la configuración CORS. Los encabezados que debe reenviar difieren en función del origen (Amazon S3 o personalizado) y si desea almacenar las respuestas de `OPTIONS` en caché.

**Amazon S3**
+ Si desea que las respuestas `OPTIONS` se almacenen en caché, haga lo siguiente:
  + Elija las opciones para la configuración de comportamiento de la caché predeterminado que habilitan el almacenamiento en caché para respuestas de `OPTIONS`. 
  + Configure CloudFront para reenviar los siguientes encabezados: `Origin`, `Access-Control-Request-Headers`, y `Access-Control-Request-Method`.
+ Si no desea que las respuestas de `OPTIONS` se almacenen en caché, configure CloudFront para reenviar el encabezado `Origin`, junto con los demás encabezados requeridos por el origen (por ejemplo `Access-Control-Request-Headers`, `Access-Control-Request-Method` u otros).

**Orígenes personalizados**: reenvíe el encabezado `Origin` junto con los demás encabezados exigidos por el origen.

Para configurar CloudFront con el fin de que almacene en caché en caché en función de CORS, debe configurar CloudFront para reenviar los encabezados mediante una política de caché. Para obtener más información, consulte [Control de la clave de caché con una política](controlling-the-cache-key.md).

Para obtener más información sobre CORS y Amazon S3, consulte [Uso compartido de recursos entre orígenes (CORS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Configuración del almacenamiento en caché en función del tipo de dispositivo
<a name="header-caching-web-device"></a>

Si desea que CloudFront almacene en caché diferentes versiones de los objetos en función del dispositivo que el usuario utilice para consultar el contenido, configure CloudFront para reenviar los encabezados aplicables al origen personalizado:
+ `CloudFront-Is-Desktop-Viewer`
+ `CloudFront-Is-Mobile-Viewer`
+ `CloudFront-Is-SmartTV-Viewer`
+ `CloudFront-Is-Tablet-Viewer`

En función del valor del encabezado `User-Agent`, CloudFront establece el valor de estos encabezados en `true` o `false` antes de reenviar la solicitud al origen. Si un dispositivo entra en más de una categoría, más de un valor podría ser `true`. Por ejemplo, en el caso de algunas tabletas, CloudFront podría establecer tanto `CloudFront-Is-Mobile-Viewer` como `CloudFront-Is-Tablet-Viewer` en `true`.

## Configuración del almacenamiento en caché en función del idioma del lector
<a name="header-caching-web-language"></a>

Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del idioma especificado en la solicitud, configure CloudFront para reenviar el encabezado `Accept-Language` al origen.

## Configuración del almacenamiento en caché en función de la ubicación del lector
<a name="header-caching-web-location"></a>

Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del país del que provino la solicitud, configure CloudFront para reenviar el encabezado `CloudFront-Viewer-Country` al origen. CloudFront convierte automáticamente la dirección IP de la que provino la solicitud en un código de país de dos letras. Para obtener una lista sencilla de códigos de país, organizable por código y por nombre de país, consulte la entrada de Wikipedia [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

## Configuración del almacenamiento en caché en función del protocolo de la solicitud
<a name="header-caching-web-protocol"></a>

Si desea que CloudFront almacene en caché distintas versiones de los objetos en función del protocolo de la solicitud (HTTP o HTTPS), configure CloudFront para reenviar el encabezado `CloudFront-Forwarded-Proto` al origen.

## Configuración del almacenamiento en caché para archivos comprimidos
<a name="header-caching-web-compressed"></a>

Si el origen admite compresión Brotli, puede almacenar en caché en función del encabezado `Accept-Encoding`. Configure el almacenamiento en caché en función de `Accept-Encoding` solo si el origen ofrece contenido en función del encabezado.

## Cómo afecta al rendimiento el almacenamiento en caché en función de los encabezados
<a name="header-caching-web-performance"></a>

Si configura CloudFront para almacenar en caché en función de uno o varios encabezados y los encabezados tienen más de un valor posible, CloudFront reenvía más solicitudes al servidor de origen para el mismo objeto. Esto afecta negativamente el desempeño y aumenta la carga en su servidor de origen. Si el servidor de origen devuelve el mismo objeto independientemente del valor de un encabezado determinado, le recomendamos que no configure CloudFront para almacenar en caché en función de ese encabezado. 

Si configura CloudFront para reenviar más de un encabezado, el orden de los encabezados de las solicitudes de los lectores no afecta al almacenamiento en caché siempre y cuando los valores sean los mismos. Por ejemplo, si una solicitud contiene los encabezados A:1,B:2 y otra solicitud contiene B:2,A:1, CloudFront almacena en caché solo una copia del objeto.

## Cómo afectan al almacenamiento en caché las mayúsculas o minúsculas de los encabezados y sus valores
<a name="header-caching-web-case"></a>

Cuando CloudFront almacena en caché en función de los valores del encabezado, pasa por alto el uso de mayúsculas y minúsculas en los nombres de encabezado, pero lo tiene en cuenta en el caso del valor de encabezado:
+ Si las solicitudes de lector incluyen `Product:Acme` y `product:Acme`, CloudFront almacena en caché un objeto solo una vez. La única diferencia entre ellos es el uso de mayúsculas y minúsculas en el nombre del encabezado, lo que no afecta el almacenamiento en caché.
+ Si las solicitudes de lector incluyen `Product:Acme` y `Product:acme`, CloudFront almacena en caché un objeto dos veces, porque el valor es `Acme` en algunas solicitudes y `acme` en otras.

## Encabezados que CloudFront devuelve al lector
<a name="header-caching-web-response"></a>

La configuración de CloudFront para reenviar y almacenar en caché los encabezados no afecta a los encabezados que CloudFront devuelve al lector. CloudFront devuelve todos los encabezados que obtiene del origen con algunas excepciones. Para obtener más información, consulte el tema correspondiente:
+ **Orígenes de Amazon S3**: consulte [Encabezados de respuesta HTTP que CloudFront elimina o actualiza](RequestAndResponseBehaviorS3Origin.md#response-s3-removed-headers).
+ **Orígenes personalizados**: consulte [Encabezados de respuesta HTTP que CloudFront elimina o reemplaza](RequestAndResponseBehaviorCustomOrigin.md#ResponseCustomRemovedHeaders).