Можно ли сжать файлы JavaScript и CSS в Django? - PullRequest
4 голосов
/ 19 октября 2010

Я попытался профилировать свое веб-приложение, и одним из узких мест было отсутствие сжатия gzip.Я приступил к установке промежуточного программного обеспечения gzip в Django и получил некоторую поддержку, но новый отчет показывает, что это только сжатие файлов HTML, то есть любого контента, обрабатываемого Django.Есть ли способ, которым я мог бы kludge / hack / force / сделать промежуточное программное обеспечение сжать мой CSS, а также мой JS?

Может кто-нибудь ответить на мои вопросы ниже.Я немного заблудился с этим.

  • Возможно, я ошибся, но люди делают gzip CSS и JS, не так ли?
  • Django не сжимаетJS и CSS для некоторых проблем совместимости браузера?
  • Сжимает и минимизирует одно и то же?

Спасибо.

Ответы [ 4 ]

16 голосов
/ 19 октября 2010

Ваши CSS и JS должны , а не проходить через Django в вашей производственной системе. Вам нужно настроить Apache (или Nginx, или любой другой) для их обслуживания, и когда вы это сделаете, вы сможете настроить сжатие gzip там, а не в Django.

И нет, сжатие и минификация - это не одно и то же. Сжатие GZip выполняется сервером динамически, когда он обрабатывает ваш запрос, и браузер прозрачно разархивирует файл, когда он его получает. Минификация - это процесс удаления комментариев и пробелов из файлов, а иногда и объединения нескольких файлов в один (то есть один CSS и один JavaScript вместо множества каждого). Это делается, когда вы развертываете свои файлы на сервере - с помощью django-compress, как предлагает Ашок, или с помощью чего-то внешнего, например YUI compress , и браузер не пытается восстановить исходный файл - было бы невозможно и ненужно.

4 голосов
/ 19 октября 2010

Вам следует подумать о размещении приложения django за обратным прокси-сервером HTTP.

Вы можете настроить apache для работы в качестве обратного прокси-сервера для вашего приложения django, хотя некоторые люди предпочитают использовать nginx или lighttpd.для этого сценария.

Обратный прокси-сервер HTTP в основном представляет собой прокси-сервер, настроенный непосредственно перед вашим веб-приложением.Браузеры отправляют запросы от обратного прокси-сервера, а обратный прокси-сервер направляет запросы в веб-приложение.Обратный прокси-сервер также может выполнять ряд интересных функций, таких как handle ssl, gzip-сжатие всех ответов и обработка статических файлов.

2 голосов
/ 19 октября 2010

Следуйте предложению Дэниэла Роузмана: «Ваши CSS и JS не должны проходить через Django в вашей производственной системе»

Если вы хотите служить через Джанго, тогда Вы можете сжимать файлы css, js, используя django-compress , django-compress

1 голос
/ 20 октября 2010

Спасибо всем.

Похоже, что GzipMiddleware в Django DOES сжимает CSS и JS.

Я использовал плагин Google Page Speed ​​для Firebug для профилирования моей страницы, и похоже, что он генерировал отчеты на основе старых копий (не в сжатом формате) CSS и JS в моем локальном кэше.Эти копии были там со времени до того, как я включил промежуточное программное обеспечение Gzip.Я очистил кэш, и похоже, что отчеты в целом показали разные результаты.

...