View a markdown version of this page

CloudFront para aplicaciones de comercio electrónico y mercado - Amazon CloudFront

CloudFront para aplicaciones de comercio electrónico y mercado

Una aplicación de comercio electrónico o mercado ofrece tres tipos de contenido distintos a través de una única distribución de CloudFront: recursos estáticos (imágenes de productos, CSS, JavaScript), páginas dinámicas (listados de productos, resultados de búsqueda) y respuestas de API (carrito, inventario, precios). Cada tipo de contenido requiere un comportamiento de caché, TTL y una configuración de origen diferentes para equilibrar la actualización con el rendimiento.

Para conocer los controles de seguridad que se aplican a las distribuciones de mercado y comercio electrónico, consulte Lista de verificación de seguridad para distribuciones de mercado.

Información general de la arquitectura

Una distribución de CloudFront de mercado utiliza varios comportamientos de caché para enrutar las solicitudes al origen correcto en función de los patrones de rutas de URL. Los recursos estáticos se envían desde Amazon Simple Storage Service (Amazon S3), mientras que el contenido dinámico y las solicitudes de la API se reenvían a un Elastic Load Balancing (Equilibrador de carga de aplicación) situado delante de los servidores de aplicaciones. Un clúster de ElastiCache (Valkey) proporciona una caché por aplicación entre ALB y la base de datos para los datos de productos a los que se accede con frecuencia.

Componentes de la arquitectura de distribución
Componente Contenido servido Finalidad

Distribución de CloudFront

Todo el contenido (dominio único)

Almacenamiento en caché periférico global, terminación de TLS, enrutamiento de solicitudes mediante comportamientos de caché

Origen de Amazon S3 (recursos estáticos)

Imágenes de productos, CSS, JS, fuentes

Almacenamiento de objetos duradero con control de acceso de origen (OAC). Contenido inmutable con TTL largos.

Origen de ALB (contenido dinámico)

Páginas de productos, búsqueda, puntos de conexión de API

Enruta a los servidores de aplicaciones. TTL cortos o sin almacenamiento en caché para contenido personalizado.

Clúster de ElastiCache (Valkey)

Catálogo de productos, recuentos de inventario y datos de sesión

Caché por aplicación entre ALB y la base de datos. Lecturas de submilisegundos para datos a los que se accede con frecuencia.

Comportamientos de la caché para el comercio electrónico

Los comportamientos de la caché determinan la forma en que CloudFront gestiona las solicitudes en función de los patrones de rutas de URL. En el caso de un mercado, configure comportamientos independientes para cada tipo de contenido con las políticas de caché y los TTL adecuados.

Comportamientos de caché recomendados
Patrón de ruta Origen TTL Política de caché Justificación

