NextJs 和 GTM 的性能问题

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

最近我将 GTM 集成到了我的 NextJs 项目中。在集成完成之前,我的 Lighthouse 性能得分曾经达到 96 分。集成后,分数降到了38分。有没有一种既高效又不影响网站性能的方式集成GTM呢?

我的集成如下 - 在 _document.tsx 文件中:

<Head>
          <link rel="shortcut icon" href="/favicon.ico" />
          <script
            async
            src={`https://www.googletagmanager.com/gtag/js?id=${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}`}
            defer
          />
          <script
            dangerouslySetInnerHTML={{
              __html: `
                window.dataLayer = window.dataLayer || [];
                function gtag(){dataLayer.push(arguments);}
                gtag('js', new Date());
                gtag('config', '${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}', {
                  page_path: window.location.pathname,
                });
              `
            }}
          />
        </Head>
reactjs next.js google-tag-manager lighthouse
2个回答
0
投票

你可能想这样做

import Script from "next/script";
     
     <Head>
      <link rel="shortcut icon" href="/favicon.ico" />
      <Script
        strategy="afterInteractive"
        src={`https://www.googletagmanager.com/gtag/js?id=${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}`}
        defer
      />
      <Script 
        strategy="afterInteractive"
        dangerouslySetInnerHTML={{
          __html: `
            window.dataLayer = window.dataLayer || [];
            function gtag(){dataLayer.push(arguments);}
            gtag('js', new Date());
            gtag('config', '${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}', {
              page_path: window.location.pathname,
            });
          `
        }}
      />
    </Head>

考虑将“afterInteractive”切换为“beforeInteractive”并且 如果这没有帮助,您可以将 gtag 脚本放在页脚中


0
投票

您还可以使用lazyOnload,nextjs将在获取页面上的所有资源后加载脚本。

<Script 
    strategy="lazyOnload"
    dangerouslySetInnerHTML={{
      __html: `
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', '${process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS}', {
          page_path: window.location.pathname,
        });
      `
    }}
  />
© www.soinside.com 2019 - 2024. All rights reserved.