javascript的最佳位置包括

时间:2010-01-05 16:13:37

标签: javascript performance browser

我已经读过,最好将<script>标记放在文档的末尾。执行此操作的论据似乎是浏览器将停止将页面呈现在脚本标记下方,直到它已加载并执行脚本为止。如果您的脚本标记位于页面顶部,则渲染会暂停一段时间,这很糟糕。

但是,我不确定这是否真的如此。

环顾四周,我通常会看到以下位置...

在页面的<head><body>标记

Stackoverflow是一个将脚本标记放在head中的网站示例,由于它们通常对性能非常着迷,我开始怀疑页面中的位置是否重要。

body元素

中的最后一件事

放置javascript的另一个常见位置似乎正好位于<body>元素的最后。我假设这意味着页面可以在javascript下载时呈现并继续执行它的事情。

但哪个更好?

有没有人对此有任何想法或建议?我希望尝试让我们的页面能够执行并尽快向用户显示。

重要吗?位于页面顶部有什么好处?页面底部?

5 个答案:

答案 0 :(得分:5)

这真的取决于。

没有捕获所有答案,因为它取决于你的javascripts正在采取什么行动。

如果您对需要加载脚本的DOM元素进行操作,有时需要将脚本放在页面末尾。假设你想专注于一个控件而你的脚本是:

var mytext = document.getElementById("mytext2"); 
mytext.focus();

在这种情况下,在浏览器加载mytext2控件之后,您希望它在页面的末尾执行。对于仅包含事件调用的函数的脚本块,这一点不太重要。

如果您有一个包含大量函数库的大型.js文件,您可能还希望将其放在页面末尾,以便浏览器在加载大型.js文件之前加快页面加载速度。

谷歌分析建议将他们的追踪器放在最后,以确保在计算点击数之前已经交付了页面,但在某些情况下,它建议将脚本放入标题中,它可以双向工作。

所以,对我来说,经验法则是HEAD脚本,除了在线执行并对DOM对象执行的操作之外的所有内容,或者您​​希望在页面后加载的大型脚本。

Rick Strahl刚刚在.net上写了一篇关于placement of Javascript的精彩博客:

答案 1 :(得分:3)

唯一有效的方法是将它包含在顶部(在<head>部分中),但在底部加载会更快 - 如果脚本靠近底部,页面的其余部分将加载得更快,为用户提供更好的响应并使体验更好。

问题是,大多数Web浏览器都会停止呈现页面的HTML,直到他们到目前为止已经获取并解析了所有JavaScript代码。因此,如果<head>中包含缓慢加载的.js文件,则在下载和解析.js之前,不会呈现任何HTML并且图像甚至不会开始下载,因此前端工程师会传播以放置脚本尽可能远在代码中。

我通常只为我的.js文件设置一个远期的Expires标头,以便它们在浏览器中缓存很长时间,然后将它们包含在<head>部分中。这样可以提供良好的性能并且看起来并不丑陋: - )

但是如果你在服务外部.js库(在你自己以外的其他服务器上),你可能会想要它们在底部,因为你不能改变其他服务器的Expires-header,你不能知道其他服务器总是会响应。

答案 2 :(得分:1)

耶。 Put Scripts at the Bottom

我认为js文件的大小比javascript的位置重要得多。我总是设置更高数量的并发连接,以确保它们并行下载。

答案 3 :(得分:1)

我认为最好在关闭正文标记之前放置脚本标记。这是因为:

  • 如果元素低于脚本,则会阻止渲染。
  • 在IE6中,如果页面中的IE7资源低于脚本,则会阻止其下载。

来自this文章。雅虎的表现规则6也是Move Scripts to the Bottom

答案 4 :(得分:0)

Google Analytics总是习惯于将脚本标记放在页面底部。我认为理由是,如果谷歌服务器出现故障,那么如果页面位于头部,页面将无法加载(仅适用于IE)。