Javascript 将脚本放在网页底部会加速页面加载吗?

Javascript 将脚本放在网页底部会加速页面加载吗?,javascript,Javascript,雅虎的最佳实践表明,这可能会使你的网页加载更快。这方面有什么经验?副作用是什么,如果有的话 据我所知,它只是让浏览器更快地开始渲染。它有两个优点: 渲染开始得更快。浏览器无法布局尚未收到的元素。这避免了“空白白屏”问题 延迟连接限制。通常您的浏览器一次不会尝试与同一服务器建立多个连接。如果您有一整列脚本等待从速度较慢的服务器上下载,那么当您的页面出现停顿时,它确实会破坏用户体验 一个副作用是,如果您将某些脚本放在页面末尾,它们将根本无法工作。如果在呈现页面时有一个脚本正在运行(例如,对于ad脚

雅虎的最佳实践表明,这可能会使你的网页加载更快。这方面有什么经验?副作用是什么,如果有的话

据我所知,它只是让浏览器更快地开始渲染。

它有两个优点:

  • 渲染开始得更快。浏览器无法布局尚未收到的元素。这避免了“空白白屏”问题

  • 延迟连接限制。通常您的浏览器一次不会尝试与同一服务器建立多个连接。如果您有一整列脚本等待从速度较慢的服务器上下载,那么当您的页面出现停顿时,它确实会破坏用户体验


一个副作用是,如果您将某些脚本放在页面末尾,它们将根本无法工作。如果在呈现页面时有一个脚本正在运行(例如,对于ad脚本来说,它相当常见),并且该脚本依赖于另一个脚本中的函数,则必须首先加载该脚本


此外,说页面加载速度更快也不是事实。它真正做的是更早地加载页面的可视元素,这样看起来页面的加载速度更快。加载页面所有组件的总时间仍然相同。

如果您获得了Microsoft的副本,您可以准确地分析正在发生的事情

我经常看到的是,大多数浏览器在遇到JavaScript文件时停止管道传输请求,并将整个连接用于下载单个文件,而不是并行下载

停止管道传输的原因是允许立即将脚本包含到页面中。从历史上看,很多网站都使用document.write添加内容,下载脚本可以立即获得更无缝的体验

这无疑是雅虎优化所针对的行为。(我在MSDN杂志上看到了与上述解释完全相同的建议。)


需要注意的是,IE 7+和FF 3+不太可能表现出不良行为。(主要是因为使用document.write已经过时,现在有更好的方法来预呈现内容。)

您的页面实际上应该加载得更快。例如,浏览器将打开多个连接以并行下载三个图像。另一方面,大多数浏览器中的
标记会导致浏览器阻止脚本的执行。如果是带有src属性的
标记,浏览器将阻止下载和执行。如果将
标记放在末尾,则可以避免此问题


同时,这意味着这些页面在完成加载之前没有任何JS功能。在可访问性方面,一个很好的练习是确保您的站点运行良好,在JS加载之前可以使用。这确保了页面将(a)适用于连接速度慢的人(b)适用于有障碍的人或使用纯文本浏览器的人。

将它们放在底部与使用属性(甚至更多信息)非常相似。这类似于浏览器无法继续页面布局,除非IMG标记具有宽度和高度信息——如果包含的javascript生成内容,那么浏览器无法继续页面布局,直到它知道其中有什么,以及所有内容有多大


只要您的javascript不需要在onload事件发生之前运行,您就应该能够将脚本标记放在末尾,或者使用defer属性。

如果您是为firefox/safari开发的,您可以随时使用firebug/developer控制台查看文件的加载顺序。

有一些要点

  • 由于JavaScript内部或外部在底部,所以它可以快速加载页面

  • 如果您没有在JavaScript中使用窗口的onLoad方法,它将在渲染后立即开始执行。底部的脚本确保在页面加载后执行脚本

  • 如果脚本作为文件表示外部,则将在HTML图像和其他形成页面视图的可视对象之后呈现

  • 如果您使用的是fireFox,那么就有一个插件来检查性能。
    请点击firefox网站获取此插件

    所以我想,如果js文件足够大,它看起来就像加载了页面,但用户将无法执行任何操作,因为浏览器仍在加载js文件。堆栈溢出有时会发生这种情况,至少是这样。:)用户不能做任何事情并不是真的——他们只是不能做任何需要javascript的事情。对我来说,在加载/解析javascript时,一切都感觉缓慢。例如,使用css在悬停时显示下划线的链接在加载页面之前不会执行任何操作。大多数浏览器在脚本执行时会继续下载,因此这并不完全正确。脚本会阻止其他下载,因此我倾向于加载脚本(即时页面功能所需的脚本除外)在结束body标记之前,然后将依赖于它们的函数放在结束body标记之后。最后,我添加了谷歌分析之类的东西。据我所知,页面并不总是加载得更快(尽管可能会),但用户可以更快地看到内容,这有助于明显的加载速度。在这里咨询一下快速网站的霸主:截至2013年,第一点仍然是正确的。然而,将脚本放在底部不再那么重要了。现在使用HTML5,如果脚本需要更改DOM,最好使用HTML5的“异步”或“延迟”属性将其放在头部,以避免延迟页面的整体呈现。出于布局目的,调用脚本的速度越快,延迟DOMReady事件的时间就越短,页面加载到页面的速度也就越快