Gatsby 사이트에서 Google Analytics(gtag)를 효율적으로 로드
                                            
                                                
                                                
                                                
                                                
                                                
                                                 8330 단어  reactanalyticsjavascriptgatsby
                    
gatsby-plugin-google-analytics를 설치하는 경우) 성능이 많이 저하됩니다. 몇 달 전에는 성능에 집착했기 때문에 내 사이트 중 하나에서 분석을 제거하기도 했습니다.하지만 새로 구축한 사이트에서 분석을 제거하고 싶지 않았고 성능도 저하시키고 싶지 않았습니다. 그래서 해결책을 찾기 시작했고 분석 스크립트 로드를 지연시키는 방법을 찾았습니다here. 새 gtag 스크립트 설정과 일치하도록 스크립트를 수정했습니다. 특정 기간이 지난 후 또는 사용자가 사이트와 상호 작용하기 시작하면 gtag 스크립트를 삽입합니다.
gtag 설정
gatsby-browser.js 파일에 다음 스크립트를 추가해야 합니다. 여기에서는 환경 변수를 사용하여 Google 애널리틱스 추적 ID를 숨깁니다. .env 파일을 추가하고 거기에 GATSBY_GA_TRACKING_ID 값을 제공해야 합니다. onreadystatechange 메서드에서 스크립트 로딩 지연을 조정할 수 있습니다(3500ms 동안 최상의 결과를 얻었습니다).function initGTM() {
  if (window.isGTMLoaded) {
    return false;
  }
  window.isGTMLoaded = true;
  const script = document.createElement('script');
  script.type = 'text/javascript';
  script.async = true;
  script.src = `https://www.googletagmanager.com/gtag/js?id=${process.env.GATSBY_GA_TRACKING_ID}`;
  script.onload = () => {
    window.dataLayer = window.dataLayer || [];
    function gtag() {
      dataLayer.push(arguments);
    }
    gtag('js', new Date());
    gtag('config', `${process.env.GATSBY_GA_TRACKING_ID}`);
  };
  document.head.appendChild(script);
}
function loadGTM(event) {
  initGTM();
  event.currentTarget.removeEventListener(event.type, loadGTM);
}
exports.onClientEntry = () => {
  document.onreadystatechange = () => {
    if (document.readyState !== 'loading') {
      setTimeout(initGTM, 3500);
    }
  };
  document.addEventListener('scroll', loadGTM);
  document.addEventListener('mousemove', loadGTM);
  document.addEventListener('touchstart', loadGTM);
};
GitHub 작업 환경에 추적 ID 추가
GitHub Action을 사용하여 내 사이트 배포를 자동화하고 있습니다. 따라서 배포 서버에서 환경 변수를 읽어야 합니다. 프로젝트에
.env 파일을 제공할 수 있지만 이것은 안전하지 않습니다. GitHub의 프로젝트 비밀을 사용하여 자격 증명/비밀을 숨길 수 있습니다. 프로젝트의 설정 페이지로 이동하고 메뉴에서 Secrets 페이지로 이동합니다. 이제 GATSBY_GA_TRACKING_ID라는 저장소 비밀을 추가하고 추적 ID를 값으로 제공하십시오.워크플로 구성 파일에서
env 라는 섹션을 추가합니다. env 섹션에 아래와 같이 환경 변수를 추가합니다. env 섹션은 워크플로 구성에서 jobs 섹션 앞에 와야 합니다.name: GitHub Pages
on:
  push:
    branches:
      - main
env:
  GATSBY_GA_TRACKING_ID: ${{secrets.GATSBY_GA_TRACKING_ID}}
jobs:
  deploy:
  ......
  ......
어려운 수업
If you want to access the environment variable in the BROWSER in a Gatsby site, prefix your variable name with
GATSBY_.
글 읽어주셔서 감사하고, 도움이 되셨다면 공유 부탁드립니다.
Reference
이 문제에 관하여(Gatsby 사이트에서 Google Analytics(gtag)를 효율적으로 로드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sh4hids/load-google-analytics-gtag-efficiently-in-gatsby-site-8h8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)