首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于Django应用程序的搜索引擎的建议

关于Django应用程序的搜索引擎的建议
EN

Stack Overflow用户
提问于 2015-12-08 02:28:19
回答 1查看 41关注 0票数 1

我有一个带有搜索页面的应用程序。用户将能够在多个表中进行搜索。但是,我担心这会给服务器带来巨大的代价。

代码语言:javascript
运行
复制
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是否已经比我做得更好了。我也将尝试提供更多和更好的结果每页,这样用户就不会不断地更改页面太频繁。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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将在每次按下该按钮时查询数据库。

如果您想减少对数据库的查询,我可以想到两种方法:

  1. 在客户端使用javascript处理分页。按下按钮将调用Django视图,该视图将向客户端返回完整的结果集。然后,客户端将使用javascript将结果拆分到多个页面,并通过分页提供对所述页面的访问。
  2. 使用Django的缓存框架。您可以设置Redis服务器,并将Django配置为用于缓存。然后更新视图以使用cache_page装饰器。在这里阅读更多关于这一点的信息:https://docs.djangoproject.com/en/1.9/topics/cache/
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34146943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档