提问人:Prashant Singh 提问时间:9/26/2012 更新时间:6/10/2021 访问量:3151
服务器端处理还是客户端处理?
Server side processing or client side processing?
问:
我开发了一个比较网站,用于比较在印度在线销售的任何产品。目前,该网站完全是客户端:-
- 接受用户输入。
- 发出 20-30 个 AJAX 请求并从所有主要在线商店获取结果。
- 使用一些客户端脚本对结果进行排序,并以最合适的方式显示结果。
弊:-
- 我的客户端代码可供所有人使用。它的 javascript。
- 更容易出现浏览器错误。
- 不健壮。
使其在服务器端完成后的缺点:-
- 考虑到我网站的流量,服务器负载会增加,因为它将与客户互动的时间更长。
- 从各种网站获取值可能需要长达 10 秒(最多)。服务器在那个时间参与。如果我有 500 个负载,请考虑负载 高峰时段的访客/分钟。
优势:-
- 我的代码安全可靠
- 客户端的处理将是最少的。甚至可以在手机和其他设备上轻松工作。
我想在实际实施这些问题之前分析这些问题。谁能建议我应该为我的网站选择什么?哪种方法更适合我?
如果我的问题模棱两可,请发表评论。
答:
我不明白你为什么要采取“更容易出现浏览器错误”。如果您向浏览器发送正确的库/代码,Javascript 将完全按照您想要的方式运行。
您可以查看哪个浏览器正在执行请求,并向其发送正确的代码段(读作:如果您有一些代码可以在FF和Opera中工作,但不能在IE中工作,请编写该代码的两个版本,每组浏览器一个。 有一些库可以帮助您做到这一点。
此外,比较不是应该在服务器端进行的任何事情。所以,如果你的网站上有很多流量,那么客户端工作应该可以处理这种事情。
关于代码保护,你是对的。服务器端不会让任何人读取你的代码。因此,您必须确定服务器负载是否比阅读代码的人更重要。
另请记住,您可以对代码进行混淆处理。我知道这不是最好的解决方案,但它会让很多人不读它。
编辑:
让它在服务器端将使事情在所有设备上按预期工作(正如您已经说过的那样)。 但是,您需要做一些事情来保持服务器的负载不会达到 100%。
Chandra Sekhar Walajap
已经告诉过你对结果使用某种缓存的好处。我个人会走得更远一点,因为你只是在抓取所有这些页面。
我会创建一个刮板,比方说,每 24 小时运行一次,并获取/抓取每个产品。然后我会把所有这些产品保存在某个地方(在数据库中读取或任何你想要的)。这样,当用户请求在产品 A 和 B 之间进行比较时,您就不需要获取/抓取所有网站,而不必在保存它们的地方查找这些产品并将它们展示给用户。
请注意,只有当您有很多用户比较大量产品时,这才会保留大量带宽。
另一方面,如果你有几个用户只搜索几个产品,那么制作这种解决方案根本不会给你带来好处,因为你知道,每 24 小时从所有站点获取所有内容都是大量的使用,无论是 CPU 还是带宽。
关于服务器负载:我不能说。它取决于太多的事情,几乎不可能说出来。你需要考虑你正在抓取的网站有多大,每个网站上有多少产品?您使用的是什么硬件?最好使用 cURL 制作一些简单的示例并从其中一个站点获取所有内容。然后看看这对性能有何影响并做出决定。
评论
首先,这是一个非常好的问题。
这完全取决于您的网站处理的数量和事务,如果您真的希望您的应用程序能够扩展,我希望您做对了!并从一开始就做对。
停止将业务逻辑放在客户端 ** 不要指望在他拨打比对电话时吃掉最终用户的网络带宽:)不要指望他有最好的带宽。
对服务器场进行负载平衡:确保服务器场已正确进行负载平衡,并且使用多线程而不是在单个线程中进行比较
缓存结果 ** 如果您在服务器端执行此操作,如果用户 A 和用户 B 要求相同的比较,您实际上可以从用户 B 的缓存中提取它,而不是再次执行这些请求。
可用性显示与用户比较的进度,而不是显示加载旋转图像:)
希望对您有所帮助
评论