首先,请记住,“删除未使用的 CSS”更多的是一个指导点(前提是它不是渲染阻塞),它表明它是浪费的字节(如果 recaptcha 触发它实际上不是,因为它然后需要那个CSS来渲染图像'你是人工检查'等)
虽然我不能给你一个理想的答案,因为它是你无法控制的代码,但我可以给你两种方法来测试它的影响/它是否真的是一个问题和一个绕过加载顺序的“hack”。
使用应用节流进行测试
模拟限制有时会导致意外行为,这是 Page Speed Insights 网站使用的。
如果您使用浏览器审核(使用相同的引擎 - Lighthouse)来运行测试,您可以选择将限制从模拟更改为应用。
尽管您的分数会发生变化(applied throttling
比不那么宽容simulated throttling
),但您会获得更真实的事件顺序,因为延迟和减速是“真实的”,而不是基于全速加载页面并应用公式来猜测加载时间做出最佳猜测。
在 Chrome (F12) 中打开开发工具 -> 审核 -> 节流 -> 设置为 Applied Slow 4G, 4x CPU Slowdown。-> 运行审计。
在使用这种评估页面速度的方式时,看看问题是否仍然存在。
如果是这样,现实世界性能的解决方法/测试如下:-
强制脚本在一段时间后加载(黑客方式!)
这不是一个理想的解决方案,但它有利于测试,如果它确实减慢了您的网站关键加载时间,作为最后的手段。
5 秒后动态插入脚本。
(请注意,以下代码未经测试,可能无法正常工作,仅用于说明,为您指明正确的方向。您很可能不需要该script.onload
部分并且可以正常包含该部分)
setTimeout(function(){
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onload = function() {
grecaptcha.ready(function() {
grecaptcha.execute('_reCAPTCHA_site_key_', {action: 'homepage'}).then(function(token) {
...
});
});
}
script.src = "https://www.google.com/recaptcha/api.js?render=_reCAPTCHA_site_key";
head.appendChild(script);
}, 5000);