Yandex metrica 标签降低了网站速度 google pagespeed insights 报告
Yandex metrika tag slowing down site speeds google page speed isights reporting
因此,在我所有的网页上,我都有 Yandex metrika 用于分析的代码。根据 google,此脚本正在减慢我的页面速度,需要改变它的加载方式以不被渲染阻塞、输入阻塞的 TTI 时间、FID 首次输入延迟阻塞、首次内容绘制阻塞。
<script data-cfasync="false" type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
Google 的页面速度报告如下
https://developers.google.com/speed/pagespeed/insights/
我可以将 Yandex metrika javascript 修改成什么以解决此问题?
恐怕你没有太多选择,因为它是第三方脚本。
提高分数和感知加载时间的一个方法是将函数调用包装在一个 setTimeout
集合中,足够长的时间以延迟加载脚本,直到基本内容加载完毕。
<script data-cfasync="false" type="text/javascript">
setTimeout(function(){
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
}, 5000); //set this as high as you can without ruining your stats.
</script>
这绝对是一种解决方法,如果您能找到的话,我建议您使用一个不那么臃肿的库。
<script data-cfasync="false" type="text/javascript">
(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("load", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
}, false);
})();
</script>
一种选择是使用旧的 Yandex Metrika 代码 (new Ya.Metrika...
)。
如果您在 Metrika 的高级设置中设置复选框,您可以查看旧代码。旧代码有一些限制,但它更小,速度也快了好几倍。
禁用 clickmap 和 webvisor 可能会有帮助。
因此,在我所有的网页上,我都有 Yandex metrika 用于分析的代码。根据 google,此脚本正在减慢我的页面速度,需要改变它的加载方式以不被渲染阻塞、输入阻塞的 TTI 时间、FID 首次输入延迟阻塞、首次内容绘制阻塞。
<script data-cfasync="false" type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
Google 的页面速度报告如下 https://developers.google.com/speed/pagespeed/insights/
我可以将 Yandex metrika javascript 修改成什么以解决此问题?
恐怕你没有太多选择,因为它是第三方脚本。
提高分数和感知加载时间的一个方法是将函数调用包装在一个 setTimeout
集合中,足够长的时间以延迟加载脚本,直到基本内容加载完毕。
<script data-cfasync="false" type="text/javascript">
setTimeout(function(){
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
}, 5000); //set this as high as you can without ruining your stats.
</script>
这绝对是一种解决方法,如果您能找到的话,我建议您使用一个不那么臃肿的库。
<script data-cfasync="false" type="text/javascript">
(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("load", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(XXXXXXXX, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
}, false);
})();
</script>
一种选择是使用旧的 Yandex Metrika 代码 (new Ya.Metrika...
)。
如果您在 Metrika 的高级设置中设置复选框,您可以查看旧代码。旧代码有一些限制,但它更小,速度也快了好几倍。
禁用 clickmap 和 webvisor 可能会有帮助。