Производительность
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',
}
}
}
Кэширование представлений изображений
Если вы определите кэш с именем «renditions» (обычно вместе с кэшем «default»), 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/v3.0.3/advanced_topics/performance.html