IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

客户端应该去计算什么?

delphij's Chaos 2009-11-09 09:29:16 累计浏览 2,805 次
本机暂存

    这是一个很有意思的话题:随着计算机技术的发展,客户端的计算能力越来越强。想要提高在服务器端运行的系统的负载能力,最直接有效的办法就是把计算任务尽可能交给客户端去做,并减少两者之间的交互;然而,另一方面,这样做又可能会带来一些其他问题,例如,客户端完成某些计算任务的时候可能会比较慢(因为在客户端可以用到的资源比较少,想要保持兼容性最好的办法就是只使用普适的Java Script子集),或者,作为安全系统的一个最基本的原则,任何来自外界的数据都是不应被信任的,等等。

    我们可以把数据根据一些规则来进行分类。一般来说数据会具有一些这样的属性:

传输方向。数据是服务器发给客户端的?还是反过来?或者,只是在客户端兜个圈?或者在两台服务器之间传递,只不过客户端是一个中间的载体(当然一般来说,这样做的系统的架构师应该去看看神经科的医生)? 敏感性。如果数据在传输过程中(从客户端到服务器,或反过来)被人截获,是否会产生安全威胁? 尺寸。这个主要是从经济方面考虑,不过多增加计算量的前提下,通常我们会希望传输的尺寸越小越好。

    这样一来,判断计算是否应在客户端进行就比较简单了:我们首先要看的第一个问题是:放在客户端进行,是否会增加服务器的计算量?例如,服务器是否需要再增加一些额外的步骤,才能够完成具体的操作?这些额外的步骤与原先的计算相比是否更少?通常来说,这个答案都是"是的",这样我们可以继续考察第二个问题。

    第二个问题是,这样做是否有助于减少通讯量?例如,对于用户输入信息的合法性检查,比如说,用户输入的内容是否可能导致SQL注入,或者,他是否在一个该输入数字的地方输入了其他字符?这些检查很显然必须在服务器端做(因为数据跨越了安全边界),但是,假如客户端也进行了这些检查的话,那么那些无效输入就可以在与服务器交互之前被拦住,从而减少通讯量并减少服务器的负担。

    第三个问题是,这样做是否会占用太多客户端资源?这个问题可能不太容易评估,一般来说,计算密集型的任务使用Java Script去做的效果有可能会不太好,有时,为了改善响应时间,有可能会希望这些操作由服务器去完成(由于可以采用任意的软件,因此服务器完成某些任务可能更高效)。简单的排序操作在客户端做有助于减少服务器负载,但如果很多客户端需要请求同样的内容,那么将排序结果在服务器端直接缓存起来就会更好一些,等等。

    以上仅代表个人经验供参考。

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. 如何成为Python高手 (累计阅读 54,992)
  2. JQuery实现Excel表格呈现 (累计阅读 48,349)
  3. 程序员技术练级攻略 (累计阅读 35,469)
  4. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  5. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  6. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,848)
  7. 天朝第二代身份证号码的验证机制 (累计阅读 14,761)
  8. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  9. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  10. 什么是全栈工程师? (累计阅读 14,038)