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

时间:2011-12-03 13:36:13

标签: php javascript jquery mysql filtering

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

问题是,过滤会有很多级别,所以当把它放到mysql中时,选择可能变得非常繁琐。

4 个答案:

答案 0 :(得分:7)

这取决于您是否使用分页

如果您没有对搜索结果进行分页,但是每行返回客户端,则应该过滤客户端,因为您知道所有数据都在客户端。

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

答案 1 :(得分:4)

这实际上取决于您的应用程序的性质:

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

即,facebook会向您发送您的整个朋友姓名列表,因此当您在评论中键入某人名称时,客户端应用会注意到它(并建议您自动完成)。它完成了客户端,因为:

  • 整个数据量相对较小(1000个朋友名称*每个20字节〜= 20kB的数据,少于网站上的大多数图像,gzip它甚至更少)
  • 它被查询很多,几乎每次有人按下文本框中的键
  • 应用程序中的大部分内容都可以在不离开的情况下完成,因此需要重新加载页面:数据只需加载一次。

一般来说,让客户做更多工作意味着您的应用程序可能更容易扩展,因为您获得的用户越多,您获得的“CPU功率”就越多。

答案 2 :(得分:0)

它应该是SQL中的服务器端。

像SELECT * WHERE价格> 100

如果在客户端执行此操作,则需要从服务器向客户端发送大量数据。

答案 3 :(得分:0)

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

  1. 您可能需要通过Internet传递的数据远远超过您想要的数据。

  2. 您可能无法使用索引或缓存等MySQL的优点来优化结果。这些精心设计和测试的功能总是比你的好。

  3. 但是,如果您对这些后果感到满意,我认为在客户端进行此操作是完全可以的。