【发布时间】:2017-04-26 00:37:53
【问题描述】:
我假设在底部移动脚本与使用 defer 或 async 属性相同。由于 defer 和 async 不完全兼容旧版浏览器,因此我在页面底部加载了脚本。
<html>
<body>
<!-- whole block of html -->
<script type='text/javascript' src='app.js'></script>
</body>
</html>
在此之前,我运行了 GTmetrix 和 Google PageSpeed insight 等性能基准测试工具。两者都将“渲染阻塞”参数显示为主要问题。我现在有点困惑,因为即使我将这些脚本移到底部以允许首先加载内容/html;这些工具仍然报告渲染阻塞是一个主要问题。
我确实查看了其他 StackOverflow 帖子,强调虽然在 底部加载的脚本必须具有 'defer' 属性。
我有几个问题:
- 以上是真的吗?
- 这些工具是否专门寻找“延迟”或“异步”属性?
- 如果我必须提供一个回退 w.r.t defer(专门针对 IE 浏览器),我是否需要使用条件语句为 IE 加载非延迟脚本?
请提出最佳方法。提前谢谢你。
【问题讨论】:
-
不确定是什么问题?你想达到什么目的?
-
抱歉,如果我不能更好地描述它。我正在尝试优化一个 HTML 页面,该页面包含许多 javascript,主要是外部和应用程序库。 ** 由于许多性能工具表明 Javascript 会导致渲染阻塞,因此需要在 HTML 内容之后加载延迟加载。在我的情况下,将 javascripts 移动到底部仍然显示渲染阻塞是一个主要问题。我的问题是我的理解是错误的还是我需要做些什么来解决渲染阻塞。
-
您是否尝试在
window的load事件中加载脚本? -
两者。最初它在 HEAD 中,但根据建议,我将它移到底部(就在 body 标签结束之前)。仍然显示相同的结果
-
通过在
window的load事件中加载脚本,意味着在html中不包含<script>标签;而是在windowload事件处理程序中动态加载脚本,方法是在呈现html后动态创建<script>元素并将其附加到document。
标签: javascript html performance asynchronous render