我目前正在建立一个网站,用于搜索外部数据库并显示与给定搜索字符串匹配的记录。搜索是实时的,因此在用户输入时会显示结果。
现在我采用的第一种(也是当前的)方法是页面实际连接到mySQL服务器并通过AJAX检索内容,用户在搜索框中输入每个字母。
现在我开始查看JSON对象(我最近才开始构建网站),并且想知道在开始时将整个数据库加载到JSON对象中是否是个好主意,然后查看在搜索时
这是一个好主意吗?会更快吗?提前谢谢
答案 0 :(得分:2)
这完全取决于数据的大小和查询的复杂性。如果您可以提前将数据合理地发送到客户端然后在本地搜索,那么确定,这很有用,因为它全部是本地的,并且您没有查询服务器的延迟。但是如果您有大量数据,或者查询很复杂,那么在服务器上进行查询可能会更有意义。
没有一个适合所有人的解决方案,它依赖于数据。
...并通过AJAX检索内容,用户在搜索框中输入每个字母。
这通常是矫枉过正的。通常情况下,你要等到用户输入暂停之后才开始关闭ajax调用,这样如果他们快速连续输入“james”,你会搜索“james”而不是搜索“j”,然后“ja” “然后是”果酱“,然后是”jame“,然后是”james“。
例如,假设您的搜索触发器是keypress
事件。这将是一种相当普遍的方法:
var keypressTimer = 0;
function handleKeypress() {
if (keypressTimer) {
cancelTimeout(keypressTimer);
}
keypressTimer = setTimeout(doSearch, 100); // 100ms = 1/10th of a second
}
function doSearch() {
var searchValue;
keypressTimer = 0;
searchValue = /*...get the search value...*/;
doAjaxCallUsing(searchValue);
}
这被称为“去抖动”输入(来自硬件工程,与按下时键的机械和电气“弹跳”有关)。