2012-09-26 235 views
4

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

  1. 接受用户输入。
  2. 进行20-30个AJAX请求并从所有主要网上商店获取结果。
  3. 使用一些客户端脚本对结果进行排序并以最合适的方式显示结果。

缺点: -

  1. 我的客户端代码提供给大家。它的JavaScript。
  2. 更容易出现浏览器错误。
  3. 不健壮。

缺点使得服务器端后: -

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

优点: -

  1. 我的代码安全的,在客户端安全
  2. 处理将是最小的。即使在手机和其他设备上也能轻松工作。

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

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

+1

只是出于好奇的进展....是合法刮网站如eBay ? – iJade

+0

你是网上刮,看看snapdeal男人的TOS。 – IdidntKnewIt

回答

3

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

它完全取决于您的网站处理的数量和交易,如果您真的希望您的应用程序能够扩展,我希望您做到这一点!并从一开始就这样做。

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

负载均衡服务器场 确保您的服务器场正常负载平衡和比较完成使用多线程,而不是一个单独的线程

缓存结果 **如果你正在做这个在服务器端,如果用户a和用户b要求进行相同的比较,则实际上可以从用户b的缓存中将其拉出,而不是再次执行这些请求。

可用性 显示相较于用户,而不是显示加载纺纱图像:)

希望它有助于

+1

我正致力于将其转换为多线程设计。你可以详细说明如何缓存。我们现在没有使用任何数据库,我们从目标网站上抓取它,处理并显示。所有6-7秒内 –

+0

@PrashantSingh什么是你的服务器农场?以及您的应用程序背后的技术? –

+0

它使用CURL来获取网页内容的简单PHP。从提取的数据中,我们废弃结果 –

2

我不明白你为什么要采取“更容易出现浏览器错误”。如果您向浏览器发送正确的库/代码,Javascript将以您想要的方式完全运行。

你可以看到什么浏览器正在做的请求,并发送正确的代码(如阅读:如果你有一些代码,将工作在FF &歌剧而不是IE浏览器,编写代码的两个版本,每个浏览器组都有一个)。 有一些库可以帮助你做到这一点。

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

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

还请记住,您可以混淆您的代码。我知道这不是最好的解决方案,但它会让很多人不读它。

编辑:

使其成为服务器端将工作的事情上的所有设备如预期(因为你已经说过)。 但有些事情你需要做,以保持你的服务器的负载达到100%。

Chandra Sekhar Walajap已经告诉你使用某种缓存的好处。我个人会进一步,因为你只是废除所有这些页面。

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

请注意,仅当您有许多用户比较大量产品时,这将保留大量带宽。另一方面,如果你有几个用户只搜索少数产品,那么根本就不会让你受益,因为你知道,每24小时从所有网站获取所有东西都是一个在CPU和带宽方面都有很多使用。

关于服务器负载:我不能说。这取决于很多事情,几乎不可能说。您需要考虑您要废弃的网站有多大,每个网站上有多少产品?你使用的是什么硬件?通过使用cURL和从一个站点获取所有内容的一些简单示例,你会更好。然后看看如何影响绩效和决定。

+1

我在IE中遇到了几个问题。就像同时制作20-30个Ajax请求一样,我需要使用CORS来避免阻塞。不支持许多浏览器(旧的)。顺序调用会大大降低我的引擎的性能 –

+0

好吧,如果你想支持真正的旧浏览器(FYI IE8有一些基本的CORS支持),你唯一的选择是服务器端。 – alexandernst

+0

你可以给我一个关于服务器端负载的估计,并且更新你的答案,在服务器端实现时要遵循一些提示吗? –

相关问题