什么是实施AJAX自动完成Web服务的最佳方法

我采取了“谷歌建议”像标签使用jQuery的自动完成搜索自动完成功能。

我需要提供Web服务的jQuery给它基于什么是用户键入的建议列表。 我看到2种方式实现Web服务:

1)只是存储在数据库中的所有的标签和使用用户的输入作为前缀搜索数据库。 这是简单的,但我很担心延迟。

2)使用过程中的线索来存储所有的标签和搜索它匹配的结果。 由于一切都将在进程,我希望这能有多大更低的延迟。 但也有一些困难: - 什么是初始化线索的过程中启动了一个好办法? 推测我会保存标签数据的数据库,并检索它们,把它们变成一个线索,当我弗里斯特启动过程。 但我不知道怎么样。 我使用Python / Django的。 - 当一个新的标签是由用户创建的,我需要插入新的标签进入该线索。 但是,假设我有5 Django的过程,因此5次尝试,我怎么告诉其他4次尝试,他们需要插入一个新的标签呢? - 如何确保线索是线程安全的因为我的Django的进程将被线程(我使用的mod_wsgi)。 还是我不担心,因为Python的GIL threadsafty? - 任何方式我可以存储该线索中使用的标签的频率呢? 我怎么知道什么时候该标签的字符串结束,什么时候的频率开始 - 例如。 如果我存储apple213到线索,它是“苹果”与频率213或者是“apple2”随频率的13?

对上述问题或在不同的方法有什么建议任何帮助将非常感激。

--------------解决方案-------------

做了一堆伪标签,贴在他们的数据库,并测量延迟为典型的查询-在你测量的东西,不要在意延迟。 根据您的数据库设置,您的等待时间可能就好了,你就放过浪费的担忧。

不要总是担心线程,虽然- GIL不会使竞争条件消失(可能会控制线程之间的任何伪指令边界交换机,以及当一个潜在的延伸的C代码或内建正在执行)。 请先检查threadsafety你使用(见PEP 249)的DB API模块的属性,然后用适当的锁定产卵执行上的Queue.Queue并返回数据库的交互(接收请求专用的线程池小在另一个结果,正常的架构健全,易于穿线在Python)。

我将使用第一个选项。 “KISS” - (保持简单愚蠢)。

对于少量的数据不应该有太大的延迟。 我们经营的同一种东西的名称搜索和结果的出现很快就几千行。

希望帮助,

玩笑

分类:蟒蛇 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.159 (s). 10 q(s)