搜索过滤器,我应该在客户端还是服务器端做


Search Filter, should I do it client side or server side?

我有一个返回结果列表的搜索表单,我也有一个过滤区域,用户可以过滤结果(价格等)。我的问题是,我应该通过客户端javascript进行过滤还是应该在MYSQL选择中进行服务器端过滤?

问题是,过滤将有相当多的级别,所以当把它放入mysql选择可能会变得相当繁琐。

这取决于您是否使用分页

如果您不为搜索结果分页,而是将每一行返回给客户端,则应该过滤客户端,因为您知道客户端拥有所有数据。

如果你的搜索结果是分页的,只显示第一个例如10个搜索结果,一个过滤器需要在服务器端完成,包括所有尚未在客户端分页的行。

这取决于应用程序的性质:

  • 有多少数据?
  • 你多久查询一次?
  • 页面需要多长时间重新加载一次?

。Facebook会向你发送你的整个好友列表,所以当你在评论中输入某人的名字时,客户端应用程序会注意到它(并建议你自动完成)。它是在客户端完成的,因为:

  • 总的数据量比较小(1000个朋友的名字*每个20字节~= 20kB的数据,比一个网站上的大多数图片都要少。
  • 它被查询了很多次,几乎每次有人按下文本框中的一个键
  • 应用程序中的大多数事情都可以在不离开页面的情况下完成,因此无需重新加载页面;数据只需要加载一次。

一般来说,让客户端做更多的工作意味着你的应用程序可以更容易地扩展,因为你得到的用户越多,"cpu能力"就越强。你得到的。

如果把它放在客户端,你应该意识到后果。

  1. 您可能无法使用MySQL的一些好东西,如索引或缓存来优化您的结果。这些经过精心设计和测试的功能总是比你的好。

然而,我认为在客户端这样做是完全可以的,如果你对这些后果很酷。

它应该在您的SQL服务器端。

如SELECT * WHERE price> 100

如果你在客户端做,你需要发送很多数据从服务器到客户端。