我有一个带有搜索页面的应用程序。用户将能够在多个表中进行搜索。但是,我担心这会给服务器带来巨大的代价。
ads_list = advertisements.filter(Q(title__icontains=words) | Q(street_name__icontains=words) |
Q(city__in=city.filter(Q(name__icontains=words) | Q(related_names__icontains=words) | Q(post_code=words) | Q(region__icontains=words))) |
Q(state_category__in=state_category.filter(Q(category_name__icontains=words) | Q(search_tags__icontains=words))) |
Q(advertisement_type__in=advertisement_type.filter(Q(type_name__icontains=words) | Q(search_tags__icontains=words))))在搜索页面中,我使用digg_paginator来传播结果。
我的问题是:这些结果是由Django缓存的,还是用户每次点击"next page“按钮时都会执行新的查询?我想知道我是否应该实现Django缓存API并尝试自己处理它,但我不知道Django是否已经比我做得更好了。我也将尝试提供更多和更好的结果每页,这样用户就不会不断地更改页面太频繁。
发布于 2015-12-08 03:09:25
are these results cached by Django or every time the user hits the "next page" button a new query is made?
这取决于按下按钮的方式。如果按下按钮调用Django视图,并且依赖Django的分页器,Django将在每次按下该按钮时查询数据库。
如果您想减少对数据库的查询,我可以想到两种方法:
cache_page装饰器。在这里阅读更多关于这一点的信息:https://docs.djangoproject.com/en/1.9/topics/cache/https://stackoverflow.com/questions/34146943
复制相似问题