2011-11-09 9 views
6

Supponiamo di avere un singolo file javascript che ho distribuito a molti miei clienti, simile a GA's * ga.js, e questo file viene caricato con un numero di volte sufficiente che devo ospitarlo su un CDN.Staging/AB Testing Hosting CDN Javascript

Il problema che ho con questa configurazione è che rende davvero difficile "mettere in scena" una nuova versione di javascript. Idealmente, quando ho una nuova versione di JS, vorrei dividere il traffico in entrata al CDN e inviare l'1% dell'intero traffico al nuovo JS (scelto a caso), o eventualmente inviare il nuovo JS solo a specifici URL.

Ho incontrato questo problema più volte e non ho trovato una buona soluzione. Una possibile soluzione sta funzionando con il CDN, anche se è un processo lungo. La soluzione alternativa è che i clienti caricano sempre un javascript bootstrapper, che sa dove vive il JS o il JS in scena e divide il traffico di conseguenza.

Sono curioso di sapere se ci sono soluzioni alternative che le persone hanno escogitato. Questo è un problema abbastanza comune per qualsiasi azienda che distribuisca il proprio JS, Google, Twitter, Facebook, Linkedin, ecc.

+0

Penso che la soluzione migliore sia il Javascript bootstrapper, poiché ti consente di mantenere il controllo dalla tua parte. –

risposta

1

Poiché la maggior parte dei servizi CDN si basa sull'aggiunta di un nuovo record CNAME al dominio per fare riferimento al nome host CDN. È possibile utilizzare DNS per suddividere un traffico tra diversi servizi CDN.

  1. Round-robin_DNS - divide trafffic più o meno uniformemente
  2. geo-load-balancing - permette di impostare una mappatura per host specifico in base alla posizione dell'utente.
+0

Potrebbe sicuramente essere una possibilità, ma il TTL sulla nostra cache DNS è abbastanza grande, quindi ci vorrebbe molto tempo per preparare la configurazione della staging. Inoltre, fare affidamento sulla propagazione DNS sarebbe un problema. Infine, ottenere il 99%/1% di split usando round-robin richiederebbe 100 voci nel file DNS, che potrebbero diventare ingombranti :) – daniyalzade