您好我有一个wordpress网站,我根据GT Metrix建议推迟了脚本设置。除了Onesignal推送通知插件
之外,所有脚本都被推迟<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
function js_defer_attr($tag){
$scripts_to_exclude = array('.jsdelivr');
foreach($scripts_to_exclude as $exclude_script){
if(true == strpos($tag, $exclude_script ) )
return $tag;
}
return str_replace( ' src', ' defer="defer" onload src', $tag );
}
add_filter( 'script_loader_tag', 'js_defer_attr', 10 );
我猜它是在页面加载/延迟完成后添加脚本加载?
有任何帮助吗? 干杯
答案 0 :(得分:1)
我在我的网站上做到了,它工作正常……并且将首先加载更重要的页面内容。这样,用户体验会更好。
我会解释我做了什么。
我更改了OneSignal插件代码,并将所有广告代码都移到了另一个文件头。如果文件不存在,则会在运行时创建该文件。
假设我创建了一个名为“ onesignal_deferred.js”的新文件。
然后我将其添加到页面的页脚:
function add_script(url){
var element = document.createElement("script");
element.src = url;
document.body.appendChild(element);
}
function downloadJSAtOnload(){
add_script("add_script("https://<domain>/onesignal_deferred.js")
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
清单也不是必须的...因为它适用于旧版本的Chrome ...因此它是一项新的优化,您可以在每次页面浏览中节省一个请求。
我还可以使用相同的函数“ add_script”来推迟其他脚本,例如Google Analytics(分析)和其他任何脚本。
ps:当您推迟使用Google Analytics(分析)时,有时在载入事件之前关闭的页面不会被视为视图...在这种情况下,您可能会被错误的Google Analytics(分析)报告所欺骗,该报告称页面加载速度更快。这种情况是,加载页面的速度太慢将不会计入……因为Google Analytic脚本甚至都不会加载。