页面速度 - 只需使用延迟属性的任何问题?

时间:2013-11-16 09:21:28

标签: javascript google-maps-api-3 dynamic-script-loading deferred-loading

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不会触发。如果谷歌遵循他们自己的建议会很好!

1 个答案:

答案 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(非阻塞)。页面速度建议可能会显示减少加载时间的最常用方法,但它们肯定不是唯一的方法。

Optimizing map load times