我正在为公司构建“客户查找”工具。员工将使用它来提取其客户的记录。
我很好奇,这是更好的,为什么。
使用php + ajax通过搜索框的onkeyup搜索。这将是对密钥向上的实时搜索,每次密钥向上时都会查询数据库。我最有可能使用WHERE CustomerName LIKE '%blah blah%'
来解决这个问题,客户数据库最终可能在某个时候变得非常庞大……只是想补充一下。有多大?好吧,这取决于公司。
OR
继续进行操作,并通过一个查询呼叫所有客户,所有查询都填充在网站的列表中。当工作人员在搜索框中键入内容时,预先填充的列表将被过滤掉。 同样,客户数据库可能会很大。
无论哪种方式,其大量数据都将通过排序。我需要保留这种“ onkeyup”样式的方法,而无需使用“搜索”按钮。
我已经编码了预填充列表的部分,并查看了ajax选项;但是,一旦客户列表开始增长,我就担心性能。因此,这就是这个问题的出处。这篇文章不是要获得特定的代码,只是想学习处理该项目以及将来的类似项目的最佳方法。
我将继续发布当前用于过滤预填充数据的代码,仅供记录...
$(".searchbox").on('keyup', function () {
if ($(this).val() != '') {
search(this);
}
else {
$(".data").show();
$.each($(".searchbox"), function () {
if ($(this).val() != '') {
$(this).keyup();
}
});
}
});
function search(ele) {
var val = $(ele).val() || '';
if (val == '')
return;
var dataclass = $(ele).attr('data-class');
var SearchInText = '';
$.each($(".data:visible"), function () {
SearchInText = $(this).find("td." + dataclass).text();
if (SearchInText.indexOf(val) == -1)
$(this).hide();
});
}
答案 0 :(得分:1)
如果您希望客户数据库很大,那么一次调用将所有浏览器加载到其中并不是一个好的选择。您将必须根据用户输入来实时加载客户。
实时加载(onkeyup)可能会给数据库带来很大压力。但是,您可以通过缓存进行改进。
由于仅从数据库中检索“客户名称”,因此可以使用缓存机制将客户名称保留在内存中,并将过滤后的结果发送到浏览器。这样,您就可以避免对数据库造成压力。
您应该延迟键盘处理程序,以最大程度地减少对服务器的请求。
您可以在以下链接中找到操作方法。
How to delay the .keyup() handler until the user stops typing?