为什么服务器端HTML渲染比客户端更快?

我正在一个大型网站上工作,并且我们将很多功能转移到客户端(Require.js,Backbone和Handlebars堆栈)。 甚至有关于将所有渲染移动到客户端的讨论。

但是阅读一些文章,尤其是关于Twitter摆脱客户端渲染的文章,其中提到服务器端更快/更可靠,我开始有问题。 我不明白如何从JSON渲染JS中相当简单的HTML小部件,而模板是具有4-8 GB RAM的双核CPU上的当代浏览器比在服务器端应用程序中制作几十个包含任何内容的速度慢。 有没有关于此的真实生活基准数字?

另外,看起来像服务器端模板引擎解析HTML模板不能比从Handlebars模板渲染相同的HTML代码更快,特别是如果这是一个precomp JS函数?


有很多原因:

  • JavaScript是解释型语言,比服务器端慢(通常以编译语言完成)
  • DOM操作很慢,如果你在JS中操纵它,结果会导致性能下降。 有很多方法可以解决这个问题,比如在文本中准备渲染并评估它,这实际上可能会让您尽可能接近服务器端渲染。
  • 有些浏览器速度太慢,特别是旧的IE浏览器

  • 编译语言与解释JavaScript的性能
  • 缓存,即 - 提供另一用户已经请求的完全相同的页面,这消除了每个客户端呈现它的需要。 非常适合流量巨大的网站 - 例如新闻网站。 微型缓存甚至可以提供接近实时的更新,但仍可缓存来自缓存的重要流量。 无需等待客户端呈现
  • 用旧电脑或缓慢/残废的浏览器对用户的依赖性降低
  • 只需要担心渲染,减少对不同浏览器如何管理DOM(可靠性)的依赖,
  • 但对于复杂的用户界面,客户端交互渲染将提供更快捷的用户体验。

    这实际上取决于您试图优化的性能以及多少用户。


    要在客户端运行代码,首先必须加载它。 服务器端代码只在服务器启动时加载,而客户端代码必须在每次页面加载时潜在加载。 在任何情况下,即使文件已被缓存,加载页面时也必须解释代码。 你也可以在浏览器中缓存JS解析树,但我认为这些树不会持久化,所以它们不会长寿。

    这意味着无论JavaScript有多快(并且速度非常快),用户都需要等待才能完成工作。 许多研究表明,页面加载时间极大地影响用户对网站质量和相关性的感知。

    底线是,您最多有500毫秒的时间,可以让您的页面在典型的开发人员环境中从干净的缓存中呈现。 较慢的设备和网络将使这种滞后仅仅是大多数用户所不能接受的。

    因此,在页面加载期间,您可能需要50-100毫秒的时间才能在JavaScript中执行某些操作,所有这些都是总计,这意味着渲染复杂页面并非易事。

    链接地址: http://www.djcxy.com/p/65065.html

    上一篇: Why exactly is server side HTML rendering faster than client side?

    下一篇: Backbone and Django, finding a better client