页面速度 - 仅使用 defer 属性的任何问题
Page speed - any problems with simply using defer attribute?
Google建议脚本应该"延迟",但它们没有提到<script>
标签的defer
属性。我想知道为什么他们甚至不提它,考虑到它已经存在了一段时间。
相反,他们建议将脚本注入 DOM。与使用更简单、更干净的defer
属性相比,这有什么特别的好处吗?
https://developers.google.com/speed/docs/best-practices/payload?csw=1#DeferLoadingJS
我收集旧浏览器存在一些小问题,但我不支持IE10之前的任何内容,并且主要对针对移动浏览器进行优化感兴趣。
更新:作为一个有趣的说明,事实证明,如果您使用的是谷歌地图API,则无法使用任何脚本加载技术。maps API 使用 document.write
来加载其他脚本,因此它不能在延迟或异步脚本中使用,也不能注入到 DOM 中,因为document.write
不会触发。如果谷歌遵循他们自己的建议,那就太好了!
您可以通过在现代浏览器上使用 async
属性来防止脚本在加载期间阻塞:
<script async
src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=apiloaded">
</script>
defer
属性指示在页面 DOM 完全加载之前根本不加载。延迟意味着异步。
对于较旧的浏览器支持,您链接的页面速度代码是正确的。
使用 Google 地图 API,您必须在异步加载 API 时使用回调参数。这会导致 api 使用动态脚本插入,而不是在内部document.write
调用。您也可以指定一个空的回调参数。
关于页面速度的说明
页面速度是帮助优化网站的绝佳工具。我列出了 async
属性,因为它允许并行下载地图 api(非阻塞)。页面速度建议可能会显示减少加载时间的最常见方法,但它们绝对不是唯一的方法。
优化地图加载时间
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在选项卡上定义属性'的主窗口对象
- 当加载几个js文件时,defer属性应该如何工作
- 页面速度 - 仅使用 defer 属性的任何问题
- 脚本defer属性的说明