繁体   English   中英

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

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

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

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

这取决于你是否使用分页

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

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

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

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

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

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

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

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

像SELECT * WHERE价格> 100的东西

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM