У меня есть приложение Django и серверная часть postgres. По сути, это поисковый сайт с большой базой данных, и данные обычно меняются раз в день. Я хотел бы запустить кеширование, чтобы уменьшить нагрузку на базу данных.
Я настроил 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-вызовов не работает.
Это связано с тем, что memcached не различает результаты Ajax и результаты, отличные от Ajax, поэтому вызовы Ajax из внешнего интерфейса получают кэшированные результаты, отличные от Ajax, и наоборот.
Итак, что мне нужно сделать, это выяснить, как еще кешировать. Могу предположить следующие варианты:
- Кэшируйте только запросы к базе данных на срок до одного дня. Это возможно?
- Кэшируйте фрагмент шаблона в
result_ajax.html
, который фактически отображает результаты. (index.html
на самом деле включаетresult_ajax.html
.)
Какой из них, вероятно, будет лучшим способом сделать что-то?