【问题标题】:Django autocomplete fields, better to pre-populate?Django自动完成字段,更好地预填充?
【发布时间】:2012-02-09 05:30:42
【问题描述】:

我希望将 jqueryui-autocomplete 与 django 项目集成。我的解决方案起点是https://code.djangoproject.com/wiki/AutoCompleteSolutions

我遇到的解决方案使用*__icontains*__startswith,尽管这些搜索当然可以被缓存(查看http://djangosnippets.org/snippets/233/)。我想知道用数组中相对较小的术语列表(10,000?)预先填充页面是否实际上可以节省数据库命中并成为更好的解决方案。例如,通过 django 一次性输出术语:

return [str(e.keyword) for e in CM_Dict.objects.all()]

然后在一个非常基本的 jquery-ui-autocomplete 配置中使用结果列表作为 source:

有没有好的方法来对这样的东西进行基准测试?有人在生产中使用 django+autocomplete 吗?

编辑:我应该补充一点,自动完成功能仅适用于登录用户,但数据无论如何都不敏感。

【问题讨论】:

  • 这消除了您可能首先想要使用 ajax 自动完成的原因。除非您能够读心,否则预填充的数据可能需要相对较大才能涵盖一组潜在查询。即使有一半的用户点击了预填充的数据,仍有另一半用户花费了时间(和带宽)将数据传输给,但仍然必须联系服务器!
  • 不,这是使用 jqueryui-autocomplete 的选项,它配置为使用 JS 数组。这些不是像 google 或一些通用搜索那样的潜在查询,只是该字段的潜在术语列表。

标签: python django json serialization jquery-ui-autocomplete


【解决方案1】:

对我来说,这听起来像是一个早期的优化。它会节省数据库命中吗?也许尽管您无论如何都必须点击数据库进行预填充,但您的初始页面加载会受到影响。您可以缓存预填充数据以避免 DB 命中,但您也可以在服务器端视图上执行此操作。这似乎与现有的 Django 自动完成解决方案更好地集成。

我在生产中使用了几个自动完成解决方案。我也是其中之一的作者:django-selectable。对此类更改进行基准测试需要了解每个查询的成本以及使用频率。解析服务器日志的计数/加载时间将是一个开始。总的来说,如果您的自动完成 ajax 视图是您应用程序中的瓶颈,我会感到惊讶。

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 2016-07-02
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多