4 техники оптимизации Django, которые должен знать каждый разработчик

Введение

Оптимизация программирования – это процесс изменения программы для того, чтобы она работала быстрее, использовала меньше памяти или ресурсов.

Панель инструментов django-debug-toolbar – это мощный инструмент, который можно использовать для отладки и профилирования приложений Django. Он может помочь вам определить узкие места в производительности и улучшить работу ваших приложений.

Список техник

  • Кэширование
  • Ленивая загрузка
  • Минификация шаблонов
  • Оптимизация запросов с помощью индексов и объединений.

Кэширование:

Это процесс сохранения динамического содержимого, чтобы его не нужно было вычислять и рассчитывать для каждого запроса. Фреймворк кэширования Django предоставляет возможности для повышения производительности. В Django вы можете кэшировать гранулярность на разных уровнях, то есть вы можете кэшировать вывод определенных
представления, или только те части, которые трудно производить, или даже весь сайт.

Для кэширования одного представления в Django вы можете использовать декоратор cache_page. Декоратор cache_page принимает два аргумента: первый аргумент – это количество секунд для кэширования представления, а второй аргумент – это булево значение, которое указывает, нужно ли аннулировать кэш при изменении базовых данных представления.

Например, следующий код будет кэшировать представление my_view в течение 60 секунд:

from django.views.decorators.cache import cache_page

@cache_page(60)
def my_view(request):
  # Do something here
  return HttpResponse("Hello, world!")

Декоратор cache_page можно использовать для кэширования любого представления, но чаще всего он используется для кэширования представлений, которые возвращают статическое содержимое, например, посты в блогах или страницы товаров. Кэширование этих типов представлений может повысить производительность вашего Django-приложения за счет уменьшения количества раз, которые необходимо отображать представление.

Кроме того, для кэширования всего сайта в Django вы можете использовать промежуточное ПО cache_middleware. Промежуточное ПО cache_middleware принимает два аргумента: первый аргумент – это используемый бэкенд кэша, а второй аргумент – таймаут кэша.

Например, следующий код будет кэшировать весь сайт в течение 60 секунд:

from django.middleware.cache import cache_middleware

CACHE_MIDDLEWARE = {
  'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
  'LOCATION': 'cache_table',
  'TIMEOUT': 60,
}

MIDDLEWARE = [
  'django.middleware.cache.cache_middleware',
  # Other middleware here
]

Ленивая загрузка:

Ленивая загрузка в Django – это техника, которая позволяет загружать данные из базы данных только тогда, когда это необходимо. Это может быть полезно для повышения производительности вашего приложения, особенно если вы работаете с большими наборами данных.

Существует два основных способа ленивой загрузки данных в Django:

Использование методов defer и only
Использование метода prefetch_related
Методы defer и only позволяют вам указать, какие поля вы хотите загрузить из базы данных. Например, следующий код загрузит только поля name и email из модели User:

Метод prefetch_related позволяет загружать связанные объекты без необходимости выполнять итерации по основному набору запросов. Также существует метод select_related,

books = Book.objects.select_related('author').all()
for book in books:
    print(book.author.name)

В этом случае связанные авторы будут извлекаться только при обращении к ним, что сократит количество запросов к базе данных.

Вот несколько советов по эффективному использованию ленивой загрузки:

  • Лениво загружайте только те данные, которые действительно необходимы.
  • Избегайте ленивой загрузки больших наборов данных.
  • Используйте метод prefetch_related для массовой загрузки связанных объектов.

Минификация шаблонов

Django не предоставляет встроенную минификацию шаблонов как часть своей основной функциональности. Однако, вы можете добиться минификации шаблонов в Django, используя сторонние библиотеки или собственные методы.

Django Compressor: Django Compressor – это популярная сторонняя библиотека, которая помогает сжимать и минифицировать CSS и JavaScript файлы.
Пользовательские фильтры шаблонов: Вы можете создавать пользовательские фильтры шаблонов для минификации HTML-кода. Вы можете использовать такие библиотеки Python, как htmlmin или beautifulsoup4 для удаления ненужных белых пробелов.
Инструменты предварительной обработки: Вы можете использовать внешние инструменты для предварительной обработки и минификации ваших шаблонов Django как часть процесса развертывания.

Спасибо за чтение и надеюсь, что это поможет 💗

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *