[英]How to asynchronously load CSS and JavaScript
好的,我怎样才能使用loadCSS( https://github.com/filamentgroup/loadCSS/blob/master/README.md )来允许浏览器异步加载CSS和JavaScript?
我头上有这个标签:
<link rel="preload" href="http://zoidstudios.com/assets/css/main.css" as="style" onload="this.rel='stylesheet">
<noscript><link rel="stylesheet" href="http://zoidstudios.com/assets/css/main.css"></noscript>
这在我的html文件的底部:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://use.fontawesome.com/eb515f50a5.js"></script>
<script src="http://zoidstudios.com/assets/js/functions.min.js"></script>
<script src="http://zoidstudios.com/assets/js/loadcss.min.js"></script>
<script>
loadCSS( "http://zoidstudios.com/assets/css/main.css" );
</script>
问题不在于CSS。 如果PageSpeed认为您的页面加载陷入困境,则可能是<body>
标记末尾的所有<script>
标记的结果。 仅仅因为它们被放置在body标签中并不意味着它们是异步的。
您可以将它们全部保留在<head>
标记中。 您可以包含属性async
或defer
以获取异步加载:请查看此说明 。
所以,这样的事情应该做:
<script
src="http://zoidstudios.com/assets/js/functions.min.js"
defer>
</script>
请注意,如果任何这些脚本期望解析DOM(即,他们希望某些元素已经存在),则应使用defer
而不是async
,如链接文章中所述。 或者,您可以将它们保留在<body>
标记中,并使用async
。
如果我的假设是正确的(PageSpeed不支持<link>
标签上的rel='preload'
),请注意您的问题中链接的文档建议您
包括loadCSS脚本,以及页面中的loadCSS rel = preload polyfill脚本(内联立即运行,如果CSS是低优先级,则在外部文件中)
您可以使用推荐的polyfill消除最终警告。
一般问题,“我如何异步加载CSS?” 已经在StackOverflow上被多次询问和回答 ,因为我相信你知道!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.