Ajax请求/响应:如何使它们快速闪电?

时间:2010-12-09 22:15:08

标签: javascript ajax json performance

我遇到了一个与Google Suggest非常相似的网站。当您在搜索框中键入2个字符时(例如,如果您正在搜索“canon”产品,则为“ca”),它会产生4个Ajax请求。每个请求似乎都在不到125毫秒的时间内完成。我随便观察到Google Suggest需要500毫秒或更长时间。

在任何一种情况下,两个网站都很快。 为了获得超快的请求/响应,应该遵循哪些一般概念/策略?谢谢。

编辑1:顺便说一句,我计划为电子商务网站搜索实现自动完成功能,其中1.)根据所输入的内容提供搜索建议,以及2.)基于潜在产品匹配的列表到目前为止输入的是什么。我正在尝试类似于SLI Systems搜索的内容(例如,请参阅http://www.bedbathstore.com/)。

4 个答案:

答案 0 :(得分:9)

这有点像“一段字符串有多长”的问题,因此我将其作为社区维基的答案 - 每个人都可以随意加入。

我说这是确保:

的问题
  1. 您要查询的服务器/服务器场/云的大小正确根据您投入的负载和/或根据该负载调整大小
  2. 服务器/服务器场/云连接到良好的快速网络主干
  3. 您正在查询服务器端(数据库表或有什么)的数据结构被调整为尽快响应这些精确请求
  4. 你没有做出不必要的请求(HTTP请求的设置成本很高;你想避免在一个人做的时候解雇其中的四个);您可能还想进行一些滞后管理(在人们输入时延迟请求,仅在停止后发送几秒钟,并在重新启动时重置该超时)
  5. 您可以通过线路发送尽可能少的信息来合理地用于完成工作
  6. 您的服务器配置为重新使用连接(HTTP 1.1)而不是重新建立它们(在大多数情况下这将是默认设置)
  7. 你正在使用合适的服务器;如果一个服务器有大量的保持活动请求,它需要被设计成优雅地处理它(NodeJS是为此设计的,作为一个例子; Apache不是,特别是,虽然它当然是极端有能力的服务器)
  8. 您可以缓存常见查询的结果,以避免不必要地转到底层数据存储

答案 1 :(得分:2)

您需要一个能够快速响应的Web服务器,但这通常不是问题。您还需要一个快速的数据库服务器,并且可以非常快速地查询哪些热门搜索结果以“ca”开头。 Google根本没有使用传统数据库,而是使用大型服务器集群,类似Cassandra的数据库,并且大部分数据都保存在内存中以便更快地访问。

我不确定你是否需要这个,因为只使用运行PHP和MySQL的单个服务器就可以获得相当不错的结果,但是你必须对存储和检索它的方式做出一些很好的选择。信息。如果您运行如下查询,则不会获得这些快速结果:

select
  q.search
from
  previousqueries q
where
  q.search LIKE 'ca%'
group by
  q.search
order by
  count(*) DESC
limit 1

只要不到20人使用过您的搜索,这可能会有效,但在您达到100.000之前可能会失败。

答案 2 :(得分:1)

您可以从为您的产品执行快速搜索引擎开始。查看Lucene的全文搜索。它可用于PHP,Java和.NET等。

答案 3 :(得分:1)

此链接说明了他们如何制作instant previews fast。整个网站highscalability.com是一个信息丰富的网站。

此外,您应该将所有内容存储在内存中,并且应该避免从光盘中检索数据(慢!)。例如Redis闪电般快!