重温站点优化的经验法则:JavaScript在现代浏览器的底层仍然是必要的吗?

重温站点优化的经验法则:JavaScript在现代浏览器的底层仍然是必要的吗?,javascript,optimization,Javascript,Optimization,我已经关注网络发展趋势超过10年了。我一直坚持使用的最大的站点优化技术之一是JavaScript位于站点底部 我一直坚持的理由是JavaScript阻止并行下载,每个主机名一次只能下载两个组件。如果添加到文档的标题中,这将对站点加载时间产生负面影响 现在,我重新回顾了我以前关于网站优化的所有想法,我发现在现代网络浏览器中,这些想法都不再是真实的了 例如,截至2015年2月,Internet Explorer 11现在每个主机名可以有13个连接(不再只有两个),JavaScript不再阻止并行下载

我已经关注网络发展趋势超过10年了。我一直坚持使用的最大的站点优化技术之一是JavaScript位于站点底部

我一直坚持的理由是JavaScript阻止并行下载,每个主机名一次只能下载两个组件。如果添加到文档的标题中,这将对站点加载时间产生负面影响

现在,我重新回顾了我以前关于网站优化的所有想法,我发现在现代网络浏览器中,这些想法都不再是真实的了

例如,截至2015年2月,Internet Explorer 11现在每个主机名可以有13个连接(不再只有两个),JavaScript不再阻止并行下载!这种行为在所有现代浏览器中也是如此

可以理解的是,如果在用户与页面交互之前不使用JavaScript,并且无论如何都应该将其放在页面底部,那么它现在和以前一样重要吗

我正在通过电子商务网站查看他们现在使用的模式:

看着建筑,我几乎要哭了。超过60个外部JavaScript文件,其中许多文件位于页眉,而页脚几乎没有

但从网络时间线来看,大部分JavaScript文件都是以如此惊人的速度首先加载的,这并不会影响网站的其余部分。您可以看到同时下载的所有并行文件

我假设这是出于某种特殊原因,所以我冗长的问题是我是否遗漏了什么


在现代浏览器中,坚持我们过去的旧规则有多必要?既然我们不再依赖IE6和那个时代为浏览器制定的规则,我们是否应该重新审视我们如何优化网站?

优化技术已经改变,但与此同时,浏览器的JavaScript运行时引擎+用户资源也变得更好了。确实,通过重新访问旧代码可以获得更高的性能,但我怀疑性能的提高是否值得冒意外破坏旧代码的风险(特别是当涉及IE时)

显然,您的代码所做的事情以及它所面向的对象对您的决定有很大的影响。例如,如果大部分用户使用移动浏览器,JavaScript性能就更为重要

--编辑--


作为旁注,我想提到的是,在国际海事组织,该网站对性能不友好。加载那么多外部(和嵌入式)脚本是不正常的。现在加载大量JS文件的更好方法之一是通过AJAX注入它们。另一种方法是让你的服务器根据你的页面将不同的JS文件合并成一个文件,然后缓存那些处理过的文件。

不幸的是,并行下载只是JS优化中的众多问题之一

虽然与以前相比,现代浏览器可以并行下载更多的文件,但浏览器仍会按顺序解析这些文件。如果脚本#50(100个脚本中的一个)没有下载,有一个无限循环或其他什么,即使所有99个其他脚本都已完成下载,浏览器仍将等待#50执行,然后再执行后面的另50个脚本(值得注意的例外是当脚本具有
延迟
异步
属性时)

此外,如果脚本暂停,您的页面将不会呈现任何内容,只是一个空白的白色页面。这不利于用户体验。是的,我见过这样的代码,你将面对一个空白的白页30秒,因为有十几个脚本在头脑中决定是缓慢的


仅仅因为浏览器可以更快地完成,并不意味着您可以跳过开发人员端的优化。越快越好,开发人员一直在使用优化来压缩JS的性能。如果你坚持的话最好。

这可能有点相切,但是你可能想阅读这篇关于现代js加载最佳实践的文章:现在,脚本的数量通常远远超过实际内容,所以这可能无关紧要。这个页面将近800kB,但HTML大约是70kB。大约200kB是CSS,可能100kB是图像,其余是脚本。