我正在考虑如何建立像twitter这样的广告网站。
这意味着,大多数用户不会通过浏览器访问该网站,他们应该在他们的PC或智能手机上运行专用的客户端应用程序。然后他们设置了一些关于他们喜欢什么样的广告的过滤器。当满足其需求的新帖子出现时,客户将发出通知 为了使该客户端尽可能实时,它必须在很短的时间间隔内轮询服务器。
问题是,我应该在客户端轮询时在服务器端进行过滤,还是应该将所有新帖子转移到客户端并让客户端进行过滤?
进行服务器端过滤可能会导致服务器CPU周期过多,但盲目地将每个帖子转移到客户端可能会浪费大量带宽。
只是一场大脑游戏。 :)
答案 0 :(得分:1)
在服务器端过滤数据我在其上应用一个简单的过滤查询(SELECT * FROM tweets WHERE category IN (1,2,3,4,5,)
),性能不会太高 - 远远低于将所有可用数据分发给所有客户端。
答案 1 :(得分:1)
如果通过过滤意味着SQL查询,那么在服务器上创建它当然会更好。即使您制作了数千个SELECT,从任何SQL数据库查询都非常轻松。
答案 2 :(得分:0)
哦,特别是如果您还考虑部署到移动设备上,/始终/在服务器端过滤。也许主要问题是找到将新帖子链接到过滤器的适当数据结构,这样既不昂贵。并且您还可以在memcached中保留最常被请求的条目和过滤器,这样您就不会始终访问数据库。
完全没有意义将所有内容传输到客户端,然后不显示它。
答案 3 :(得分:0)
我认为在服务器上过滤会更好地减少传输的数据量(特别是对于智能手机用户而言,这将是一个巨大的收获)
答案 4 :(得分:0)
正如其他人所指出的,发送不会被使用的数据是没有意义的。人们只想下载他们可以使用的东西。如果有人支付了移动数据费用,而您的应用向他们展示了2个广告,并且使用了1000个数据广告,他们就会停止使用您的服务。
您可以在数据库端按特定类型进行过滤,也可以在将最终数据发送回客户端之前,通过服务中的一些更深入的业务逻辑进行过滤。
重点是;低数据传输,更快的响应,更快乐的用户: - )