我有一个 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
。)
以下哪一项可能是做事的最佳方式?