Yandex metrika 标签减慢网站速度 Google 页面速度 isights 报告

问题描述 投票:0回答:5

因此,在我的所有网页上,我都有此代码,Yandex metrika 使用此代码进行分析。根据谷歌的说法,这个脚本正在减慢我的页面速度,需要改变它的加载方式,以免渲染阻塞、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 来解决此问题吗?

pagespeed pagespeed-insights
5个回答
6
投票

恐怕你没有太多选择,因为它是第三方脚本。

提高分数和感知加载时间的一个选项是将函数调用包装在足够长的

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>

这绝对是一种解决方法,如果你能找到一个,我建议使用另一个不那么臃肿的库。


1
投票
<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>

0
投票

一种选择是使用旧的 Yandex Metrika 代码 (

new Ya.Metrika...
)。 如果您在 Metrika 的高级设置中勾选复选框,则可以查看旧代码。旧代码有一些限制,但它更小并且速度更快。


0
投票

禁用点击地图和网络监控程序可能会有所帮助。


0
投票

你可以在 init 对象中设置 defer:true

© www.soinside.com 2019 - 2024. All rights reserved.