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