¿Qué son los múltiples dominios de CDN?

Usar varios dominios de CDN distribuye las URL de los activos entre distintos nombres de host para separarlos, migrarlos, personalizar la marca o gestionar el enrutamiento. Cada nombre de host puede usar certificados, políticas de caché u orígenes diferentes.

Cómo funcionan los múltiples dominios de CDN

La distribución de activos entre nombres de host comenzó como una técnica de rendimiento llamada fragmentación por dominios. Los navegadores limitan el número de conexiones simultáneas por dominio, por lo que servir activos desde varios subdominios permitía que una página descargara más archivos en paralelo. HTTP/2 y HTTP/3 transportan muchas solicitudes en una sola conexión, lo que elimina ese motivo, y MDN ahora describe el uso de varios dominios como un antipatrón de rendimiento porque cada uno puede añadir una consulta DNS y el establecimiento de una conexión. Lo que queda son los usos que no tienen que ver con las descargas paralelas: un nombre de host por cliente, por límite de seguridad, por clase de contenido multimedia o por CDN durante una migración. Para un navegador, cada nombre de host es un origen distinto, y en la CDN cada uno necesita su propio registro DNS, cobertura de certificado y enrutamiento, incluso cuando todos llegan a la misma CDN y al mismo servidor de origen.

Datos clave

  1. ¿Los nombres de host adicionales siguen acelerando la carga de las páginas? Por regla general, no en HTTP/2 ni en HTTP/3. La fragmentación por dominios permitía eludir el límite de conexiones por dominio del navegador; MDN la considera obsoleta una vez que se habilita HTTP/2, porque cada nombre de host adicional puede costar una consulta DNS y una conexión nueva. Un navegador puede reutilizar una conexión existente para un segundo nombre de host solo cuando el servidor tiene autoridad para ese nombre. En HTTP/2, la RFC 9113 condiciona la reutilización a que el nombre de host se resuelva en la misma dirección IP y, para los recursos https, además a que el certificado sea válido para ese nombre de host; la RFC 9110 añade que un servidor puede eliminar la comprobación DNS enviando una trama ORIGIN. En HTTP/3, el cliente debe validar el certificado del servidor para el nuevo nombre de host. Un servidor puede rechazar la reutilización con una respuesta 421 (Misdirected Request).
  2. ¿Un navegador trata un segundo nombre de host que me pertenece como el mismo origen? No. Un origen es la combinación de esquema, host y puerto, y la RFC 9110 establece que dos orígenes son distintos si difieren en cualquiera de los tres, incluso cuando la misma entidad controla ambos. Una página en www.example.com que llama a fetch() con media.example.com como destino, o carga una fuente web desde allí, necesita encabezados CORS del nombre de host multimedia. Una imagen que solo se muestra se carga sin autorización CORS, pero dibujarla en un canvas contamina ese canvas, y leerlo después genera un SecurityError.
  3. ¿Las cookies llegarán a un nombre de host multimedia separado? Solo si su alcance lo incluye, y el alcance por sí solo no garantiza la entrega. Una cookie establecida con Domain=example.com puede enviarse a example.com y a sus subdominios, como media.example.com. Una cookie establecida sin un atributo Domain se devuelve únicamente al host que la estableció. Ninguna cookie cuyo alcance se limite a example.com se envía a un nombre de host de otro dominio. Dentro de ese alcance, la solicitud aún tiene que incluir credenciales: una solicitud fetch() entre orígenes no envía cookies a menos que su opción credentials tenga el valor include, y MDN señala que las políticas de cookies de terceros pueden impedir su envío incluso en ese caso. Verifica ambos aspectos antes de depender del control de acceso basado en cookies en el nombre de host multimedia.
  4. ¿Qué requiere cada nombre de host adicional en la CDN? Un certificado que lo cubra, un registro DNS que lo enrute y una configuración que lo acepte. Amazon CloudFront, por ejemplo, añade un nombre de dominio alternativo solo si el certificado asociado lo cubre entre sus nombres alternativos de sujeto, y rechaza un nombre que ya existe en otra distribución. Asocia un solo certificado a una distribución a la vez, por lo que ese certificado tiene que cubrir todos los nombres de host de la distribución. El registro de enrutamiento normalmente es un CNAME, y CloudFront requiere permiso para crearlo con el proveedor de DNS del dominio, así que, si el nombre de host pertenece a un cliente, ese cliente tiene que crear el registro o darte ese acceso. DNS no permite un CNAME en la raíz de un dominio (el ápice de la zona), por lo que esto funciona para un subdominio como media.example.net, pero no para example.net en sí; para un ápice, CloudFront documenta un registro de alias en Amazon Route 53 o, con otro proveedor de DNS, direcciones IP estáticas Anycast. Debes supervisar y renovar los certificados importados de una autoridad externa. AWS Certificate Manager renueva los certificados que emite, pero no de forma incondicional: un certificado validado por DNS se renueva automáticamente mientras esté en uso por un servicio de AWS y sus registros CNAME de validación permanezcan en el DNS público, y uno validado por email necesita que el propietario del dominio actúe. Para los dominios que pertenecen a clientes, acuerda quién mantiene esos registros y supervisa el vencimiento de cada nombre de host, no solo del principal.
  5. ¿Un archivo se almacena en caché una sola vez o una vez por nombre de host? Eso depende de la clave de caché de la CDN. La clave predeterminada de Cloudflare incluye el host, por lo que la misma ruta solicitada a través de dos nombres de host corresponde a dos entradas de caché. CloudFront documenta su clave predeterminada como el nombre de dominio de la distribución más la ruta de la URL y establece que no incluye ningún otro valor de la solicitud del espectador de forma predeterminada. Esto importa en ambos sentidos. Si todos los nombres de host sirven la misma biblioteca, una clave que los separe almacena duplicados, y CloudFront advierte que los objetos duplicados reducen la tasa de aciertos y aumentan las solicitudes al origen. Si la respuesta difiere según el nombre de host, como cuando hay un nombre de host por inquilino, la clave tiene que distinguirlos, porque las solicitudes que producen la misma clave reciben el mismo objeto en caché. La regla de CloudFront es incluir en la clave cualquier valor de la solicitud que determine la respuesta del origen.

