我正在使用jQuery/AJAX开发autosuggest(autocomplete)功能。问题是我将用于此目的的 MySQL 表有 30,000 条记录,并且服务器负载很高。所以我不想每次访问者按下按钮时都查询 MySQL 表,我宁愿每个用户会话查询一次。有没有实现此目的的选项?也许缓存或检索一次 30,000 条记录并将其存储在某个地方?
谢谢
佐尔卡
使用缓存选项。但它可以用户输入以前的值。其他明智的是它击中了服务器。
$(function() {
$("#empname").autocomplete(
'getNames.action',
{
scroll:false,
minChars:1,
delay:0,
width:200,
autoFocus:true,
cache:true,
formatResult: function(data, value) {
return value.split(".")[0];
}
});
});
30,000 条记录,使用一个好的密钥,您可以很快获得结果。
通常,您不希望每次按键都执行AJAX,但是您需要为用户提供键入的延迟(例如500ms)。
var t;
$('#textbox').keyup(function() {
if (t) clearTimeout(t);
t = setTimeout(function() {
// AJAX call here
}, 500);
});