假设我在数据库中有数千个项目,并且我想使用某种自动完成功能(如jQuery自动完成功能)来搜索它们,但我不想使用ajax,因为每次按键都会发出请求数据库中。
我可以在没有ajax的情况下使用这个。
$( function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++"
];
$( "#tags" ).autocomplete({
source: availableTags
});
} );
但如果因为我有数以千计的商品,这也会对服务器和网站的速度产生影响吗?
是否明智地能够首先获取所有记录并将它们放在一个单独的文件中,然后在那里搜索它,以便使网站更快速,更少负载在服务器上?
答案 0 :(得分:2)
如果您有数千条记录,当然您需要使用ajax,否则您将在客户端加载大量数据,将整个信息暴露给想要窃取它的人,同时放慢速度下载页面。
有两种减少请求的方法:
去抖动只是一个计时器,在执行请求之前等待X毫秒。如果用户在此计时器完成之前键入了某些内容,则取消它并启动另一个计时器。
下行:需要对去抖时间进行微调,以免用户感到有些滞后。
您可以在每次按键时触发请求,但如果按下其他键,则取消之前的请求。这可能会减少服务器上的负载,因为请求可能尚未完成。
下行:如果用户输入的速度比服务器响应时间快,则只会减少服务器上的负载。
如果你结合上述两种技术,你会得到一个好的结果,因为你可以减少去抖时间以产生难以察觉的延迟,如果用户输入缓慢,也可以取消待处理的请求。