高性能网站建设指南(六)将脚本放在底部
in Blog
前面介绍了将样式表放在页面的底部会阻碍页面逐步呈现,以及如何通过将其移至文档的HEAD中来解决这一问题。脚本(外部JavaScript文件)会引起类似的问题,但解决方案恰好相反——最好将脚本从页面的顶部移到底部。这样页面既可以逐步呈现,也可以提高下载的并行度。
并行下载(Parallel Downloads)
对响应时间影响最大的是页面中组件的数量。HTTP1.1规范建议浏览器从每个主机名并行地下载两个组件。今天的很多网站使用HTTP1.1,但将并行下载数增加到每个主机名超过两个也是有可能的。但增加并行下载数量并不是没有开销的,其优劣取决于带宽和CPU速度,过多的并行下载反而会降低性能。
脚本阻塞下载(Script Block Downloads)
并行下载组件的有点是很明显的。然而,在下载脚本时并行下载实际上是被禁用的——即时使用了不同的主机名,浏览器也不会启动其他的下载。其中一个原因是,脚本可能使用document.write来修改页面内容,因此浏览器会等待,以确保页面能够恰当的布局。另一个原因是为了保证脚本能够按照正确的顺序执行。如果并行下载多个脚本,就无法保证响应是按照特定顺序到达浏览器的。
很多情况下,很难将脚本移到底部。例如:如果脚本使用document.write向页面中插入了内容,就不能将其移动到页面中靠后的位置。此外还有作用域的问题。
另一种建议是使用延迟(Defferred)脚本。DEFER属性表明脚本不包含document.write,浏览器得到这一线索就可继续进行呈现。如果一个脚本可以延迟,那么它一定可以移动到页面的底部。这是加速Web页面的最佳方式。