【发布时间】:2017-11-27 13:47:09
【问题描述】:
考虑到最佳加载性能,所有 JS 都是异步加载的。 但在我的网站中,我使用的是 Google Adsense。为了延迟加载 Google Adsense 广告,我使用了AdsenseLoader.js。但是,如果我异步加载所有 JS,则某些横幅无法正确加载。
如果我将 jQuery 插件代码和 AdsenseLoader 内联在 HTML 中,所有 Adsense 横幅都会正确加载。
代码在页脚中是这样的:
<script defer>
/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
!function(a,b){"object"==typeof module&&" /* ......... AND ALL JQUERY PLUGIN CODE MINIFIED HERE..... */
/* Adsense loader https://github.com/osvaldasvalutis/adsenseLoader.js */
!function(t,n,a,e){"use strict";var o=t(n) /* ......... AND ALL ADSENSELOADER PLUGIN CODE MINIFIED HERE..... */
</script>
<script async src="assets/js/main.js"></script> <!-- ALL OTHER JS FUNCIONS LOADED ASYNC -->
<!-- HERE I LOAD THE ADSENSE BANNERS -->
<script defer>
$( '.adsense' ).adsenseLoader({
'laziness': 2,
onLoad: function( $ad ){
$ad.addClass( 'adsense--loaded' );
}
});
</script>
我需要将 jQuery 和 AdsenseLoader 内联,因为如果我将 main.js ASYNC 放入其中,一些 adsense 横幅将无法正确加载。
如果我正常加载 jQuery 和 AdsenseLoader,就像这样:
<script src="assets/js/jquery.js"></script>
<script src="assets/js/adsenseloader.js"></script>
它会导致一个 JAVASCRIPT RENDER BLOCK。
我认为的独特方法是将所有“批评”JS 缩小内联在 HTML 页脚中,并且可以完美运行。但我不知道这是否是个好主意,因为我从未在其他网站上看到过这个。
PS.:我是巴西人,抱歉我的英语不好。
编辑 1
这是我footer.php的截图
【问题讨论】:
-
我会从 CDN 链接之一链接 jQuery - 您的许多访问者很有可能已经缓存了它。
-
你把
-
@delinear 谢谢你的回答。我同意你的观点,但如果
<script>标签不是异步的,则会导致 javascript 渲染阻塞。如果是异步的,会导致加载某些横幅时出错。你知道将 jquery 内联放在 HTML 页脚中是否有问题吗? -
@sebastian-krysiak 谢谢你的回答。所有脚本都在页脚中。我用文件
footer.php更新了问题 -
@DR.Somar 据我所知没有技术上的理由不这样做,只要您知道缺点。至于它是否会使您的用例变得更好或更糟,唯一真正知道的方法是尝试它并运行一些测试。
标签: javascript jquery html