gpt4 book ai didi

python - 为 Django 应用程序的搜索引擎提供建议

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:26 26 4
gpt4 key购买 nike

我有一个带有搜索页面的应用程序。用户将能够对多个表进行搜索。但恐怕这会给服务器带来巨大的成本。

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 缓存的还是每次用户点击“下一页”按钮时都会进行新的查询?我想知道我是否应该实现 Django cache API并尝试自己处理它,但我不知道 Django 是否已经比我做得更好了。我还将尝试为每页提供更多更好的结果,这样用户就不会经常更改页面。

最佳答案

这些结果是由 Django 缓存的还是每次用户点击“下一页”按钮时都会进行新的查询?

这取决于按钮按下的处理方式。如果您按下的按钮调用 Django View ,并且您依赖 Django 的分页器,则每次按下按钮时 Django 都会查询您的数据库。

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

  1. 在客户端使用 javascript 处理分页。按下按钮将调用 Django View ,该 View 会将完整的结果集返回给客户端。然后,客户端将使用 javascript 将结果拆分为多个页面,并通过分页提供对所述页面的访问。

  2. 使用 Django 的缓存框架。您可以设置一个 Redis 服务器并配置 Django 以使用它进行缓存。然后更新您的 View 以使用 cache_page 装饰器。在这里阅读更多相关信息:https://docs.djangoproject.com/en/1.9/topics/cache/

关于python - 为 Django 应用程序的搜索引擎提供建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com