2016-05-23 52 views
2

我需要速度提高我webpage.I读了很多关于使用asyncdeferattribute用于提高初始页speed.All的js脚本略高于</body> tag.Please定义的建议如何有效地在我的页面中使用这些属性?通过异步提高网页加载速度和延迟属性

<html> 
<head> 

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 
<link rel="stylesheet" href="/static/css/style/mystyle.css"> 


</head> 
<body> 
<!--HTML content--> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular-touch.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.10/angular-cookies.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.11.0/ui-bootstrap-tpls.min.js"></script> 
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular-route.min.js"></script> 

google analytics script 

</body> 
</html> 

回答

5

要使用延迟:

<script src="path" defer="defer"></script> 

要使用异步:

<script src="path" async="async"></script> 

当使用延迟/异步?

如果你需要你的脚本异步加载ie。加载html和css脚本时使用asyc属性会让浏览器在后台加载它们。他们将被加载,而其他事情的工作。

如果您需要在完全加载html和css之后加载脚本,那么您可以使用defer属性。

因此,您需要小心使用这种技术,因为这些属性有些javascript代码可能无法正常工作,因为您希望它应该是。

如何有效地使用它们?

我不建议你使用异步因为它可能会因文件大小和/或脚本的任何命令加载任何脚本(在异步加载),所以你的功能将受到阻碍。

因此,只需使用延迟来满足谷歌页面速度的要求,这将加载脚本,你希望它应该有这样的顺序。

尽管使用延迟,您可能会对您的网站产生影响,因为您可能已经调用了一些应该在文档准备好之前运行的脚本。在这种情况下,你不应该按照谷歌页面速度的说明,让它成为它是如何。

最后,它取决于你和你的脚本。

+1

我的问题是如何有效地在这种情况下添加这些属性?我已经定义了所有js脚本在body标签的末尾。所以使用异步或延迟对页面速度产生任何显着影响 –

+0

是否最好为Google分析代码使用异步? –

+0

@akhilviswam是的。您可以。但要小心,并测试自己,如果所有的东西都在工作...... –

0

你不应该改变任何东西或使用defer所有。

Bootstrap要求jQuery被加载(虽然你并没有真正加载Bootstrap在这里,但一些Angular-Bootstrap模板)。所以你不能使用async来加载任何这些资源。此外,您正在加载大量的Angular资源,这些资源取决于主要的angular.min.js资源,因此您在这里也不能使用async

您可以对所有人使用defer,但页面渲染速度不会更快。唯一的区别是脚本一旦被全部加载就会被执行,而不是一个接一个地被执行(一旦被下载就执行),但是这并不会改变关于页面加载时间的任何事情。