Задать вопрос

Как лучше организовать кэширование в Django?

Собственно какие-то совсем "банальные" вещи мне известны (кэширование в шаблонах/запросов), смотрел разные батарейки.

Собственно, есть интернет магазин, с большими каталогами товаров. Можно кешироватьсами запросы, но проблемы возникают при генерации шаблонов, то есть почти все время занимает именно они - можно воспользоваться блочным кешем, но проблема в том, что некоторые каталоги мало посещаемы (4 в день), получается, что даже выставив время жизни 12 часов, каждый второй посетитель будет сталкиваться с долгим ожиданием.

Ок, можно "забить" на этих 4 пользователей, но допустим мне нужно в каталогах указывать если ли уже товар в корзине или нет. При таком раскладе кэш нужен для каждого пользователя - то есть по сути нужно держать каталоги для каждого юзера, + опять задержка при обновлении и первом заходе. Такая же ситуация с блогом, мне нужно указать сколько новых комментов появилось в посте с последнего посещения (аля хабр).

Собственно вопрос как кешировать большие блоки при этом сохранять в них индивидуальную информацию для каждого из юзеров, будь то "уже в корзине" или "+40 новых комментариев"? Где можно почитать углубленные материал как организовывать кэширование на сайтах в целом?
  • Вопрос задан
  • 4370 просмотров
Подписаться 7 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
Tiendil
@Tiendil
Разработчик ПО.
Мне кажется, что тормозит не рендер шаблонов, а что-то другое.

>Собственно вопрос как кэшировать большие блоки при этом сохранять в них индивидуальную информацию для каждого из юзеров
Перенести отображение этой информации на сторону JavaScript. Кэшируется блок html без изменяемых данных, а в браузере JS отдельно их устанавливает.

>получается, что даже выставив время жизни 12 часов, каждый второй посетитель будет сталкиваться с долгим ожиданием.
1. можно выставить время в 120 часов :-)
2. можно весь html генерировать на диск и раздавать статику, обновляя только во время обновления товаров.
3. написать скрипт, который будет периодически обходить сайт и инициировать кэширование.

Заодно рекомендую почитать про версионирование кэша.
Ответ написан
Ваш ответ на вопрос

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

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