2014-10-15 3 views
0

У меня есть app.html страница со многими кофейными скриптами (58 файлов). я использую Джанго-компрессор для их компиляции:Компрессор Django занимает слишком много времени для ответа (15 секунд)

{% compress js %} 
<script type="text/coffeescript" src="/static/scripts/commons/commons.coffee"></script> 
<script type="text/coffeescript" src="/static/scripts/app/model/Storage.coffee"></script> 
<script type="text/coffeescript" src="/static/scripts/app/model/Unit.coffee"></script> 
.... 
{% endcompress %} 

Все компилируется и работает, но она занимает 15 секунд для страницы ответа. Я думаю, что это должно быть хорошо для первого запроса (кофе должен быть скомпилирован), но он занимает те же 15 секунд на втором, третьем и всех последующих запросах.

Выход всегда одинаков:

<script type="text/javascript" src="/static/CACHE/js/commons.33f0b9628e28.js"></script> 
<script type="text/javascript" src="/static/CACHE/js/Storage.924e88456824.js"></script> 
<script type="text/javascript" src="/static/CACHE/js/Unit.0fdebfecb96b.js"></script> 
.... 

Я не меняю файлы, я просто обновление страницы.

Кажется, что django-compressor перекомпилирует все файлы по каждому запросу (но имена скомпилированных js-файлов не изменяются, что является странным).

В любом случае, я могу ускорить django-компрессор?

P.S.

  • Я запускаю django локально manage.py runserver.
  • DEBUG = True (мой вариант DEBUG установлен Истина в settings.py)

ответ

1

Я думаю, вы поставили этот COMPRESS_ENABLED = True. Установите, если False. Также посмотрите на COMPRESS_OFFLINE, так что вы можете сжать статические вручную форума:

$ python manage.py compress 

Это падение ключ кэша тоже. И проверьте свой COMPRESS_CACHE_BACKEND.

+0

Если установить 'COMPRESS_ENABLED = true', весь мой кофе объединены в одно файл расслоения плотного (это не то, что я хочу для развития , Я хочу отдельные файлы), обновления страниц теперь бывают быстрыми, но когда я изменяю один из файлов, обновление страницы снова занимает 15 секунд. 'python manage.py compress' неудобен для разработки. Может ли COMPRESS_CACHE_BACKEND изменить ситуацию? Я прочитал документацию, он говорит: «Бэкэнд для использования для кеширования, если вы хотите использовать другой кеш-сервер для Django Compressor». Но что это значит? Что конкретно делает кеш в контексте компрессора django? – imkost

+0

Если вы используете [DummyCache] (https://docs.djangoproject.com/en/dev/topics/cache/#dummy-caching-for-development), он НЕ будет кэшировать вообще, вот что я имею в виду. Да, вы должны установить COMPRESS_ENABLED = False, чтобы он не сжимал ваши скрипты каждый запрос с помощью DummyCache. ", но когда я изменяю один из файлов, обновление страницы снова занимает 15 секунд", то это проблема. Ваши скрипты скомпилированы слишком долго. – byashimov

+0

Итак, компрессор Django не может перекомпилировать только те сценарии, которые были изменены с момента последнего обновления страницы? Он может только скомпилировать их все? – imkost

1

django-compressor теперь имеет систему для кэширования прекомпиляторов и ускорения компиляции кофе, только скомпилировав измененные файлы. Это ускоряет время отклика разработки.

https://github.com/django-compressor/django-compressor/pull/650

Просто добавьте в настройки компрессора:

COMPRESS_CACHEABLE_PRECOMPILERS = (
    'text/coffeescript', 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^