十多年来,我一直在关注网络发展趋势。我一直坚持的最大的站点优化技术之一是,JavaScript位于站点的底部。
我坚持的理由是,JavaScript阻止并行下载,每个主机名一次只能下载两个组件。这将对站点加载时间产生负面影响,如果将其添加到文档的标题中。
现在,我重新审视了我以前关于站点优化的所有想法,现在我了解到,在现代web浏览器中,这一切都不再是真的了。
例如,截至2015年2月,Internet 11可以在每个主机名上有13个连接(不再只有两个),JavaScript不再阻止并行下载!在所有现代浏览器中,这种行为也是正确的。
虽然这是可以理解的,如果您不使用JavaScript,直到用户与页面交互,您应该把它放在底部无论如何,它现在是否像以前一样重要?
我正在浏览电子商务网站,看看他们现在使用的模式:
date&searchSize=12
看着建筑几乎让我哭了。超过60个外部JavaScript文件,其中很多在页眉中,而在页脚中几乎没有。
但是从网络时间线来看,大多数JavaScript文件都是以如此惊人的速度首先加载的,它并没有影响到站点的其他部分。您可以同时看到下载的所有并行文件。
我想这是出于某种特殊的原因,所以我的问题是我是不是漏掉了什么?
在现代浏览器中,坚持我们过去的旧规则有什么必要?既然我们不再依赖IE6和那个时代为浏览器制定的规则,那么我们应该重新审视如何优化站点吗?
发布于 2015-02-18 02:56:09
不幸的是,并行下载只是JS优化中众多关注的问题之一。
虽然与以前相比,现代浏览器可以并行下载更多的文件,但浏览器仍然按顺序解析它们。如果脚本#50 (从100中)没有下载,有一个无限循环或其他什么,即使所有99个其他脚本都已完成下载,浏览器仍将等待#50在下载之后执行其他50个(值得注意的例外是脚本具有defer或async属性时)。
另外,使用一个延迟脚本,您的页面将不会呈现任何内容,只是一个空白的白页。这对用户体验不好。是的,我见过这样的代码,您将面对一个空白的白色页面30秒,因为在头脑中的十几个脚本决定是缓慢的。
仅仅因为浏览器可以更快地完成任务,并不意味着您可以跳过开发人员端的优化。更快就是更快,开发人员一直在使用优化来压缩JS的性能。你最好坚持下去。
发布于 2015-02-18 02:41:04
优化技术发生了变化,但同时浏览器的JavaScript运行时引擎+用户资源也得到了改善。您可以通过重新访问旧代码获得更高的性能,但我怀疑性能的提高是否值得意外地破坏遗留代码(特别是当涉及到IE时)。
显然,您的代码所做的以及它所提供给谁的内容在这个决定中起了很大的作用。例如,如果您的用户中有很大一部分正在使用移动浏览器,那么JavaScript性能就更重要了。
-编辑--
作为一个侧面,我想提到,海事组织,那个网站是不友好的表现。加载那么多外部(和嵌入式)脚本是不正常的。现在加载大量JS文件的更好方法之一是通过AJAX注入它们。另一种方法是让您的服务器根据您的页面将各种JS文件连接到一个JS文件中,然后缓存这些处理过的文件。
https://stackoverflow.com/questions/28574979
复制相似问题