Ответ
В Django встроен мощный фреймворк кэширования. Процесс состоит из настройки и применения на разных уровнях.
Шаг 1: Настройка в settings.py
Сначала необходимо определить бэкенд кэша. Выбор зависит от задачи:
LocMemCache: Локальная память процесса. Быстро, но не разделяется между процессами. Идеально для разработки.FileBasedCache: Файловая система. Медленнее, но надежно.DatabaseCache: База данных. Легко настроить, но является самым медленным вариантом.RedisCache/MemcachedCache: Внешние in-memory хранилища. Рекомендуются для production благодаря высокой производительности.
Пример конфигурации для Redis:
# settings.py
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.redis.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
}
}
Шаг 2: Способы использования
1. Низкоуровневый API Для кэширования результатов вычислений или запросов к БД.
from django.core.cache import cache
def get_complex_data():
data = cache.get('my_complex_data_key')
if data is None:
# Логика получения данных (например, из БД)
data = ...
cache.set('my_complex_data_key', data, timeout=3600) # Кэш на 1 час
return data
2. Кэширование представлений (Views)
Декоратор cache_page кэширует всю страницу целиком.
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # Кэшировать на 15 минут
def my_view(request):
# ...
3. Кэширование фрагментов шаблона
Тег {% cache %} позволяет кэшировать ресурсоемкие части шаблона, например, боковую панель с категориями.
{% load cache %}
{% cache 500 sidebar %}
<!-- Этот фрагмент будет закэширован на 500 секунд -->
... sidebar content ...
{% endcache %}