有不同的JavaScript框架,如jQuery,Dojo,mooTools,Google Web Toolkit(GWT),YUI等。 哪一个适合高性能网站?
答案 0 :(得分:14)
(完全免责声明:我是Dojo开发人员,这是我的非官方观点)。
所有主要库都可以在高负载情况下使用。有几件事需要考虑:
初始加载
初始加载会影响您的响应时间:从请求网页到响应以及处于工作模式。琐碎的事情是:
这个想法是减少发送 - 对服务器有益,对客户有利。
不那么琐碎的事情:
后者的示例:将您的模块划分为必要(例如,核心逻辑)和非必要(例如,帮助者:工具提示,提示,验证者,帮助工具,各种“渐进增强剂”等)。这个想法经常是有些东西对于频繁的用户来说并不重要,但对于偶然用户来说很好⇒它们可能会被延迟。
我们可以先加载必要的模块,然后异步加载其余的模块。示例:如果用户想要编辑对象,我们需要首先显示它,之后我们有几百毫秒来加载其余的:查找表,提示等。
显然,当您使用的框架支持异步加载模块时,它会有所帮助。 Dojo内置了这个工具。
分发文件
每个人都知道,由于浏览器对来自同一站点的并行下载数量的限制,从不同的域加载资源(图像,CSS,JavaScript)是有益的:
JavaScript应用程序中经常被忽视的一个优化是使用CDN:
同样,Dojo长期支持CDN并由AOL CDN和Google CDN公开发布。后者几乎带有所有流行的JavaScript工具包。显然你可以创建自己的CDN和你自己的CDN和特定于应用程序的Dojo构建,如果你觉得你需要它 - 它是微不足道的并且有很好的文档记录。
通讯带宽
不同的工具包有什么不同? XHR是XHR。
您需要尽可能减少服务器上的负载。分析所有流量,并考虑通过管道发送多少静态/不可变的内容。例如,通常很多HTML在多个页面上都是冗余的:标题,页脚,菜单等。你真的需要每次都发送所有这些吗?
一个明显的解决方案是从使用JavaScript的静态HTML +“渐进增强”转变为真正的“单页”JavaScript应用程序。同样,这是一个经常被忽视但最有价值的优化。
虽然这个想法听起来很简单,但实际上它并不像看起来那么简单。一旦我们从单行开始到应用程序,我们就会有很多问题,其中最大的问题是包装:您的组件是什么,工具包提供了哪些组件,以及如何打包和交付它们。
Dojo提供模块,一般类的优秀OOP,小部件(可选HTML和相关行为的组合)以及许多可以使用它们的工具。你可以:
在客户端构建应用程序时,所有这些功能都有很大帮助。 That's why I like Dojo
显然,有更多方法可以优化高负载网站,但根据我的实践,这些是JavaScript框架最具体的。
答案 1 :(得分:11)
非常简单:所有。
所有框架都是为了尽可能提供最快的性能而构建的,并为开发人员提供了有用的功能和工具。 您的选择应基于您的要求。
JavaScript在客户端运行,因此没有一个会影响您的服务器性能。服务器端唯一的区别是用于将.js
文件传输到客户端的带宽量。
我个人喜欢MooTools,因为它符合我的要求,也坚持我的编码理想。很多人采用jQuery(我个人不喜欢它,并不意味着它不是很好)。我没有用过其他的。
但没有一个比另一个更好,这都是需求和个人偏好的问题。
答案 2 :(得分:1)
我真的不认为这有点不同。大的似乎混合了Jquery& amp;原型和其他原型。
坦率地说,当我们谈论客户端技术时,对于访问量很大的网站使用它并没有什么不同。加载文件后,实际上没有任何开销。所以,如果你只想做一个简单的事情并且多个框架支持它,那么使用任何文件大小较小的文件(当然,如果它的表现非常差,请使用另一个!)
话虽这么说,谷歌主持了很多框架,所以即便这样也不是问题。我使用谷歌主持的Jquery,非常高兴。
http://code.google.com/apis/ajaxlibs/
后端以及服务器应该使用的是一个完全不同的问题,您将获得一千个不同的答案!
答案 3 :(得分:1)
我建议你研究Dojo。
Dojo 1.6也是第一个(也是唯一一个)流行的JavaScript库,它可以成功地与Closure Compiler的高级模式一起使用,除了谷歌自己的Closure Library之外,它还具有大量的,性能和混淆的优点,是
换句话说,使用Dojo的程序可以100%混淆 - 甚至是库本身。
编译代码与纯文本代码具有完全相同的行为,除了它更小(平均值小于25%),运行速度更快(特别是在移动设备上),并且几乎不可能进行逆向工程,即使在通过美化器,因为整个代码库(包括库)被混淆。
只有“缩小”的代码(例如YUI压缩器,Uglify)可以在通过美化器后轻松进行逆向工程。
答案 4 :(得分:0)
嗯 - 作为一个示例stackoverflow依赖于jQuery(并使用谷歌apis链接) - 它是最快和最流行的库之一,不仅如此,但我认为它是最容易使用的。您将在网站上拥有什么类型的行为?这完全取决于您的需求。
答案 5 :(得分:0)
答案一如既往:它取决于。你在谈论什么样的表现?下载速度?使用最小化器,可能没有太大的区别。或者客户端的表现,以及你在做什么?
但是,我建议如果你在原始性能之后,我根本不会使用框架,并创建更难以维护的低级javascript。
可以在YUI site上找到一些好的信息。
答案 6 :(得分:0)
正如其他答案已经解释过的那样,该框架不会成为您网站性能的瓶颈 - 而是其他许多因素。如果您使用流行的框架并从他们的热门网址(例如AOL或Google)加载它们,则可能会将其缓存在用户的浏览器中,因此您也不必担心这一点。
如果您完全关心性能,请务必查看Steve Souders;工作 - 包括他的两本书,“高性能网站”和“更快的网站”。
我很有偏见,因为史蒂夫是朋友和同事(我们也和出版商分享),但是在我们亲自见面并成为同事之前,我甚至赞扬和赞赏他的作品 - 我过去主要是一个后端人物,所以我不禁钦佩那些来自同一背景的人,他们完全和勇气几乎完全转向前端焦点,因为他意识到到目前为止,这是用户感知性能的瓶颈(也就是说,有些人将用户体验放在首位,当然,我们都向他们致敬,但不< / em>总是练习,当“压倒一切的优先权”妨碍我们自己的专业,兴趣和技能......)。