2011-11-09 36 views
6

Giả sử rằng tôi có một tệp javascript duy nhất mà tôi đã trao cho rất nhiều khách hàng của mình, tương tự như GA.js của GA và tệp này đang được tải đủ số lần cao tôi phải lưu trữ nó trên CDN.Thử nghiệm dàn dựng/AB CDN Hosting Javascript

Vấn đề tôi gặp phải với thiết lập này là nó làm cho thật khó để 'giai đoạn' một phiên bản mới của javascript. Lý tưởng nhất, khi tôi có một phiên bản mới của JS, tôi muốn chia lưu lượng truy cập đến CDN và gửi 1% toàn bộ lưu lượng truy cập đến JS mới (được chọn ngẫu nhiên) hoặc có thể chỉ gửi JS mới cho cụ thể URL.

Tôi đã gặp vấn đề này nhiều lần và chưa đưa ra giải pháp tốt. Một giải pháp khả thi là làm việc với CDN, mặc dù đó là một quá trình lâu dài. Giải pháp thay thế là có các khách hàng luôn tải một javascript bootstrapper, mà biết nơi JS thực tế hoặc JS được tổ chức sống và chia tách lưu lượng truy cập cho phù hợp.

Tôi tò mò nếu có giải pháp thay thế mà mọi người đã đưa ra. Đây là vấn đề đủ phổ biến đối với bất kỳ công ty nào phân phối JS của họ như Google, Twitter, Facebook, Linkedin, v.v.

+0

Tôi nghĩ rằng đặt cược tốt nhất của bạn là Javascript bootstrapper, vì nó cho phép bạn duy trì quyền kiểm soát từ đầu. –

Trả lời

1

Vì hầu hết các dịch vụ CDN đều dựa vào bạn thêm bản ghi CNAME mới vào miền của bạn để trỏ tới tên máy chủ CDN. Bạn có thể sử dụng DNS để phân chia lưu lượng giữa các dịch vụ CDN khác nhau.

  1. Round-robin_DNS - chia trafffic nhiều hay ít đều
  2. geo-load-balancing - cho phép để thiết lập một ánh xạ đến máy chủ cụ thể dựa trên vị trí người dùng.
+0

Chắc chắn có thể là một khả năng, nhưng TTL trên bộ nhớ cache DNS của chúng tôi là khá lớn, do đó, sẽ mất một thời gian dài để thiết lập dàn dựng sẵn sàng. Hơn nữa, dựa vào việc truyền bá DNS sẽ là một nhức đầu. Cuối cùng, việc chia tách 99%/1% bằng cách sử dụng round-robin sẽ yêu cầu 100 mục trong tệp DNS, điều này có thể khó sử dụng :) – daniyalzade