lighthouse - 修复灯塔性能问题 = “减少第三方代码的影响”
问题描述
我在这个网站https://www.sandboxsocial.app上运行 Chrome 的灯塔报告,我得到了这个减少第三方代码的影响,读到这个我发现一个解决方案是使用 dns-prefetch资源的域并将其与预连接配对,如下所示:
<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin>
<link rel="dns-prefetch" href="https://www.googletagmanager.com" />
<link rel="preconnect" href="https://www.google-analytics.com" crossorigin>
<link rel="dns-prefetch" href="https://www.google-analytics.com" />
<link rel="preconnect" href="https://www.facebook.com" crossorigin>
<link rel="dns-prefetch" href="https://www.facebook.com" />
<link rel="preconnect" href="https://www.hotjar.com/" crossorigin>
<link rel="dns-prefetch" href="https://www.hotjar.com/" />
<link rel="preconnect" href="https://www.intercom.com" crossorigin>
<link rel="dns-prefetch" href="https://www.intercom.com" />
<link rel="preconnect" href="https://code.jquery.com" crossorigin>
<link rel="dns-prefetch" href="https://code.jquery.com" />
无论如何,我一直在报告中看到这个问题,这就是我在代码中使用这些资源的方式:
<!-- Facebook Pixel Code -->
<script defer>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'id');
fbq('track', 'PageView');
</script>
<noscript>
<img alt="pixel" height="1" width="1"
src="https://www.facebook.com/tr?id=id&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->
<script>
(function (a, s, y, n, c, h, i, d, e) {
s.className += " " + y;
h.start = 1 * new Date();
h.end = i = function () {
s.className = s.className.replace(RegExp(" ?" + y), "");
};
(a[n] = a[n] || []).hide = h;
setTimeout(function () {
i();
h.end = null;
}, c);
h.timeout = c;
})(window, document.documentElement, "async-hide", "dataLayer", 4000, {
"GTM-******": true,
});
</script>
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != "dataLayer" ? "&l=" + l : "";
j.async = true;
j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, "script", "dataLayer", "GTM-*****");
</script>
<!-- End Google Tag Manager -->
还有什么我可以尝试的吗?, 谢谢!
解决方案
推荐阅读
- mysql - 删除 SQL 重复项
- c# - 如何在 c# 中使用 AddYears 方法获得 2 月 29 日
- c# - Xamarin 使用 OpenID Connect 形成 Azure 身份验证和授权
- angular - observable.throw 不是函数
- excel - 查看多个日期是否在 Excel 中的日期范围内
- elasticsearch - ElasticSearch 6.0.1:.../_forcemerge API 不能随更多线程扩展(被限制?)
- graphics - 拼图的图形表示
- matlab - 如何使 3D 对象具有不同颜色的正面和背面
- typescript - 逆向控制器中的错误处理
- reactjs - 制作网站(地图、道具等新手东西)