/static/*

Amazon S3

365 días

CachingOptimized

Los nombres de archivo versionados (por ejemplo, app.a1b2c3.js) permiten un TTL máximo. La invalidación de la caché nunca es necesaria: implemente nuevas versiones con nuevos nombres de archivo.

/images/*

Amazon S3

30 días

CachingOptimized

Las imágenes de los productos cambian con poca frecuencia. Utilice la invalidación de etiquetas de caché cuando un vendedor actualice una imagen. El TTL es inferior al de los activos estáticos, ya que las URL de las imágenes pueden reutilizarse.

/api/products/*

ALB

60 segundos

Personalizado (incluya cadenas de consulta)

Las API de búsqueda y listado de productos cambian con frecuencia, pero toleran breves periodos de obsolescencia. Incluya los parámetros de la cadena de consulta en la clave de caché para la paginación y los filtros.

/api/cart/*

ALB

0 (sin caché)

CachingDisabled

Las operaciones del carrito son específicas del usuario y siempre deben llegar al origen. Desactive el almacenamiento en caché por completo.

/api/inventory/*

ALB

5 segundos

Personalizado (incluya cadenas de consulta)

Los recuentos de inventario cambian rápidamente durante los eventos de ventas. Un TTL muy corto evita la sobreventa y reduce la carga en el origen.

Default (*)

ALB

0 (sin caché)

CachingDisabled

El comportamiento predeterminado reenvía las solicitudes no almacenadas en caché a la aplicación para su renderización en el servidor. Las páginas que incluyen contenido personalizado (recomendaciones, nombre de usuario) no deben almacenarse en caché en la periferia.

nota

Ordene los comportamientos de la caché del más específico al menos específico. CloudFront evalúa los patrones de ruta en el orden indicado y utiliza la primera coincidencia. Coloque /api/cart/* antes de /api/* para garantizar que las solicitudes de carrito no se almacenen en caché.

Para obtener más información acerca de comportamientos de la caché, consulte Configuración del comportamiento de la caché.

Estrategia de TTL para el contenido del mercado

La configuración de TTL determina durante cuánto tiempo CloudFront sirve el contenido en caché antes de comprobar si hay actualizaciones en el origen. Las aplicaciones de comercio electrónico requieren diferentes estrategias de TTL según la forma en que la actualidad del contenido afecte a la experiencia del cliente.

Activos inmutables (CSS, JS, fuentes)

Establezca el TTL máximo (365 días). Use nombres de archivo con hash de contenido para que cada implementación cree nuevas URL. Nunca las invalide: las versiones antiguas caducan de forma natural a medida que los usuarios cargan los nuevos nombres de archivo. Establezca Cache-Control: public, max-age=31536000, immutable en el origen.

imágenes de productos

Establezca el TTL en 30 días con invalidación de etiquetas de caché al actualizar. Cuando un vendedor cargue una imagen nueva, invalídela con la etiqueta de caché del producto y no con la ruta. Esto afecta solo a los objetos afectados sin invalidación amplia mediante caracteres comodín. Establezca Cache-Control: public, max-age=2592000 en el origen.

API de catálogo de productos

Establezca el TTL en 60 segundos. Los listados, las descripciones y los precios de los productos toleran breves periodos de desactualización. Esto reduce la carga de origen durante los picos de tráfico (ventas flash, lanzamientos de productos) y, al mismo tiempo, mantiene los datos razonablemente actualizados. Se configura Cache-Control: public, max-age=60, stale-while-revalidate=30 para mostrar contenido obsoleto mientras CloudFront obtiene una nueva respuesta en segundo plano.

API de inventario y precios

Establezca el TTL en 5 segundos. Estos valores cambian con frecuencia y afectan a las decisiones de compra. El almacenamiento en caché de muy corta duración sigue reduciendo la carga de origen en varios órdenes de magnitud durante los picos de tráfico: miles de usuarios simultáneos ven la misma respuesta en caché de 5 segundos en lugar de que cada uno acceda al origen.

Contenido específico para cada usuario (carrito, recomendaciones)

Desactive el almacenamiento en caché (TTL = 0). El contenido que varía según el usuario debe llegar siempre al origen. Si almacena en caché contenido específico de un usuario por error, CloudFront podría entregar los datos de un usuario a otro usuario. Utilice la política administrada de CachingDisabled para estos comportamientos.

Configuración de origen

Origen de Amazon S3 para activos estáticos

Uso de un bucket de Amazon S3 como origen para imágenes de productos y activos estáticos. Configure el control de acceso de origen (OAC) para restringir el acceso directo al bucket; todas las solicitudes deben fluir a través de CloudFront.

Configuración del origen de Amazon S3
Opción Valor Justificación

Dominio de origen

marketplace-assets.s3.amazonaws.com

Utilice el punto de conexión de la API de REST de Amazon S3 (no el punto de conexión del sitio web) para admitir el OAC.

Acceso de origen

Control de acceso de origen (OAC)

Restringe el acceso al bucket solo a CloudFront. Impide el acceso directo a los activos de la URL de S3.

Origin Shield

Habilitado (región más cercana al bucket)

Agrega una capa de almacenamiento en caché centralizada entre las ubicaciones periféricas y el origen. Reduce los costos de las solicitudes de S3 y mejora la tasa de aciertos de caché de las imágenes.

Intentos de conexión

3

Predeterminada. Reintenta en caso de errores transitorios de S3.

Origen de ALB para contenido dinámico

Utilice un Equilibrador de carga de aplicación como origen de páginas de productos dinámicas, búsquedas y puntos de conexión de API. ALB enruta a los servidores de aplicaciones (instancias de Amazon EC2, tareas de Amazon ECS o funciones de Lambda a través de grupos de destino).

Configuración de origen de ALB
Opción Valor Justificación

Dominio de origen

Nombre de DNS de ALB

Utilice el nombre de DNS de ALB directamente. No utilice una dirección IP: las direcciones IP de ALB cambian.

Protocolo

Solo HTTPS

Cifra el tráfico entre CloudFront y el origen. Necesario para información confidencial (sesiones de usuario, información de pago).

Encabezado personalizado de origen

X-Origin-Verify: <secret-value>

Restringe el acceso de ALB a las solicitudes de CloudFront. ALB comprueba este encabezado y rechaza los intentos de acceso directo.

Tiempo de espera de conexión

10 segundos

Más corto que el predeterminado (30 segundos). Responda rápido a los errores de origen en lugar de hacer esperar a las conexiones periféricas.

Tiempo de espera de respuesta

30 segundos

Permite tiempo para consultas de búsqueda complejas y operaciones de catálogo. Auméntelo si la API tiene operaciones de larga duración.

Tiempo de espera de Keep Alive

5 segundos

Reutiliza las conexiones a ALB. Reduce la sobrecarga del establecimiento de comunicación de TLS para las solicitudes posteriores.

Almacenamiento en caché por aplicación con ElastiCache (Valkey)

CloudFront almacena en caché el contenido en la periferia, pero los datos a los que se accede con frecuencia y que requieren consultas a la base de datos se benefician de una caché adicional por aplicación. Un clúster de ElastiCache que ejecuta Valkey se encuentra entre los servidores de aplicaciones y la base de datos, y proporciona lecturas de menos de un milisegundo para los datos del catálogo de productos, los recuentos de inventario y el estado de la sesión.

Estrategia de almacenamiento en caché de dos niveles
Capa Qué almacena en caché TTL Comportamiento de error de caché

Periferia de CloudFront

Respuestas HTTP completas (API JSON, páginas HTML, imágenes)

5 s - 365 d (por comportamiento)

Reenvía la solicitud al origen de ALB

ElastiCache (Valkey)

Objetos de datos de aplicaciones (registros de productos, inventario, sesiones)

30 s – 5 min (por tipo de datos)

La aplicación consulta la base de datos y escribe el resultado en la memoria caché

En una solicitud de página de producto:

  1. CloudFront comprueba su caché de periferia. En caso de acierto, devuelve inmediatamente la respuesta en caché.

  2. En caso de error, CloudFront reenvía a ALB.

  3. La aplicación comprueba ElastiCache para los datos del producto. En caso de acierto, crea la respuesta a partir de los datos almacenados en caché (submilisegundos).

  4. En caso de error de ElastiCache, consulta la base de datos, escribe en ElastiCache y devuelve la respuesta.

  5. CloudFront almacena en caché la respuesta en la periferia según la configuración de TTL del comportamiento.

Cuando un vendedor actualiza un producto:

  1. La aplicación invalida la clave de producto en ElastiCache.

  2. La aplicación envía una invalidación de etiqueta de caché a CloudFront para la etiqueta del producto.

  3. La siguiente solicitud desencadena una nueva respuesta a través de ambas capas de caché.

Preguntas frecuentes

En las siguientes secciones, se responden preguntas frecuentes sobre las estrategias de almacenamiento en caché para las cargas de trabajo del comercio electrónico y los mercados.

¿Cómo gestiono el contenido personalizado con el almacenamiento en caché?

Separe los elementos personalizados del contenido que se puede almacenar en caché. Sirva el intérprete de comandos de la página (detalles del producto, imágenes, descripciones) desde la caché de CloudFront y cargue elementos personalizados (recomendaciones, número de artículos en el carrito, nombre de usuario) mediante llamadas a la API del cliente que evitan el almacenamiento en caché. Con este enfoque, puede almacenar en caché la costosa renderización de páginas y mantener la personalización actualizada.

¿Cómo elijo entre la invalidación y los TTL cortos?

Use TTL cortos (5-60 segundos) para el contenido que cambia con frecuencia y de forma predecible (inventario, precios). Use la invalidación para el contenido que cambia con poca frecuencia, pero que debe actualizarse inmediatamente cuando lo hace (imágenes de productos después de que el vendedor las haya editado, descripciones de los productos tras una revisión de conformidad). La invalidación tiene un costo por solicitud y un límite de simultaneidad; no la use como sustituto de los TTL correspondientes.

¿Cómo me preparo para las ventas flash y los picos de tráfico?

CloudFront escala automáticamente para gestionar los picos de tráfico. Para maximizar la tasa de aciertos de caché durante una venta: precaliente las páginas de productos solicitándolas antes de que comience el evento, aumente temporalmente los TTL de la API (por ejemplo, aumente el TTL del inventario de 5 s a 15 s) para absorber más tráfico en la periferia y asegúrese de que el clúster de ElastiCache tenga suficiente espacio de memoria para el aumento de las escrituras en caché. Supervise la métrica de la tasa de aciertos de caché de CloudFront durante el evento.

¿Debo usar Origin Shield en mi mercado?

Sí. Origin Shield agrega una capa de caché centralizada entre las cachés de periferia regionales y su origen. En el caso de las cargas de trabajo de comercio electrónico, reduce las solicitudes de origen para productos populares (ya que un acierto de caché en Origin Shield sirve a todas las ubicaciones periféricas), reduce los costos de GET de S3 para imágenes y suaviza los picos de tráfico hacia ALB. Habilítelo en la región más cercana al origen. Para obtener más información, consulte Uso de Amazon CloudFront Origin Shield.