【问题标题】:Client-side processing vs server-side processing , which is fast?客户端处理与服务器端处理,哪个快?
【发布时间】:2011-01-01 03:43:37
【问题描述】:

客户端或服务器端哪个处理速度快?对于客户端处理浏览器需要先下载每个 JavaScript,然后在服务器端编程中,一切都发生在服务器上,而不需要将任何内容下载到用户 PC?

如果对于特定功能,我们在 javascript 和 php/asp 中都有解决方案,那么应该选择什么以及为什么?

【问题讨论】:

  • 答案完全取决于上下文。如果我们谈论的是在页面已经完全呈现很久之后向页面添加一个按钮,那么通过 javascript 执行此操作而不是加载一个全新的页面会更快。另一方面,现在大部分页面呈现时间都是在客户端。如果您可以通过预渲染更多内容服务器端并将其包含在初始页面加载中来减少这项工作,那将会产生很大的不同。因此,对于您提出的问题,没有一个正确答案 - 任何一个都可能更快,具体取决于具体情况。

标签: php asp.net javascript xhtml accessibility


【解决方案1】:

预先下载 JavaScript 通常更快,因为不需要服务器往返(而且通常最耗时的是网络操作)。

也就是说,there should always be a server side solution 用于任何基本功能(因为不保证 JS 支持),性能不应该是您首先考虑的(信任应该是,例如,您不能信任客户端代码确保数据不会破坏您的数据库)。

【讨论】:

  • 你是对的,但即使用户启用了 javascript,哪一个性能最好?服务器端总是会更快吗?哪个对移动用户有利?
  • 见我回答的第一段。显然不是,重读第一段。移动设备可能有也可能没有 JS 支持(可能开启也可能没有开启)。
【解决方案2】:

这里需要考虑几个因素和几个权衡。

服务器机器通常比客户端机器更强大。 OTOH,通常客户端比服务器多得多。因此,当 #clients 超过某个阈值时,客户端处理速度会更快(服务器必须处理来自所有客户端的计算,这将超过其更强大的处理器)。

但是,如果处理主要受网络带宽限制,即:大部分处理时间都花在下载东西上,并且下载的素材相对稳定,那么下载一次到服务器进行处理会更快在那里。

最后,如果计算结果不会从一个客户端更改为另一个客户端,那么 - 再一次 - 在服务器上一次性计算它更有意义。

【讨论】:

    【解决方案3】:

    我非常喜欢在浏览器上移动所有可能的进程。如果您的目标是启用 JS 的浏览器(即:对于网络应用程序)

    主要是为了卸载渲染进程的服务器,节省一些网络带宽。

    今天渲染 HTML 客户端真的很快,即使在支持网络的手机上,为什么不使用浏览器中可用的计算机功能?

    一旦 HTML、CSS 和 JS 位于浏览器缓存中(在当前会话或前一个会话中),只有数据在网络中传播。
    如果您将所有这些静态文件放在 CDN 上,想象一下速度的提升。

    根据我的经验,这些选项为用户提供了响应速度更快的体验。

    我们对速度有点疯狂,这是我们构建网络应用程序所采用的设计:

    • CDN 上的静态文件
    • 仅提供 JSON 服务并处理安全性的后端
    • 我们使用PURE 在 HTML 客户端呈现 JSON

    【讨论】: