Google 웹 로그 분석으로 인해 PageSpeed ​​Insights 99/100-GA를 캐시하려면 어떻게해야합니까? 정적 리소스의 HTTP 헤더에

PageSpeed에서 100/100에 도달하려고하는데 거의 다 왔습니다. Google 웹 로그 분석을 캐시 할 수있는 좋은 솔루션을 찾고 있습니다.

내가받는 메시지는 다음과 같습니다.

브라우저 캐싱 활용 정적 리소스의 HTTP 헤더에 만료 날짜 또는 최대 보존 기간을 설정하면 브라우저가 네트워크를 통하지 않고 로컬 디스크에서 이전에 다운로드 한 리소스를로드하도록 지시합니다. 다음 캐시 가능한 리소스에 대해 브라우저 캐싱을 활용 하십시오 .
http://www.google-analytics.com/analytics.js(2 시간)

내가 찾은 유일한 솔루션은 2012 년부터였으며 좋은 솔루션이라고 생각하지 않습니다. 기본적으로 GA 코드를 복사하여 직접 호스팅합니다. 그런 다음 크론 작업을 실행하여 하루에 한 번 Google을 다시 확인하여 최신 GA 코드를 가져와 교체하십시오.

http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/

Google 웹 로그 분석을 사용하면서 100/100에 도달하려면 어떻게해야합니까?

감사합니다.



답변

글쎄, 구글이 당신을 속이고 있다면, 당신은 구글을 ​​속일 수있다.

이것은 pageSpeed의 사용자 에이전트입니다.

“Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.8 (KHTML, like Gecko; Google Page Speed Insights) Chrome/19.0.1084.36 Safari/536.8”

PageSpeed에 분석 스크립트를 제공하지 않도록 조건을 삽입 할 수 있습니다.

<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>
// your analytics code here
<?php endif; ?>

분명히, 그것은 실제로 개선되지는 않지만 100/100 점수를 얻는 것이 유일한 관심사라면 그렇게 할 것입니다.


답변

galite라는 Google Analytics js 라이브러리의 하위 세트 있지만 원하는대로 캐시 할 수 있습니다.

라이브러리는 Google Analytics의 공개 REST API를 사용하여 사용자 추적 데이터를 Google에 보냅니다. ga-lite에 대한 블로그 게시물 에서 더 많은 내용을 읽을 수 있습니다 .

면책 조항 : 나는이 도서관의 저자입니다. 나는이 특정 문제로 어려움을 겪었으며 내가 찾은 최고의 결과는이 솔루션을 구현하는 것이 었습니다.


답변

다음은 기본 GA 추적을 위해 JS를 사용하는 매우 간단한 솔루션입니다.이 방법은 엣지 캐시 / 프록시에서도 작동합니다 (설명에서 변환 됨).

if(navigator.userAgent.indexOf("Speed Insights") == -1) {
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXXXXXX-X', 'auto');
  ga('send', 'pageview');
}

참고 : 이것이 기본 GA 스크립트입니다. 다른 ga()호출 이있을 수 있으므로 호출하기 전에 항상 사용자 에이전트를 확인해야합니다 ga(). 그렇지 않으면 오류가 발생할 수 있습니다.


답변

나는 그것에 대해 걱정하지 않을 것입니다. 자신의 서버에 두지 마십시오 .Google에 문제가있는 것 같지만 얻을 수있는만큼 좋습니다. 파일을 자신의 서버에두면 많은 새로운 문제가 발생합니다.

방문수를 계산하지 않기 때문에 클라이언트 캐시에서 가져 오는 대신 매번 파일을 호출해야 할 수도 있습니다.

문제가 있다면 Google 인사이트 자체에서 Google 인사이트 URL을 실행하고, 웃고, 긴장을 풀고 작업을 시작하십시오.


답변

Google 문서 pagespeed에서 스크립트를 비동기식으로로드 할 필터를 식별했습니다 .

ModPagespeedEnableFilters make_google_analytics_async

여기에서 설명서를 찾을 수 있습니다. https://developers.google.com/speed/pagespeed/module/filter-make-google-analytics-async

강조해야 할 것은 필터가 위험성이 높다는 것입니다. 문서에서 :

make_google_analytics_async 필터는 실험용이며 광범위한 실제 테스트를 거치지 않았습니다. 다시 쓰기로 인해 오류가 발생하는 경우는 필터에서 값을 반환하는 Google 웹 로그 분석 메소드에 대한 호출이 누락 된 경우입니다. 이러한 방법을 찾으면 다시 쓰기를 건너 뜁니다. 그러나 실격 처리 방법이로드 전에 오거나 “onclick”과 같은 속성에 있거나 외부 리소스에있는 경우 실격 처리 방법이 누락됩니다. 그러한 경우는 드물 것으로 예상됩니다.


답변

varvy.com ( 100/100 Google 페이지 속도 분석 )은 사용자가 페이지를 스크롤하는 경우에만 Google analitycs 코드를로드합니다.

var fired = false;

window.addEventListener("scroll", function(){
    if ((document.documentElement.scrollTop != 0 && fired === false) || (document.body.scrollTop != 0 && fired === false)) {

        (function(i,s,o,g,r,a,m{i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

        ga('create', 'UA-XXXXXXXX-X', 'auto');
        ga('send', 'pageview');

        fired = true;
    }
}, true);


답변

analytics.js를 로컬로 호스팅하고 캐싱 스크립트 또는 수동으로 컨텐츠를 업데이트 할 수 있습니다.

js 파일은 일년에 몇 번만 업데이트되며 새로운 추적 기능이 필요하지 않은 경우 수동으로 업데이트하십시오.

https://developers.google.com/analytics/devguides/collection/analyticsjs/changelog