2011-11-09 7 views
6

Supongamos que tengo un solo archivo javascript que he entregado a muchos de mis clientes, similar al GA * ga.js de GA, y este archivo se está cargando lo suficientemente alto número de veces que tengo que alojarlo en un CDN.Staging/AB Testing Alojamiento de CDN Javascript

El problema que tengo con esta configuración es que hace que sea realmente difícil 'escenificar' una nueva versión de javascript. Idealmente, cuando tengo una nueva versión del JS, me gustaría dividir el tráfico entrante al CDN, y enviar el 1% de todo el tráfico al nuevo JS (elegido al azar), o posiblemente enviar el nuevo JS solo a un sitio específico. URLs

Me he encontrado con este problema varias veces y no he encontrado una buena solución. Una posible solución es trabajar con el CDN, aunque es un proceso largo. Una solución alternativa es que los clientes siempre carguen un bootstrapper javascript, que sepa dónde vive el JS real o el JS en etapas y divida el tráfico en consecuencia.

Tengo curiosidad por si hay soluciones alternativas que la gente haya ideado. Este es un problema bastante común para cualquier compañía que distribuya sus JS, Google, Twitter, Facebook, Linkedin, etc.

+0

Creo que su mejor apuesta es el Javascript bootstrapper, ya que le permite mantener el control de su parte. –

Respuesta

1

Dado que la mayoría de los servicios de CDN dependen de que usted agregue un nuevo registro CNAME a su dominio para apuntar al nombre de host de CDN. Puede usar DNS para dividir un tráfico entre diferentes servicios de CDN.

  1. Round-robin_DNS - escisiones trafffic más o menos uniformemente
  2. geo-load-balancing - permite establecer una asignación a host específico basado en la ubicación del usuario.
+0

Definitivamente podría ser una posibilidad, pero el TTL en nuestro caché de DNS es bastante grande, por lo que tomaría mucho tiempo para preparar la configuración de preparación. Además, confiar en la propagación del DNS sería un dolor de cabeza. Finalmente, obtener la división de 99%/1% usando round-robin requeriría 100 entradas en el archivo DNS, lo que podría ser difícil de manejar :) – daniyalzade