优化jQuery速度

时间:2011-04-08 09:31:33

标签: php jquery mysql optimization performance

我正在尝试使用jQuery的花哨自动完成功能,但我在执行脚本的速度方面存在问题。代码段:

var data =  <?php if(isset($names)) { echo json_encode(implode(" | ", array_unique($names))); } else { echo "null"; } ?>;
if (data != null) {
    data = data.split(" | ");
    $("#search_names").autocomplete(data);
}

我的数据来自某些MySQL表,在jQuery将其传递给输入字段之前由PHP处理。当我查看这样的页面的来源时,那里(显然)有大量的文本,页面本身在5-10秒之间加载...

所以我想知道有没有办法以某种方式加速我的剧本?据我所知,无论是在同一个文件还是其他包含的文件中,都会有始终这么多文本进行处理,但我只是想知道因为数据太多而无法加载10秒加载页面不知何故让它变得更棒? :)

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您绝对应该使用remote autocomplete mechanism,而不是每次都将所有数据填入文档中。

  

第一个参数可以是远程数据的URL或本地数据的数组。

     

对于远程数据:当用户开始键入时,请求被发送到指定的后端(“my_autocomplete_backend.php”),其中包含名为q的GET参数,该参数包含输入框的当前值和参数“limit”使用为max选项指定的值。

如果查找仍然花费很多时间,您可能需要考虑优化PHP脚本而不是jQuery部分。像使用索引的数据库等......

答案 1 :(得分:2)

看起来您正在使用以下scritp:http://docs.jquery.com/Plugins/autocomplete

你应该使用Ajax来做这种事情,例如:

 $("#search_names").autocomplete('/ajax/autocomplete.php');

然后在你的自动完成HTML中你应该做的事情:

<?php
    //Database
    //Do Query: SELECT item FROM content WHERE {$escaped_q} ORDER BY item_hits DESC LIMIT {$escaped_limit}

   //echo json_encode($results);
?>

将结果打印为JSON对象,它应该可以更快地工作。