severside处理vs客户端处理+ ajax?

寻找一些一般性建议和/或想法...

我创建了我认为更多的是网页应用程序,然后是网页,因为我打算它像一个gmail应用程序,在那里你可以让页面整天保持打开状态,同时将更新“推送”到页面(对于感兴趣的是我使用彗星编程技术)。 我从来没有创建过一个网页,之前是如此丰富的Ajax和JavaScript(我现在是jquery的粉丝)。 正因为如此,我一次又一次地实现了需要服务器需要知道的UI中的动态更改的新功能,所以我面临同样的问题:

1)我应该做的所有处理在客户端在JavaScript和回发尽可能少通过ajax或2)我应该通过ajax发布请求到服务器,让服务器做所有的处理,然后发回新的HTML 。 然后在ajax响应我做一个简单的任务与新的HTML

我一直倾向于始终追随#1。 这个网络应用程序,我想象可能会与所有的Ajax请求相当健谈。 我的想法是尽量减少请求和响应的大小,并依靠不断改进的JavaScript引擎来尽可能多地处理和UI更新。 我发现在jQuery中,我可以在客户端做很多事情,以前我不会那么容易做到。 我的JavaScript代码实际上比我的serverside代码更大更复杂。 还有我需要执行的简单的calulcations,我也推动了客户端。

我想我的主要问题是,我们是否应该尽可能争取通过服务器端处理进行客户端处理? 我一直觉得服务器不得不处理更好的可伸缩性/性能。 让客户的处理器的力量做好所有的努力(如果可能的话)。

想法?


在决定是否应在服务器或客户端上构建由ajax请求创建的新HTML片段时,需要考虑几个因素。 有些事情要考虑:

  • 性能。 你的服务器所要做的工作就是你应该关心的事情。 通过在客户端进行更多的处理,您可以减少服务器的工作量,并加快速度。 例如,如果服务器可以发送一小段JSON而不是巨大的HTML片段,那么让客户端执行它会更有效率。 在发送少量数据的情况下,差异可能可以忽略不计。

  • 可读性。 在JavaScript中生成标记的缺点是读取和维护代码要困难得多。 将HTML嵌入带引号的字符串在语法着色设置为JavaScript的文本编辑器中看起来令人讨厌,并且使编辑更加困难。

  • 分离数据,演示文稿和行为。 沿着可读性的方向,在JavaScript中使用HTML片段对代码组织来说没有多大意义。 HTML模板应该处理标记,而JavaScript应该单独处理应用程序的行为。 插入到页面中的HTML片段的内容与您的JavaScript代码无关,只是它插入的位置,位置以及时间。

  • 在处理Ajax响应时,我倾向于更倾向于从服务器返回HTML片段,因为上面提到的可读性和代码组织原因。 当然,这一切都取决于您的应用程序的工作方式,ajax响应的处理密集程度以及应用程序获得的流量。 如果服务器在产生这些响应方面需要做大量工作,并且正在造成瓶颈,那么将工作推向客户端并放弃其他考虑可能更为重要。


    我目前正在研究一个非常计算量大的应用程序,并且我在客户端渲染几乎所有的应用程序。 我不确切知道你的应用程序将会做什么(更多细节会很棒),但我会说你的应用程序可能也会这样做。 只要确保所有与安全性和数据库相关的代码位于服务器端,因为不这样做会在您的应用程序中打开安全漏洞。 以下是我遵循的一些一般准则:

  • 永远不要依靠拥有超快速浏览器或计算机的用户。 有些人在旧机器上使用Internet Explore 7,如果他们的速度太慢,你将失去很多潜在客户。 在尽可能多的不同浏览器和机器上进行测试
  • 任何时候当你有一些代码可能会暂时放慢浏览速度或者暂时冻结浏览器时, 显示一个反馈机制 (在大多数情况下,一个简单的“加载”消息将会这样做)告诉用户确实发生了一些事情,只是随机冻结。
  • 尝试在初始化期间尽可能加载缓存所有内容 。 在我的应用程序中,我正在做一些类似于Gmail的操作:显示加载栏,加载应用程序所需的所有内容,然后为用户提供顺畅的体验。 是的,他们将不得不等待几秒钟才能加载,但在此之后应该没有问题。
  • 最小化DOM操作。 处理原始数字的JavaScript性能可能“足够快”,但访问DOM仍然很慢。 避免创建和销毁元素; 相反,如果你现在不需要它们,就把它们隐藏起来。

  • 我最近遇到了同样的问题,并决定采用浏览器端处理,一切在FF和IE8和IE8在7模式下运行良好,但后来...我们的客户端,使用Internet Explorer 7遇到问题,应用程序会冻结并会出现一个脚本超时框,我已经在解决方案中投入了太多的工作来抛弃它,所以我最终花了一个小时左右的时间来优化脚本并尽可能地添加setTimeout。

    我的建议?

  • 如果可能的话,保持非关键计算客户端。
  • 为了减少数据传输,请使用JSON并让客户端整理HTML。
  • 使用最小公分母测试脚本。
  • 如果需要,使用FireBug中的分析功能。 推论:使用jQuery的未压缩(开发)版本。
  • 链接地址: http://www.djcxy.com/p/43951.html

    上一篇: severside processing vs client side processing + ajax?

    下一篇: log4net centralised logging for multiple components