JRazor
@JRazor
Senior StarkOverFlow Programmer

Кеширование view в Django/DRF с возможностью очищения кеша?

Доброго времени суток.

Пытался я тут настроить кеширование для некоторых view с возможностью очищения кеша по handler (всякими post_save и прочим).

И я был поражен: из всего того, что я нашел - всё просто ужасно костыльное

- Дефолтный cache_page - не поддерживает удаления нормального вообще
- easy-cache- кеширует, по большей части, только property
- django-cacheops - кеширует, по большей части, только instance или queryset (cache_view только на бумаге работает, удаления тоже нет)

В попытках найти кеширование view с invalidate - потерпел поражение.

Что посоветуете использовать? Как подойти к вопросу?
  • Вопрос задан
  • 443 просмотра
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
django-cacheops в большей степени заточен на кэширования уровня ORM, зато инвалидация там навороченная. В целом, можно попробовать переиспользовать инвалидацию уровня ORM с помощью cached_as, но это будет замороченно с т.з. логики и тяжело в поддержке.
По-сути вам придется продублировать автоматически работающие правила инвалидации ORM-а на уровне декораторов view, но уже вручную. И поддерживать консистентность между этими правилами и тем, как в действительности этот view формирует ответ.
Мы остановились на том, что при необходимости облегчаем генерацию ответов DRF за счет values() и prefetch_related(), а инвалидацию оставили там где она лучше всего работает - на уровне ORM.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы