Google建议脚本应“延期”,但不会提及defer
标记的<script>
属性。我想知道为什么他们甚至没有提到它,考虑到它已经存在了一段时间。
相反,他们建议将脚本注入DOM。与使用更简单和更简洁的defer
属性相比,这有什么特别的好处吗?
https://developers.google.com/speed/docs/best-practices/payload?csw=1#DeferLoadingJS
我认为旧版浏览器存在一些小问题,但在IE10之前我没有支持任何内容,并且最感兴趣的是优化移动浏览器。
更新
有趣的是,如果您使用谷歌地图API,则无法使用任何脚本加载技术。 maps API使用document.write
加载其他脚本,因此不能在延迟或异步脚本中使用它,也不能将其注入DOM,因为document.write
不会触发。如果谷歌遵循他们自己的建议会很好!
答案 0 :(得分:0)
您可以使用现代浏览器上的async
属性阻止脚本在加载期间阻止:
<script async
src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=apiloaded">
</script>
defer
属性表示在页面DOM完全加载之前根本不加载。推迟意味着异步。
对于较早的浏览器支持,您链接的网页速度代码是正确的。
使用Google Maps API,您必须在异步加载API时使用回调参数。这会导致api在内部使用动态脚本插入而不是document.write
调用。您也可以指定一个空的回调参数。
页面速度是帮助优化网站的绝佳工具。我列出了async
属性,因为它允许并行下载maps api(非阻塞)。页面速度建议可能会显示减少加载时间的最常用方法,但它们肯定不是唯一的方法。