Производительность
Wagtail разработан для скорости, как в интерфейсе редактора, так и на фронтенде. Но если вам нужна ещё лучшая производительность или вы работаете с очень большим объёмом трафика, вот несколько советов, как извлечь максимум из вашей установки.
Интерфейс редактора
Мы постарались свести к минимуму внешние зависимости для работоспособной установки Wagtail, чтобы упростить его настройку. Тем не менее, для повышения производительности можно настроить ряд параметров по умолчанию:
Кэширование
Мы рекомендуем использовать Redis в качестве быстрого и персистентного кэша. Установите Redis через ваш менеджер пакетов (в Debian или Ubuntu: sudo apt-get install redis-server), добавьте django-redis в свой requirements.txt, и включите его как кэш-бекенд:
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/dbname',
# for django-redis < 3.8.0, use:
# 'LOCATION': '127.0.0.1:6379',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
Кэширование представлений изображений
Если вы определите кэш с именем «представления» (обычно наряду с кэшем «по умолчанию»), Wagtail будет кэшировать запросы к представлениям изображений, что может улучшить производительность страниц, содержащих много изображений.
CACHES = {
'default': {...},
'renditions': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'TIMEOUT': 600,
'OPTIONS': {
'MAX_ENTRIES': 1000
}
}
}
Поиск
Wagtail поддерживает Elasticsearch — как в интерфейсе редактора, так и для пользователей вашего сайта — но может перейти к поиску в базе данных, если Elasticsearch отсутствует. Elasticsearch быстрее и мощнее, чем Django ORM для поиска по тексту, поэтому мы рекомендуем установить его или использовать хостинг-сервис, например, Searchly.
Подробную информацию о настройке Wagtail для Elasticsearch см. в разделе Elasticsearch Backend.
База данных
Wagtail протестирован с PostgreSQL, SQLite и MySQL. Он может работать и с некоторыми сторонними базами данных, но это не гарантируется. Для использования в производстве мы рекомендуем PostgreSQL.
Шаблоны
Накладные расходы при чтении и компиляции шаблонов со временем накапливаются. Django оборачивает свои стандартные загрузчики с помощью cached template loader: который хранит скомпилированные Template в памяти и возвращает их для последующих запросов. Кэшированный загрузчик автоматически включается, когда DEBUG False. Если вы используете пользовательские загрузчики, обновите свои настройки для использования его:
TEMPLATES = [{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'OPTIONS': {
'loaders': [
('django.template.loaders.cached.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'path.to.custom.Loader',
]),
],
},
}]
Пользователи
Кэширующий прокси
Для поддержки большого объема трафика с отличными скоростями отклика мы рекомендуем использовать кэширующий прокси. Как Varnish, так и Squid были протестированы в производстве. Хостинг-прокси, такие как Cloudflare, также должны работать хорошо.
Wagtail поддерживает автоматическое отключение кэша для Varnish/Squid. Дополнительную информацию см. в Frontend cache invalidator.
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/performance.html