我正在开发一个大型网站,我们正在向客户端移动大量功能(Require.js,Backbone和Handlebars堆栈)。甚至有关于可能将所有渲染移动到客户端的讨论。
但阅读一些文章,尤其是关于Twitter远离客户端渲染的文章,其中提到服务器端更快/更可靠,我开始有疑问。我不明白如何在JS中从JSON渲染相当简单的HTML小部件,模板是双核CPU上的现代浏览器,具有4-8 GB RAM,比在服务器端应用程序中制作数十个包含要慢。有关于此的实际真实基准数据吗?
此外,似乎通过服务器端模板引擎解析HTML模板不能比从Handlebars模板渲染相同的HTML代码更快,特别是如果这是一个precomp JS函数?
答案 0 :(得分:8)
原因有很多:
答案 1 :(得分:3)
但对于复杂的用户界面,客户端的交互呈现将提供更快捷的用户体验。
这实际上取决于您尝试优化的性能以及用户数量。
答案 2 :(得分:0)
要在客户端运行代码,首先必须加载它。服务器端代码刚刚在服务器启动时加载,而客户端代码必须在每次页面加载时加载。在任何情况下,必须在加载页面时解释代码,即使文件已经被缓存。您可能还在浏览器中缓存了JS解析树,但我认为这些不会持久化,因此它们不会长寿。
这意味着无论JavaScript多快(并且速度非常快),都必须在用户等待时执行工作。许多研究表明,页面加载时间极大地影响了用户对网站质量和相关性的感知。
最重要的是,您最多需要500毫秒来从典型的开发人员环境中的干净缓存中呈现您的页面。较慢的设备和网络将使大多数用户几乎无法接受这种延迟。
因此,在页面加载期间,您可能需要50-100ms才能在JavaScript中执行操作,所有这些都是总计,这意味着渲染复杂的页面,这很不容易。