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.)