У меня есть приложение Django и backgres postgres. Это, по сути, поисковый сайт с большой базой данных, и данные обычно меняются один раз в день. Я хотел бы начать кэширование, чтобы уменьшить нагрузку на базу данных.Django: как обрабатывать кеширование в представлениях, которые различаются для запросов Ajax?
Я настроил Memcached, но у меня есть следующие архитектуры в своих взглядах, разработанных, чтобы мое приложение использовать Ajax в переднем конце:
@cache_page(60 * 60 * 12)
def items(request, pattern=None, specialurl=None):
if request.is_ajax():
template = "result_ajax.html"
else:
template = "index.html"
.. и, к сожалению, сочетание кэширования плюс специальная обработка вызовов Ajax не работает.
Это beacuse memcached не различает результаты Ajax и результаты без Ajax - поэтому Ajax-вызовы из front-end получают кэшированные результаты без Ajax и наоборот.
Так что мне нужно сделать, чтобы выяснить, как еще кэшировать. Я могу подумать о следующих вариантах:
- Кэш только запросов к базе данных, рассчитанных на один день. Это возможно?
- Кэш фрагмента шаблона в пределах
result_ajax.html
, который фактически отображает результаты. (index.html
на самом деле включает в себяresult_ajax.html
.)
Какой из них, вероятно, будет лучший способ сделать это?
понятия не имел, что это было возможно - спасибо за предложение! – Richard