Php 关于自动完成性能的建议
我需要提高自动完成脚本的性能。我需要的是,当我单击输入框elementID时,它将填充search.php return byPhp 关于自动完成性能的建议,php,jquery,ajax,performance,autocomplete,Php,Jquery,Ajax,Performance,Autocomplete,我需要提高自动完成脚本的性能。我需要的是,当我单击输入框elementID时,它将填充search.php return byjson\u encode中的选择列表。以下脚本正在运行。但每次我点击输入框时,它都需要一段时间才能生成列表 ("#elementID") .autocomplete({ source: function(request, response) { $.ajax({ url: "search.php", dataType: "json",
json\u encode
中的选择列表。以下脚本正在运行。但每次我点击输入框时,它都需要一段时间才能生成列表
("#elementID")
.autocomplete({
source: function(request, response) {
$.ajax({
url: "search.php",
dataType: "json",
success: function(data){
response(data[0]);
}
});
},
minLength: 0,
delay: 0,
select: function(event, ui){
$(this).val(ui.item.value);
},
change: function( event, ui ) { //remove if not click from drop down
if (!ui.item) {
$(this).val("");
}
}
})
.click(function() { //Click to activate
$( "#elementID" ).autocomplete("search", " ");
});
在search.php中
$ocidb ->strTable = "table";
$ocidb ->strField = "column1";
$ocidb ->strCondition = "coulmn1 is not null";
$result = $ocidb->ORASelectRecord();
echo json_encode(filter_unique_array($result, 'coulmn1'));
return;
想知道我做的事情是否正确,或者有其他正确的方法吗?首先,你应该检查缓慢的根源在哪里。在Chrome开发者工具中,转到网络选项卡,查看加载自动完成列表所需的时间: 这将告诉您问题是在服务器端还是在客户端。如果时间或延迟加在一起大于300ms,那么等待服务器的时间可能非常明显。然后,您可能希望对服务器端代码进行基准测试,看看瓶颈在哪里。从代码中,您可能希望在数据库中而不是在PHP代码中强制唯一性 如果服务器及时响应,那么问题可能在于JavaScript。尝试寻找一个不同的自动完成库,或者尝试让它缓存DOM元素,而不是每次都重新创建它们
一般来说,某种缓存和可能的预取(在用户请求之前加载初始结果集)在典型情况下会有所帮助。首先,您应该检查缓慢的来源。在Chrome开发者工具中,转到网络选项卡,查看加载自动完成列表所需的时间: 这将告诉您问题是在服务器端还是在客户端。如果时间或延迟加在一起大于300ms,那么等待服务器的时间可能非常明显。然后,您可能希望对服务器端代码进行基准测试,看看瓶颈在哪里。从代码中,您可能希望在数据库中而不是在PHP代码中强制唯一性 如果服务器及时响应,那么问题可能在于JavaScript。尝试寻找一个不同的自动完成库,或者尝试让它缓存DOM元素,而不是每次都重新创建它们
一般来说,在典型情况下,某种缓存和可能的预取(在用户请求之前加载初始结果集)应该会有所帮助。您在php脚本上检索了多少条记录?你试过使用分页吗?您是否尝试过在客户端和/或服务器端使用缓存?如何对自动完成进行分页?有什么好的例子吗?可以使用[LIMIT{[offset,]row_count]进行分页在服务器端的查询中。要添加缓存DOM元素,您可以按照以下链接进行操作,因为我猜您正在使用jqueryui。您在php脚本上检索了多少记录?您是否尝试过使用分页?您是否尝试过在客户端和/或服务器端使用缓存?如何在自动完成上进行分页?是否有好的示例?分页可以使用[LIMIT{[offset,]row\U count]完成在服务器端的查询中。要添加缓存DOM元素,您可以按照以下链接进行操作,因为我猜您正在使用jqueryui。很抱歉,如何将其设置为缓存DOM元素?在很大程度上取决于库的工作方式,您需要对其进行一些修改。很抱歉,如何将其设置为缓存DOM元素?在很大程度上取决于库的工作方式,您需要对其进行一些修改。