2011-07-14 45 views
26

Kế hoạch hiện tại của chúng tôi cho một trang web là sử dụng dịch vụ Cloudfront của Amazon làm CDN cho các tệp tài sản như CSS, JavaScript và Hình ảnh và bất kỳ tệp tĩnh nào khác.Triển khai Cloudfront của Amazon S3

Hiện tại, chúng tôi có 1 thùng chứa S3 chứa tất cả các tệp tĩnh này. Các tệp được phân tách thành các thư mục khác nhau tùy thuộc vào chúng là gì, "Tập lệnh" là các tệp JS, "Hình ảnh" là Hình ảnh, v.v. yadda yadda yadda. Vì vậy, những gì tôi đã không nhận ra ngay từ đầu là khi bạn triển khai một Bucket từ S3 đến Cloudfront Distribution, thì mọi cập nhật tiếp theo cho nhóm sẽ không triển khai lại cho cùng một Phân phối đó nữa. Vì vậy, có vẻ như bạn phải triển khai lại nhóm tới một phiên bản Cloudfront khác mỗi khi bạn có bản cập nhật tệp tĩnh.

Tốt cho hình ảnh, bởi vì chúng tôi có thể dễ dàng đảm bảo rằng nếu có thay đổi đối với hình ảnh, thì chúng tôi chỉ tạo một hình ảnh mới. Nhưng, rất khó để làm cho CSS và JS.

Vì vậy, mà được tôi cho những câu hỏi thực hành tốt nhất:

  1. Có thực hành tốt nhất để tạo ra một phân phối CloudFront cho mỗi triển khai sản xuất? Vấn đề ở đây sẽ gây rắc rối với bản ghi CNAME.
  2. Thực tiễn tốt nhất là KHÔNG lưu trữ CSS và JS trong Cloudfront do tính chất của các tệp đó và nhu cầu của chúng có thể dễ dàng sửa đổi không? Có vẻ như câu trả lời cho điều này sẽ KHÔNG vì đó là mục đích của CDN.
  3. Có phương pháp nào khác với Cloudfront mà tôi không biết?
+0

Xin chào, bạn có thể cho tôi biết bạn đã triển khai css của mình với CDN như thế nào? Làm thế nào bạn gửi các tệp css, js tới CDN của bạn? Bạn đang sử dụng capistrano? – tcgumus

+0

sử dụng cloudflare, miễn phí: D – rocketspacer

Trả lời

17

Bạn có thể đưa ra yêu cầu vô hiệu cho CloudFront.

http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

Thay vì một xô S3, tuy nhiên, chúng tôi sử dụng máy chủ của riêng của chúng tôi như một nguồn gốc tùy chỉnh. Chúng tôi có .htaccess bí danh style_*.css đến style.css và chúng tôi tiêm thời gian sửa đổi tệp cho style.css trong HTML. Khi CloudFront thấy URL hoàn toàn khác, nó sẽ tìm nạp phiên bản mới.

(Lưu ý: Một số CDN cho phép bạn làm điều đó thông qua chuỗi truy vấn, nhưng CloudFront bỏ qua tất cả dữ liệu chuỗi truy vấn cho bộ nhớ đệm, do đó giải pháp .htaccess.)

chỉnh sửa: CloudFront có thể (tùy chọn) cấu hình để sử dụng chuỗi truy vấn ngay bây giờ.

+4

Cả hai đều là giải pháp tốt, nhưng tôi nghĩ rằng thứ hai của bạn là hoàn hảo. Trước CDN, chúng tôi đã thêm "? V = 2.0.x" (bất kể số phiên bản) vào tất cả các URL nội dung để chặn truy xuất bộ nhớ cache, nhưng nếu chúng tôi thay đổi thành "stylesheet-v2.0.x.css" bằng CloudFront bằng máy chủ như là nguồn gốc, tôi nghĩ rằng sẽ làm việc tuyệt vời. Cảm ơn! –

+0

Vui vì tôi có thể giúp! Chúng tôi đã bị CF cắn chuỗi truy vấn một vài lần trước khi chúng tôi lên kế hoạch. :-) – ceejayoz

+3

Việc vô hiệu hóa có giới hạn về số lượng tệp có thể được xử lý cùng một lúc và có thể chậm, vì vậy giải pháp thứ hai chắc chắn là tốt hơn. –

8

CloudFront đã bắt đầu hỗ trợ chuỗi truy vấn mà bạn có thể sử dụng để vô hiệu hóa bộ nhớ cache. http://aws.typepad.com/aws/2012/05/amazon-cloudfront-support-for-dynamic-content.html

+0

cách chính xác, bạn có sử dụng điều này để làm mất hiệu lực bộ nhớ cache trên một tệp cụ thể không?Có lẽ trong liên kết đó ở đâu đó nhưng nó không rõ ràng lắm. – gMale

+0

khi bạn kích hoạt chuỗi truy vấn cloudfront lưu trữ nguồn cấp dữ liệu cho mỗi kết hợp tham số. để bạn có thể thêm phiên bản. img.jpg? version = 1 và? version = 2 để biết thêm chi tiết xem hướng dẫn http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html – Dukeatcoding

Các vấn đề liên quan