2011-07-20 27 views
0

我正在编写一个类似于酒店或飞行取景器的网络应用程序。我看过例如http://www.momondo.com/过滤AJAX查询数据的最佳方式在哪里?

该网站向您展示了1700家酒店,您可以过滤。您可以选择3次启动,重新启动3次,删除2次启动,房间互联网,价格范围,...但过滤器似乎不使用网络对数据库进行另一次查询。

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

您认为如何?浏览器支持1700家酒店加载内存的信息?

回答

0

现代网络浏览器支持什么被称为'localstorage'或'Web Storage'。

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

如果你正在处理大量的数据集,你会提高浏览器的限制,不得不让人们重新配置他们的浏览器,但你可能不会让他们一次显示500MB的数据,所以无论如何,从网络的角度来看,将数据划分为更小的块可能会更有效。

至于“最佳”解决方案......它可能取决于他们将需要多少数据相对于整个数据集。我正在处理一些数千万条记录的数据库,因此我过滤服务器端,但如果他们想在初始搜索后进行额外的过滤,最好是在客户端进行,以便卸载处理和减少网络流量。

+0

例如,1600文本与酒店信息的结果将不会有问题性能为过滤器没有? – Rom

+0

@Joe localstorage或webstorage在所有浏览器上都受支持吗? – Awea

+0

@Awea:目前正在使用的所有浏览器?但是,您可以使用JavaScript检测对localstorage的支持,然后使用备用方法或优雅地降级,如果您无法在客户端执行此操作。 – Joe

0

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

我不这么认为。也许你可以用ajax调用一个脚本来响应过滤的数据来显示。 我认为客户的浏览器更轻松^^。

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

是的,它必须与光DATAS但长延时巨额DATAS(大阵列* 1700)的工作 你可以只发酒店数量有限与阿贾克斯调用的脚本过滤谁DATAS发送。

+0

那么你认为当用户想要过滤时,更好的解决方案是对数据库的一个查询吗? – Rom

+0

例如:一个查询得到相应的城市(自动完成),另一个查询与选定的城市和互联网在房间的ID,等等... – Awea

1

是的,你可以一直避免使用网络,如果你确定1700左右是你的酒店总数。当然,浏览器可以处理。只要离线处理dom,你应该没问题(下面有更多解释)。当然,随着酒店数量的增加,您可能会考虑将过滤移到服务器端。

所以关键是做离线的dom变化。我的意思是浏览器需要一些时间来重新绘制dom,并且每当你做任何dom改变时重新绘制dom。因此,如果你正在做1760个jQuery元素中的.hide()和.show(),那么这将是相当缓慢的原因。

解决方案:在所有酒店元素上使用jquery.detach(),然后执行隐藏/显示。与...不同。删除()它会保留绑定到这些元素的任何事件,当你将它们添加回dom时。通过隐藏/显示“脱机”(当它们脱离dom时),只会在你将它们添加回来时使dom重新绘制(昂贵的操作)。

相关问题