Как лучше всего передать активы в CDN с помощью Django? - PullRequest
5 голосов
/ 22 августа 2011

Когда наступает время для развертывания, лучше всего сжимать статические ресурсы (js, css) и перемещать их в CDN. Есть несколько приложений Django, которые обрабатывают некоторые аспекты (django-compressor, django-pipeline каждое приходит на ум), но у каждого из них есть свои проблемы. Например,

  • django-compressor хочет генерировать контент внутри цикла запрос / ответ, даже если включено исключительно автономное сжатие.
  • django-pipeline нигде не хранит хэши, поэтому он перебирает путь, по которому записывает сжатые файлы, сопоставляет имена файлов с регулярным выражением, сортирует эти возможные совпадения и возвращает последний элемент в списке. Попробуйте сделать это из CDN! Что?!

(на первый взгляд, логичный) конвейерный рабочий процесс, который я ищу, таков:

  1. Сжатие ресурсов с использованием хэшей содержимого для имени файла
  2. Хранит эти имена файлов в кеше или модуле или что-то , на которое можно легко сослаться, когда пришло время отображать HTML.

Мне не нужно иметь каждый статический файл на всех моих интерфейсных веб-узлах - только CDN.

Сейчас я чувствую, что мой лучший вариант - взломать поддержку для кэширования хэшей имени файла в django-pipeline, но я мечтаю о решении для этого.

Каковы мои лучшие варианты в Джанго для этого? Есть ли?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 28 августа 2011

django-pipeline 1.1.12 теперь кеширует хеш, так что все будет в порядке, см. список изменений .

Отказ от ответственности : я один изавтор django-pipeline.

1 голос
/ 23 августа 2011

Вы используете Django 1.3? Если это так, то вы можете написать свой собственный пользовательский бэкэнд хранения файлов , который загружает данные в CDN. К счастью, если вы хотите использовать Amazon S3, то django-storages уже делает именно то, что вы хотите!

...