2011-08-22 33 views
5

Khi đến lúc triển khai, một cách thực hành tốt nhất là nén nội dung tĩnh (js, css) và chuyển chúng sang CDN. Có một vài ứng dụng Django mà xử lý một số khía cạnh (django-compressor, django-pipeline mỗi đến tâm), nhưng mỗi người đều có vấn đề riêng của họ. Ví dụ:Cách tốt nhất để phân phối nội dung cho CDN bằng Django là gì?

  • django-compressor muốn tạo nội dung bên trong vòng lặp yêu cầu/phản hồi, ngay cả khi bật nén độc quyền ngoại tuyến.
  • django-pipeline không lưu trữ băm ở bất kỳ nơi nào, vì vậy nó lặp qua đường dẫn ghi tệp nén, regex khớp tên tệp, sắp xếp các đối tượng có thể và trả về mục cuối cùng trong danh sách. Hãy thử làm điều này từ một CDN! Gì?!

The (dường như logic) workflow đường ống dẫn Tôi đang tìm là:

  1. tài sản Compress, sử dụng băm của nội dung cho filename
  2. Stores những tên tập tin trong một bộ nhớ cache hoặc một module hoặc một cái gì đó có thể là dễ dàng được tham chiếu khi đến lúc hiển thị HTML.

Tôi không cần phải có mọi tệp tĩnh trên tất cả các nút front-end web của mình - chỉ có CDN.

Ngay bây giờ, tôi cảm thấy rằng tùy chọn tốt nhất của tôi là hỗ trợ hack bộ nhớ đệm tên tệp thành django-pipeline, nhưng tôi đang mơ về giải pháp thả xuống cho việc này.

Tùy chọn tốt nhất của tôi ở Django cho điều này là gì? Có cái gì không?

Cảm ơn!

Trả lời

1

Bạn đang chạy Django 1.3? Nếu vậy, bạn có thể viết custom file storage backend của riêng bạn để tải mọi thứ lên CDN. May mắn thay, nếu bạn muốn sử dụng Amazon S3, thì django-storages đã thực hiện chính xác những gì bạn muốn!

6

django-pipeline 1.1.12 hiện đang lưu vào bộ nhớ đệm băm, vì vậy bạn sẽ ổn, xem changelog.

Tuyên bố từ chối: Tôi là một trong những tác giả của django-pipeline.

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