如何异步加载 Javascript 文件?
加载javascript文件你只需要在<script>
标签中包含“async”属性,即
<script src="your path" async></script>
现在这个脚本将在后台下载,而不会导致 JS 渲染问题。
注意:如果您正在使用一些 jquery 插件,即图像缩放或其他任何东西,加载将需要额外的时间,但之后它将正常工作。
为什么将“DEFER”关键字与“ASYNC”一起使用?
您还可以将 defer 属性与 async 属性一起使用。<script>
带有 async 属性的标签强制文件在后台下载并在下载后立即执行。但是带有 defer 属性的异步<script>
会在加载整个站点后强制执行标记。
<script src="" async defer></script>
如何异步加载 CSS 文件?
如果你想首先异步加载你的 CSS 文件,你必须<script>
在你的头文件中放置提供,然后你可以使用 loadCSS() 函数来异步加载你的 CSS 文件。
<script>
// https://github.com/filamentgroup/loadCSS
!function(e){"use strict"
var n=function(n,t,o){function i(e){return f.body?e():void setTimeout(function(){i(e)})}var d,r,a,l,f=e.document,s=f.createElement("link"),u=o||"all"
return t?d=t:(r=(f.body||f.getElementsByTagName("head")[0]).childNodes,d=r[r.length-1]),a=f.styleSheets,s.rel="stylesheet",s.href=n,s.media="only x",i(function(){d.parentNode.insertBefore(s,t?d:d.nextSibling)}),l=function(e){for(var n=s.href,t=a.length;t--;)if(a[t].href===n)return e()
setTimeout(function(){l(e)})},s.addEventListener&&s.addEventListener("load",function(){this.media=u}),s.onloadcssdefined=l,l(function(){s.media!==u&&(s.media=u)}),s}
"undefined"!=typeof exports?exports.loadCSS=n:e.loadCSS=n}("undefined"!=typeof global?global:this)
</script>
现在你只需要使用 loadCSS 函数。
<script>
loadCSS("https://www.yourCSSLinkHere.com");
</script>
通过这种方式,您可以异步加载 CSS 和 JS 文件。
您可以使用 HTTP/2.0 来克服速度问题,因为 HTTP/2.0 允许并行下载文件,但 HTTP/1.0 不允许并行下载文件,否则 HTTP/1.0 遵循 FIFO(先进先出)规则。