首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化jQuery速度

优化jQuery速度
EN

Stack Overflow用户
提问于 2011-04-08 09:31:32
回答 2查看 363关注 0票数 0

我正在尝试使用jQuery的高级自动完成函数,但我在执行脚本的速度上遇到了问题。代码片段:

代码语言:javascript
复制
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将其传递给输入字段之前由jQuery进行处理。当我查看这类页面的源代码时,有大量的文本(很明显),页面本身在5-10秒之间加载.

所以我想知道有什么办法来加速我的剧本吗?我知道,无论是在同一个文件中还是在其他包含的文件中,总是会有这么多的文本需要处理,但我只是想知道,我是因为这么多数据而被10秒钟的加载页面困住了,还是可以让它变得更棒呢?:)

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 09:39:14

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

您应该在这种情况下使用Ajax,例如:

代码语言:javascript
复制
 $("#search_names").autocomplete('/ajax/autocomplete.php');

然后,在您的自动完成html中,您应该执行如下操作:

代码语言:javascript
复制
<?php
    //Database
    //Do Query: SELECT item FROM content WHERE {$escaped_q} ORDER BY item_hits DESC LIMIT {$escaped_limit}

   //echo json_encode($results);
?>

将结果打印为JSON对象,它的工作速度应该要快得多。

票数 2
EN

Stack Overflow用户

发布于 2011-04-08 09:34:35

您肯定应该使用远程自动完成机制,而不是每次都将所有数据填充到文档中。

第一个参数可以是远程数据的URL,也可以是本地数据的数组。 对于远程数据:当用户开始键入时,请求将发送到指定的后端("my_autocomplete_backend.php"),其中包含输入框的当前值的名为Q的GET参数,以及一个参数“极限”,其中指定的值为max选项。

如果查找仍然需要很长时间,那么您可能需要考虑优化PHP脚本,而不是jQuery部件。比如数据库是否使用索引等等.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5593167

复制
相关文章

相似问题

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