繁体   English   中英

优化jQuery速度

[英]Optimizing jQuery speed

我正在尝试使用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秒的加载页面,还是可以以某种方式使其变得更出色? :)

谢谢你的帮助!

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

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

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

如果查找仍然花费大量时间,则可能需要考虑优化PHP脚本而不是jQuery部分。 诸如使用索引等的数据库之类的东西。

看起来像您使用以下脚本: 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对象,它应该能以更快的速度工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM