2013-02-23 29 views
5

Tôi đang gặp một số sự cố khi nén máy nén django để làm việc với CloudFront. Tôi đang chạy lệnh nén ngoại tuyến để tạo tệp nén của tôi và tệp manifest.json. Sau đó, tôi sau đó chạy collectstatic để tải các tập tin nén vào thùng S3 của tôi.Máy nén Django - CloudFront và manifest.json

Những tập tin tĩnh này sau đó được phục vụ từ CloudFront, vì vậy các thiết lập của tôi giống như thế này:

STATIC_ROOT = '' 
STATIC_URL = 'http://<my-cloudfront-domain>/somebucket/' 

STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 

COMPRESS_OFFLINE = True 

Vấn đề là, CloudFront đang phục vụ một phiên bản cũ của manifest.json, có nghĩa là máy nén là ném một OfflineGenerationError.

Ngay cả với bộ đệm ẩn phụ trợ tại chỗ, tôi lo lắng rằng tệp kê khai của tôi sẽ không chính xác nếu máy chủ bộ nhớ cache dành cho ngoại tuyến/bị xóa vì bất kỳ lý do gì.

Tôi có thiếu thứ gì đó ở đây để đảm bảo tôi không chạy vào chế độ OfflineGenerationError không?

+0

bạn có tìm thấy giải pháp hay không. cùng một vấn đề ở đây. –

+0

Tôi cũng gặp vấn đề này, nhưng tôi không hiểu tại sao nén sẽ truy cập vào 'manifest.json' thông qua URL tĩnh thay vì sử dụng bộ nhớ tệp mặc định; nếu nó đã làm sau này, S3 sẽ được truy cập trực tiếp và sẽ không có vấn đề bộ nhớ đệm ... giả sử manifest.json không được sử dụng bởi máy khách. Tôi chưa thấy khách hàng của mình cố truy cập vào nó. – Bryan

Trả lời

0

Bằng cách mà Amazon CloudFront hoạt động, bạn cần rõ ràng các tệp không hợp lệ bằng cách cung cấp "phiên bản" của cùng một tệp hoặc chỉ cần bỏ và sử dụng tên mới. Việc xóa sớm có vẻ tốn kém và được lập hóa đơn.

Hãy thử tải lên manifest.json từ AWS Console của bạn và đặt phiên bản mới cho cùng một tệp. Nó sẽ cập nhật điểm cuối CloudFront mà không xóa tệp.

Nguồn: http://aws.amazon.com/en/cloudfront/ (Chủ đề Phiên bản đối tượng và Cache Invalidation)