首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax自动完成-如何让它更快?

问Ajax自动完成-如何让它更快?
EN

Stack Overflow用户
提问于 2011-07-12 16:29:50
回答 3查看 3.4K关注 0票数 1

我们目前正在通过mySQL运行ajax自动补全脚本,如下所示:

代码语言:javascript
复制
<?php
$q = strtolower($_GET['term']);
if (!$q) return;
$q = noescape($q);

if (is_numeric($q)){
    $q = mysql_query("SELECT * FROM `blah` WHERE `id` LIKE '" . $q . "%' DESC LIMIT 10");
}else{
    $q = mysql_query("SELECT * FROM `blah` WHERE `name` LIKE '" . $q . "%' DESC LIMIT 10");
}

$json = array();

while ($r = mysql_fetch_array($q)){
    $json[] = array(
        "v"     => $r['v'],
        "p"     => $r['p'],
        "s"     => $r['s'],
        "l"     => $r['v'] . ', ' . $r['s'] . ' (' . $r['p'] . ')'
    );
}

echo json_encode($json);
?>

我们希望让我们的搜索速度更快,这样它就不需要调用数据库并减慢速度。

我在看一些人的自动补全,在做搜索的时候--他们的ajax调用了一个"search.ds?query=blah“文件--这是什么?我们怎么能这么快地模仿一些东西呢?

当下载它提示的.ds文件时,我们打开它,它包含的所有内容都是匹配我们搜索的内容的数组,所以他们没有将所有数据都存储在其中。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-12 16:41:27

如果你想让你的自动补全更快,你可以做一些事情:

1)考虑是否需要数据库查询(如果您从不或很少需要更改自动补全的数据,则答案是否定的;如果数据是动态的,如朋友列表,答案是肯定的)

2)将覆盖索引放在要进行搜索的表/列上

3)在浏览器中缓存你的结果,避免调用太多

4)永远不要执行select *查询!您将浪费大量时间来检索您可能不会使用的数据!只需选择您需要的字段!

5)在对id进行查找时,不要像这样使用: use =it快得多

票数 6
EN

Stack Overflow用户

发布于 2011-07-12 16:34:14

如果您使用是internet explorer,它不知道内容类型为application/json的资源。这背后的原因是,Internet Explorer无法将application/json模拟类型与安装在客户端上的应用程序相关联。

在您的例子中,您可以将内容类型设置为text/json,或者我想只设置为application/json。

更新:

你也可以使用this,这里的答案建议使用application/json而不是application/json;charset=UTF-8

票数 1
EN

Stack Overflow用户

发布于 2011-07-12 18:06:57

  • 在此ajax响应中打开gzip压缩。这几乎是必须的,因为它减少了响应大小。
  • 在搜索查询中使用的列上添加数据库索引。如果查询使用了几个过滤参数(例如:where a = 5 and b = 6),那么还要创建复合索引。这样查询速度通常会更快。
  • 会在ajax响应中添加缓存头,并提供方便的过期时间。当用户再次使用相同的搜索关键字时,这可以减少对web服务器的重复请求。
  • 添加了对最流行和最新请求的服务器端缓存。这样,当不同的用户使用相同的完全构造的keywords.
  • Use作为ajax响应而不是JSON数据时,您将减少数据库连接/查询的数量。然后在客户端使用yourHTMLelement.innerHTML = ajaxResponseData;。这样,浏览器将不需要解析JSON和构造HTML DOM。这意味着数据表示将更快。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6661420

复制
相关文章

相似问题

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