Для увеличения производительности веб-приложения нужно стремиться к уменьшению количества запросов к веб-серверу при загрузке каждой страницы.
Этого можно достичь объединением файлов стилей и скриптов в единые файлы. В итоге на страницу будет загружаться по одному .css и .js файлу.
Чтобы объединять файлы стилей и скриптов в один файл, можно воспользоваться приложением django-compressor.
Установим и настроим приложение django-compressor:
1. Для работы с django-compressor нужно установить приложение django-appconf для управления дефолтными настройками приложений. Поместите папку appconf в свой проект.
2. Скачаем приложение django-compressor и также поместите папку compressor в проект.
3. Также в некоторых случаях потребуется установить модуль питона six.
4. В файле settings.py проекта:
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # other finders..
    'compressor.finders.CompressorFinder',
)
INSTALLED_APPS = (
    # ... другие приложения
    'appconf',
    'compressor',
)
COMPRESS_ROOT = os.path.join(os.path.dirname(__file__), '../static/')
COMPRESS_ENABLED = True
Мы здесь указываем COMPRESS_ENABLED = True потому, что приложение django-compressor сжимает файлы, если DEBUG = False. Такой настройкой мы принуждаем приложение всегда сжимать файлы.
5. В шаблоне django оберните место подключения стилей и скриптов в соответствующие теги:
{% load compress %}
{% compress css %}
<link rel="shortcut icon" href="{{ STATIC_URL }}style/images/favicon.png"/>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}style/main_style.css" media="all" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}style/css/view.css" media="all" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}style/type/marketdeco.css" media="all" />
{% endcompress %}
{% compress js %}
<script type="text/javascript" src="{{ STATIC_URL }}style/js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}style/js/ddsmoothmenu.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}style/js/html5.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}style/js/jquery.fitvids.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}style/js/selectnav.js"></script>
{% endcompress %}
6. Посмотрите теперь, как выглядит страница. Вместо 4-х файлов стилей и 5 файлов скриптов на страницу подключается два файла:
<link rel="stylesheet" href="/static/CACHE/css/3ffce519817b.css" type="text/css" media="all" /> <script type="text/javascript" src="/static/CACHE/js/70f4a8c37c6d.js"></script>
Сравнение времени загрузки страницы (слева - до оптимизации)
Таким образом нам удалось уменьшить число запросов к веб-серверу, и увеличить скорость загрузки страницы примерно на 11% (до оптимизации время загрузки страницы 247 мс, после оптимизации 222 мс).
Для увеличения скорости загрузки страницы нужно также минифицировать файлы стилей и скриптов - удалять из файлов комментарии, переносы строк. Такая операция "обезображивания" (uglify - от англ. "обезображивать") кода позволяет сэкономить десятки килобайт.
Минифицировать код в django можно с помощью сторонних приложений, которые, как правило, используют node.js. Но это уже тема отдельной беседы.

 
Комментариев нет:
Отправить комментарий