Cuándo son importantes los múltiples dominios de CDN

Usa nombres de host separados para aislar inquilinos o clases de activos, ofrecer dominios de entrega con la marca del cliente o migrar gradualmente entre proveedores. Un nombre de host separado le da a un inquilino su propio origen en el navegador, no sus propias respuestas en caché: el contenido específico de cada inquilino también necesita una clave de caché o una configuración de caché que distinga los nombres de host. No añadas nombres de host solo para acelerar la carga de páginas en HTTP/2 o HTTP/3. Cada nombre de host adicional conlleva su propio registro DNS, cobertura de certificado, comportamiento CORS, alcance de cookies y configuración de caché.

Cómo ayuda Transloadit con los múltiples dominios de CDN

Dos funciones documentadas de Transloadit involucran el nombre de host de entrega. Las URL de Smart CDN se sirven desde un nombre de host específico del Workspace, [your-workspace].tlcdn.com, por lo que cada Workspace tiene su propio nombre de host de entrega. Cuando una Assembly exporta a tu propio bucket con el Robot /s3/store, el parámetro url_prefix establece el prefijo de la URL que se devuelve en el Assembly Status, lo que te permite proporcionar enlaces con un nombre de host de CDN que administras delante de ese bucket.

url_prefix solo cambia la URL devuelta; no cambia el bucket ni sus permisos de acceso, y el nombre de host en sí tiene que configurarse con tus proveedores de CDN y DNS. Las páginas enlazadas aquí no describen cómo servir URL de Smart CDN desde un dominio personalizado.

Explora las capacidades de entrega de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis