服务器端处理或客户端处理?

时间:2012-09-26 07:07:42

标签: javascript ajax performance client-side server-side

我开发了一个比较网站,用于比较印度在线销售的任何产品。目前,该网站完全是客户端: -

  
      
  1. 接受用户输入。
  2.   
  3. 制作20-30个AJAX请求并从所有主要在线商店中获取结果。
  4.   
  5. 使用一些客户端脚本对结果进行排序并以最恰当的方式显示它。
  6.   

缺点: -

  
      
  1. 我的客户端代码可供所有人使用。它的javascript。
  2.   
  3. 更容易出现浏览器错误。
  4.   
  5. 不健全。
  6.   

服务器端之后的缺点: -

  
      
  1. 考虑到我网站的流量,服务器负载会增加,因为它将与客户长时间合作。
  2.   
  3. 从各个网站获取值可能需要多达10秒(最多)。服务器参与了那段时间。如果我有500,请考虑负载   访客/分钟在高峰时间。
  4.   

优点: -

  
      
  1. 我的代码安全可靠
  2.   
  3. 客户端的处理将是最小的。即使在移动设备和其他设备上也能轻松工作。
  4.   

我想在实际实施之前分析这些问题。任何人都可以建议我应该为我的网站选择什么?哪种方法对我更好?

如果我的问题不明确,请发表评论。

2 个答案:

答案 0 :(得分:3)

首先,这是一个非常好的问题。

它完全取决于您的网站处理的数量和交易,如果您真的希望您的应用程序扩展,我希望您做得对!从一开始就做好。

停止将您的业务逻辑放在客户端 **当他进行比较调用时,不要期望吃最终用户的网络带宽:)并且不要指望他有最好的带宽。

对服务器场进行负载平衡 确保您的服务器场已正确负载平衡,并且使用多线程在单个线程中完成比较

缓存结果 **如果您在服务器端执行此操作,如果用户a和用户b要求进行相同的比较,您实际上可以从用户b的缓存中提取它,而不是再次执行这些请求。

<强>可用性 显示与用户比较的进度,而不是显示加载旋转图像:)

希望有所帮助

答案 1 :(得分:2)

我不明白为什么你会选择“更容易出现浏览器错误”。如果您向浏览器发送正确的库/代码,Javascript将以您希望的方式运行。

您可以看到正在执行请求的浏览器并向其发送正确的代码(如果您有一些代码可以在FF&amp; Opera中运行但不是IE,请写两个该代码的版本,每组浏览器一个。) 有些库可以帮助您这样做。

此外,比较不是应该在服务器端完成的任何事情。所以,如果你的网站上有很多流量,客户端的工作应该适用于那种东西。

关于代码保护,你是对的。服务器端不会让任何人读取您的代码。因此,您必须确定服务器负载是否比阅读代码的人更重要。

另请注意,您可以对代码进行模糊处理。我知道这不是最好的解决方案,但它会阻止很多人不读它。

编辑:

使其成为服务器端将使所有设备上的工作正常运行(正如您已经说过的那样)。 但是,为了保持服务器的负载不会达到100%,您需要做一些事情。

Chandra Sekhar Walajap已经告诉过你使用某种缓存来获得结果的好处。我个人会更进一步,因为你正在废弃所有这些页面。

我会创建一个刮板,每24小时运行一次,然后取出/报废每个产品。然后我将所有这些产品保存在某个地方(在数据库或任何你想要的内容中读取)。这样,当用户请求产品A和B之间的比较时,您不需要获取/废弃所有网站,而只需要在您保存它们的地方查找这些产品并将它们显示给用户。

请注意,只有当您有许多用户比较大量产品时,才会保留大量带宽。

另一方面,如果你有一些用户只搜索一些产品,那么制作这种解决方案根本不会对你有所帮助,因为你知道,每24小时从所有网站上获取所有东西都是很多用法,包括CPU和带宽。

关于服务器负载:我不能说。这取决于很多事情,几乎不可能说出来。您需要考虑一下您要废弃的网站有多大,每个网站上有多少产品?您使用的硬件是什么?通过使用cURL并从其中一个站点获取所有内容,您可以做一些简单的示例。然后看看它对性能的影响和决定。