我尝试通过在我的脚本上放置一些 async
属性来优化我的页面。它似乎破坏了我的 javascript,因为 $(document).ready
在加载所有脚本之前执行!
我看到我可以通过放置 $(window).load
而不是 $(document).ready
来解决我的问题,但我想知道是否有更好的解决方案。这个解决方案在我的案例中触发了 2 个问题:
- 我必须更改所有
$(document).ready
并告诉所有开发人员不要再使用它 - 脚本将在加载所有图像后执行。我的网站有很多沉重的图像,我真的需要一些脚本在 dom 准备好后尽快执行。
你有什么魔术吗?也许将所有脚本放在最后?使用 defer
而不是 async
?
原文由 tibo 发布,翻译遵循 CC BY-SA 4.0 许可协议
经过广泛的研究,我可以肯定地说,将脚本放在页面末尾是最佳做法。
雅虎同意我的看法:http: //developer.yahoo.com/performance/rules.html#js_bottom
谷歌不谈论这种做法,似乎更喜欢异步脚本: https ://developers.google.com/speed/docs/best-practices/rtt#PreferAsyncResources
恕我直言,将脚本放在页面末尾比异步/延迟有几个好处:
$(document).ready
或$(window).load
我能看到的唯一缺点是浏览器无法并行下载。使用 async/defer 的一个很好的理由是当你有一个完全独立的脚本(不需要依赖执行顺序)并且不需要在特定时间执行时。示例:谷歌分析。