Var*_*ngh 26 javascript performance asynchronous amd requirejs
在一个大型网站上,requireJS实际上要快多少?
有没有人对使用异步加载的大型网站的速度进行过任何测试?
例如,使用具有大量视图(> 100)的Backbone,最好是简单地让一个视图对象一次性加载所有视图,然后始终可用,或者它们是否应根据需要异步加载?
此外,移动与桌面的这些考虑因素有什么不同吗?我听说你想限制手机上的请求数而不是大小.
rha*_*per 68
我不相信require.js的意图是在生产中异步加载所有脚本.在开发中,每个脚本的异步加载都很方便,因为您可以对项目进行更改并在没有"编译"步骤的情况下重新加载.但是在生产中,您应该使用r.js优化器将所有源文件组合成一个或多个更大的模块.如果您的大型Web应用程序可以将模块子集的加载推迟到稍后(例如,在特定用户操作之后),则这些模块可以单独优化并在生产中异步加载.
关于加载单个大型JS文件与多个较小文件的速度,通常:
"减少HTTP请求"已成为加速前端性能的一般准则,这一点在当今的移动浏览器世界中更为重要(通常运行在比宽带连接慢一个数量级的网络上). [参考]
但还有其他一些考虑因素,例如:
最后,这是Steve Souders的一篇很好的文章,总结了一堆脚本加载技术.
更新:重新使用CDN:Steve Souders 发布了使用CDN进行第三方库(例如jQuery)的详细分析,其中列出了许多注意事项,优点和缺点.
这个问题现在有点老了,但我想我可能会加入我的想法.
我完全同意rharper使用r.js将所有代码组合起来进行生产,但也存在拆分功能的情况.
对于单页应用,我认为将所有内容放在一起是有道理的 对于具有页面交互的大规模更传统的基于页面的网站,这可能非常麻烦并且导致为许多用户加载许多不必要的代码.
我用了几次的方法是
这里的优点是您可以保持初始页面权重,并且在页面加载后加载异步加载其他脚本时,感知性能应该更快.也就是说,以这种方式加载的所有功能都应该作为渐进增强(即表单上的ajax)来完成,以便在加载缓慢或错误的情况下仍然可以使用基本功能.
| 归档时间: |
|
| 查看次数: |
11019 次 |
| 最近记录: |