为了账号安全,请及时绑定邮箱和手机立即绑定

不引人注目的JavaScript:HTML代码顶部还是底部的<script>?

不引人注目的JavaScript:HTML代码顶部还是底部的<script>?

千巷猫影 2019-10-08 15:03:27
最近,我阅读了Yahoo宣言中的“加快网站访问速度的最佳做法”。他们建议尽可能将JavaScript包含项放在HTML代码的底部。但是确切的地点和时间?我们应该在关闭之前</html>还是之后放置它?最重要的是,我们什么时候仍应将其放在本<head>节中?
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超3个赞

真正不干扰脚本的可能性有两种:

  • 通过头部的script标签包含一个外部脚本文件

  • 通过正文底部的script标签(在之前</body></html>)包含一个外部脚本文件

第二个可能更快,因为最初的Yahoo研究表明,某些浏览器在命中script标签时会尝试加载脚本文件,因此,在完成浏览器之前,它们不会加载页面的其余部分。但是,如果脚本具有“就绪”部分,并且必须在DOM准备就绪后立即执行,则可能需要将其放在头部。另一个问题是布局-如果您的脚本要更改页面布局,则您希望它尽快加载,这样您的页面就不会花很长时间在用户面前重新绘制自身。

如果外部脚本站点位于另一个域(例如外部窗口小部件)上,则可能值得将其放在底部,以避免它延迟页面的加载。

对于任何性能问题,请自己制定基准 -一次完成研究可能会因您自己的本地设置或浏览器的更改而改变。


查看完整回答
反对 回复 2019-10-08
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

从来没有这么干过-雅虎建议将脚本放在结束</body>标记之前,这样会产生一种幻觉,即页面在空的缓存上加载速度更快(因为脚本不会阻止下载文档的其余部分)。但是,如果您有一些要在页面加载时运行的代码,则仅在整个页面加载后才开始执行。如果将脚本放在<head>标记中,它们将在执行之前开始执行-因此,在准备好的缓存中,页面实际上看起来加载得更快。

同样,将脚本放在页面底部的特权并非始终可用。如果需要在依赖于之前加载的库或其他JavaScript代码的视图中包含内联脚本,则必须将这些依赖项加载到<head>标记中。

雅虎的所有建议都很有趣,但并不总是适用,应视具体情况进行考虑。


查看完整回答
反对 回复 2019-10-08
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

就像其他人所说的那样,将其放置在html 主体 的结束标记之前。

前几天,我们接到许多客户的电话,抱怨他们的网站速度非常慢。我们在本地访问了他们,发现他们花了20到30秒来加载单个页面。考虑到服务器性能不佳,我们登录了-但是Web和sql服务器的活动均为〜0%。

几分钟后,我们意识到外部站点已关闭,我们正在将其链接至Javascript跟踪标签。这意味着浏览器正在点击站点顶部script标签,并等待下载script文件。

因此,至少对于第三方脚本/外部脚本,我建议将其作为页面的最后内容。然后,如果它们不可用,浏览器将至少加载该页面直到该点为止-并且用户将忽略该页面。


查看完整回答
反对 回复 2019-10-08
?
温温酱

TA贡献1752条经验 获得超4个赞

总结一下,基于以上建议:

  1. 对于外部脚本(Google Analytics(分析),第三方营销跟踪器等),请将其放置在</body>代码之前。

  2. 对于影响页面布局的脚本,请放在最前面。

  3. 对于依赖“ dom ready”的脚本(如jquery),请考虑放置在前面,</body>除非您出于特殊情况将脚本放在头部。

  4. 如果有依赖项的内联脚本,请将所需的脚本放在头。


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 685 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信