Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 过滤AJAX查询数据的最佳方面在哪里?_Javascript_Ajax_Memory_Browser - Fatal编程技术网

Javascript 过滤AJAX查询数据的最佳方面在哪里?

Javascript 过滤AJAX查询数据的最佳方面在哪里?,javascript,ajax,memory,browser,Javascript,Ajax,Memory,Browser,我正在编写一个类似于hotels或flying finder的web应用程序 例如,我看到了 该网站向您展示1700家酒店,您可以进行筛选。您可以选择3个开始,重新选择3个开始,删除2个开始,在房间上网,价格范围。。。但是过滤器似乎不使用网络对数据库进行另一次查询 是否在客户端的浏览器中过滤结果 你觉得怎么样?浏览器支持在内存中加载1700家酒店的信息?它在客户端的浏览器中过滤结果? 我不这么认为。可能您可以使用ajax调用脚本来响应要显示的过滤数据。 我认为对于客户的浏览器来说更轻 你怎么看?

我正在编写一个类似于hotels或flying finder的web应用程序

例如,我看到了

该网站向您展示1700家酒店,您可以进行筛选。您可以选择3个开始,重新选择3个开始,删除2个开始,在房间上网,价格范围。。。但是过滤器似乎不使用网络对数据库进行另一次查询

是否在客户端的浏览器中过滤结果


你觉得怎么样?浏览器支持在内存中加载1700家酒店的信息?

它在客户端的浏览器中过滤结果?

我不这么认为。可能您可以使用ajax调用脚本来响应要显示的过滤数据。 我认为对于客户的浏览器来说更轻

你怎么看?浏览器支持在内存中加载1700家酒店的信息?

是的,它必须适用于轻型数据,但对于大型数据(大型阵列*1700)具有长延迟
您只需使用Ajax调用的脚本发送有限数量的酒店,Ajax会过滤要发送的数据。

现代web浏览器支持所谓的“”或“”

这基本上允许您将大量数据加载到客户机中,并在本地使用数据库操作。如果您的数据集大小合理(低于几MB),这可能是有效的,因为您不存在尝试在服务器上执行所有操作的扩展问题

如果您处理的是巨大的数据集,您将面临浏览器限制,必须让人们重新配置浏览器,但您可能不会让他们一次显示500MB的数据,因此从网络的角度来看,将数据划分为更小的数据块可能更有效


至于“最佳”解决方案。。。这可能取决于相对于整个数据集,他们需要多少数据。我处理的一些数据库有几千万条记录,所以我在服务器端进行过滤,但是如果他们想在初始搜索后进行额外过滤,我最好在客户端进行过滤,只是为了减轻处理负担并减少网络流量。

是的,如果您确定酒店总数为1700家左右,您可以避免一直使用网络。当然,浏览器可以处理这个问题。只要离线处理dom,就可以了(下面有更多的解释)。当然,随着酒店数量的增加,您可能会考虑将过滤移动到服务器端。 因此,关键点是离线进行dom更改。我的意思是浏览器需要一些时间来重新绘制dom,并且每次更改dom时都会重新绘制dom。因此,如果您正在对dom中的1700个jquery元素执行.hide()和.show(),这将是速度相当慢的原因


解决方案:对所有hotel元素使用jquery.detach(),然后执行隐藏/显示。与.remove()不同,当您将这些元素添加回dom时,它会将所有事件绑定到这些元素。通过“离线”隐藏/显示(当它们与dom分离时),将使dom在您重新添加时只重新绘制一次(这是一项昂贵的操作)。

那么您认为更好的解决方案是在用户需要筛选时对数据库进行一次查询吗?例如:一次查询获得对应的城市(自动完成),另一个查询具有选定城市的id和房间内的互联网等。例如,如果有1600个包含酒店信息的文本结果,则过滤器的性能不会出现问题否?@Joe localstorage或webstorage在所有浏览器上都受支持?@Awea:当前使用的所有浏览器?不可以。但是您可以使用JavaScript来检测对本地存储的支持,然后使用其他方法,如果您不能在客户端完成所有操作,则可以优雅地降级。@Joe:JavaScript,比如modernizer^^