PageSpeed ​​Insights 99/100 เนื่องจาก Google Analytics - ฉันจะแคช GA ได้อย่างไร


243

ฉันกำลังพยายามที่จะเข้าถึง 100/100 ใน PageSpeed ​​และฉันเกือบจะไปแล้ว ฉันพยายามหาทางออกที่ดีในการแคช Google Analytics

นี่คือข้อความที่ฉันได้รับ:

การใช้ประโยชน์จากการแคชของเบราว์เซอร์การตั้งค่าวันที่หมดอายุหรืออายุสูงสุดในส่วนหัว HTTP สำหรับทรัพยากรแบบคงที่สั่งให้เบราว์เซอร์โหลดทรัพยากรที่ดาวน์โหลดมาก่อนหน้านี้จากดิสก์ภายในเครื่องแทนที่จะผ่านเครือข่าย ใช้ประโยชน์จากการแคชเบราว์เซอร์สำหรับทรัพยากรที่แคชได้ดังต่อไปนี้: http://www.google-analytics.com/analytics.js (2 ชั่วโมง)

ทางออกเดียวที่ฉันพบคือจาก 2012 และฉันไม่คิดว่ามันเป็นทางออกที่ดี เป็นหลักคุณคัดลอกรหัส GA และโฮสต์ด้วยตัวคุณเอง จากนั้นคุณเรียกใช้งาน cron เพื่อตรวจสอบ Google วันละครั้งเพื่อรับรหัส GA ล่าสุดและแทนที่

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

ฉันสามารถทำอะไรได้อีกเพื่อเข้าถึง 100/100 ในขณะที่ใช้ Google Analytics ด้วย

ขอบคุณ.


1
ฉันใช้วิธี cron โดยไม่ต้องใช้ cron (โหลดและแคช onload ฉันสามารถแบ่งปันรหัส PHP ถ้าคุณต้องการ) และฉันได้รับการแก้ไขข้อเสนอแนะการแก้ไข GA ของฉัน แต่มีปัญหาเล็กน้อยเหลืออยู่ที่นั่น: ฉันออกจาก "Cache-Control: max-age = 604800" header ซึ่งสูงกว่าแคช 5 นาทีมาก
Roman Losev

6
นั่นเป็นความคิดที่ดีจริง ๆ ใช่ไหม? การแคชไฟล์นี้บนเซิร์ฟเวอร์ของคุณหมายความว่าเบราว์เซอร์จะต้องดาวน์โหลดซ้ำอีกครั้งแทนที่จะใช้ไฟล์ที่แคชไว้แล้วโดยไปที่ไซต์อื่นโดยใช้ Google Analytics ดังนั้นจึงอาจทำให้ผู้เข้าชมของคุณช้าลงเล็กน้อย
s427

คำตอบ:


241

ถ้า Google โกงคุณคุณสามารถโกง Google ได้:

นี่คือตัวแทนผู้ใช้สำหรับ 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 นี้จะทำมัน


4
ฉลาด ...... สงสารฉันใช้การแคชขอบเพราะสคริปต์นี้จะทำงานเฉพาะเมื่อคำขอมาถึงที่จุดเริ่มต้นของคุณสำหรับทุกคำขอ :(
เอมี่เนวิลล์

49
โหลดผ่าน JS แล้ว :)if(navigator.userAgent.indexOf("Speed Insights") == -1) { /* analytics here */ }
ครึ่งบ้าคลั่ง

1
@Jim ดูstackoverflow.com/questions/10734968/… - คุณจะใช้วิธีนี้{ }ในตัวอย่างของฉันพร้อมกับ JS อื่น ๆ ที่ GA ใช้ (เช่นga('create', 'UA-XXXXX-Y', 'auto'); ga('send', 'pageview');หรืออะไรก็ตาม)
Half Crazed

1
@Jim ฉันได้เพิ่มคำตอบซึ่งครอบคลุมถึงเรื่องนี้
Half Crazed

6
คำเตือน: สิ่งนี้ไม่ทำงานอีกต่อไป Page Speed ​​Insights ขับเคลื่อนโดย Lighthouse ใช้ userAgent เริ่มต้นที่ไม่สามารถตรวจพบได้อีกต่อไป
David Vielhuber

39

มี js ไลบรารี่ส่วนหนึ่งของ Google Analytics ชื่อga-liteที่คุณสามารถแคชได้ตามที่คุณต้องการ

ห้องสมุดใช้ REST API สาธารณะของ Google Analytics เพื่อส่งข้อมูลการติดตามผู้ใช้ไปยัง Google คุณสามารถอ่านเพิ่มเติมจากบล็อกโพสต์เกี่ยวกับ GA-Lite

คำเตือน:ฉันเป็นผู้เขียนของห้องสมุดนี้ ฉันต่อสู้กับปัญหาเฉพาะนี้และผลลัพธ์ที่ดีที่สุดที่ฉันพบคือการนำโซลูชันนี้ไปใช้


21

นี่เป็นวิธีแก้ปัญหาที่ง่ายมากโดยใช้ JS สำหรับการติดตาม GA พื้นฐานซึ่งจะใช้กับแคช / พร็อกซีขอบ (ซึ่งถูกแปลงจากความคิดเห็น):

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()เสมอมิฉะนั้นอาจเกิดข้อผิดพลาด


2
ทำปฏิกิริยากับ "หมายเหตุ:" คุณสามารถประกาศgaเป็นga = function(){};ก่อนข้อมูลโค้ดที่จะล้มเหลวอย่างเงียบ ๆ เมื่อดำเนินการเป็นga();ดังนั้นคุณจึงไม่ต้องตรวจสอบการดำรงอยู่ของฟังก์ชั่นนี้ทุกที่ในรหัสของคุณ
IstvánPálinkás

1
วิธีการเพิ่มนี้ในสคริปต์ <script async src =" googletagmanager.com/gtag/js?id=UA-xx6600xx-1"></... >
Navnish Bhardwaj

16

ฉันจะไม่กังวลเกี่ยวกับมัน อย่าวางไว้บนเซิร์ฟเวอร์ของคุณเองดูเหมือนว่านี่จะเป็นปัญหากับ Google แต่ก็ดีพอสมควร การวางไฟล์ไว้บนเซิร์ฟเวอร์ของคุณจะสร้างปัญหาใหม่มากมาย

พวกเขาอาจต้องการไฟล์ที่จะเรียกทุกครั้งแทนที่จะได้รับมันจากแคชของลูกค้าเนื่องจากวิธีการที่คุณจะไม่นับการเข้าชม

หากคุณมีปัญหาที่จะรู้สึกดีกับสิ่งนั้นให้เรียกใช้ URL ข้อมูลเชิงลึกของ Google ในข้อมูลเชิงลึกของ Google ตัวเองหัวเราะหัวเราะผ่อนคลายและทำงานของคุณต่อไป


68
เขาต้องการที่จะรู้ว่าเขาสามารถไปถึง 100 ได้อย่างไรถ้าไม่ใช่ 99 ก็โอเค
Erick Engelhardt

4
คำตอบนี้ไม่เป็นความจริงที่ไฟล์ Analytics.js ถูกดาวน์โหลดมาจะไม่ส่งผลต่อการวิเคราะห์แทร็ก ปัญหาของการโฮสต์ไฟล์วิเคราะห์ของคุณเองคือคุณต้องอัปเดตเป็นเวอร์ชันล่าสุดด้วยตนเองเสมอ (สองสามครั้งต่อปี)
Matthew Dolman

1
ขอบคุณ Matthew ที่ชี้ให้เห็น เห็นได้ชัดว่าฉันผิดซึ่งเป็นสิ่งที่ดี แต่ก็ยังฉันไม่คิดว่ามันเป็นความคิดที่ดีที่จะโฮสต์ไฟล์นี้ไว้บนเซิร์ฟเวอร์ของคุณเพราะฉันสามารถจินตนาการได้ว่ามันจะสร้างปัญหาใหม่มากมาย คำถาม OP คือทำอย่างไรจึงจะได้ 100 บนเพจเพดและคำตอบของฉันคือไม่ต้องกังวลกับการไปถึง 100 นั่นอาจเป็นคำตอบที่น่ารำคาญจริงๆ แต่นั่นคือฉัน
Leo Muller

3
คำตอบที่ดีสำหรับคนที่หลงทางโดยคิดว่า 99 นั้นไม่ดีพอ อุทิศเวลาของคุณให้ดีขึ้นเพื่อแก้ไขปัญหาที่แท้จริง
linqu

@ErickEngelhardt คุณถูกต้อง แต่ถ้ามีคนถามคำถามที่คุณคิดว่าพวกเขาไม่ได้ตั้งเป้าหมายที่ดีที่สุดคุณควรจะให้พวกเขารู้ว่าทางออกใดที่จะช่วยพวกเขาได้ดีขึ้น
ผู้สังเกตการณ์

10

ใน Google เอกสารพวกเขาได้ระบุpagespeedตัวกรองที่จะโหลดสคริปต์แบบอะซิงโครนัส:

ModPagespeedEnableFilters make_google_analytics_async

คุณสามารถค้นหาเอกสารได้ที่นี่: https://developers.google.com/speed/pagespeed/module/filter-make-google-analytics-async

สิ่งหนึ่งที่ควรเน้นคือตัวกรองถือว่ามีความเสี่ยงสูง จากเอกสาร:

ตัวกรอง make_google_analytics_async นั้นยังอยู่ระหว่างการทดลองและยังไม่ได้ทำการทดสอบในโลกแห่งความเป็นจริง กรณีหนึ่งที่การเขียนซ้ำอาจทำให้เกิดข้อผิดพลาดคือหากตัวกรองไม่ได้รับสายไปยังวิธีการของ Google Analytics ที่ส่งคืนค่า หากพบวิธีการดังกล่าวการเขียนซ้ำจะถูกข้ามไป อย่างไรก็ตามวิธีการตัดสิทธิ์จะไม่ได้รับหากพวกเขามาก่อนการโหลดอยู่ในแอตทริบิวต์เช่น "onclick" หรือหากพวกเขาอยู่ในแหล่งข้อมูลภายนอก กรณีเหล่านี้คาดว่าจะหายาก


7

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

7
เกิดอะไรขึ้นถ้าผู้เข้าชมไม่เลื่อน แต่เพียงคลิกที่ลิงค์ เขาจะไม่ถูกนับในการวิเคราะห์
Ross Ivantsiv

@RossIvantsiv คุณสามารถจัดการกับการคลิก!
ar099968

6

คุณสามารถลองโฮสต์ analytics.js ในพื้นที่และอัพเดทเนื้อหาด้วยสคริปต์แคชหรือด้วยตนเอง

ไฟล์ js ได้รับการอัปเดตเพียงไม่กี่ครั้งต่อปีและหากคุณไม่ต้องการคุณสมบัติการติดตามใหม่ให้อัปเดตด้วยตนเอง

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


2
ถูกเตือนว่า Google ไม่ได้รับการสนับสนุนอย่างชัดเจน: support.google.com/analytics/answer/1032389?hl=th
เหล็กกล้า

6

store localy analy.j.js แต่ไม่แนะนำโดย google: https://support.google.com/analytics/answer/1032389?hl=th

ไม่แนะนำเพราะ Google สามารถอัปเดตสคริปต์ได้เมื่อต้องการดังนั้นควรทำสคริปต์ที่ดาวน์โหลดจาวาสคริปต์การวิเคราะห์ในแต่ละสัปดาห์และคุณจะไม่มีปัญหา!

ด้วยวิธีการแก้ปัญหานี้ป้องกัน adblock จากการปิดกั้นสคริปต์วิเคราะห์ Google


มันไม่ข้าม Adblock อย่างสมบูรณ์ (ยังบล็อกการโทร ajax) แต่อย่างน้อยคุณจะได้รับเซสชันและการดูหน้าเว็บ
NiloVelez

5

คุณสามารถพร็อกซีสคริปต์ google Analytics ผ่านเซิร์ฟเวอร์ของคุณบันทึกในเครื่องและอัปเดตไฟล์อัตโนมัติทุกชั่วโมงเพื่อให้แน่ใจว่าเป็นเวอร์ชันล่าสุดจาก google เสมอ

ฉันทำสิ่งนี้ในสองสามไซต์แล้วและทุกอย่างก็ใช้ได้ดี

เส้นทางพร็อกซี Google Analytics ในสแต็ค NodeJS / MEAN

นี่คือวิธีที่ฉันใช้มันในบล็อกของฉันที่สร้างด้วยกอง MEAN

router.get('/analytics.js', function (req, res, next) {
    var fileUrl = 'http://www.google-analytics.com/analytics.js';
    var filePath = path.resolve('/content/analytics.js');

    // ensure file exists and is less than 1 hour old
    fs.stat(filePath, function (err, stats) {
        if (err) {
            // file doesn't exist so download and create it
            updateFileAndReturn();
        } else {
            // file exists so ensure it's not stale
            if (moment().diff(stats.mtime, 'minutes') > 60) {
                updateFileAndReturn();
            } else {
                returnFile();
            }
        }
    });

    // update file from remote url then send to client
    function updateFileAndReturn() {
        request(fileUrl, function (error, response, body) {
            fs.writeFileSync(filePath, body);
            returnFile();
        });
    }

    // send file to client
    function returnFile() {
        res.set('Cache-Control', 'public, max-age=' + oneWeekSeconds);
        res.sendFile(filePath);
    }
});

วิธีการกระทำของพร็อกซี Google Analytics ใน ASP.NET MVC

นี่คือวิธีที่ฉันใช้มันในเว็บไซต์อื่นที่สร้างด้วย ASP.NET MVC

public class ProxyController : BaseController
{
    [Compress]
    public ActionResult GoogleAnalytics()
    {
        var fileUrl = "https://ssl.google-analytics.com/ga.js";
        var filePath = Server.MapPath("~/scripts/analytics.js");

        // ensure file exists 
        if (!System.IO.File.Exists(filePath))
            UpdateFile(fileUrl, filePath);

        // ensure file is less than 1 hour old
        var lastModified = System.IO.File.GetLastWriteTime(filePath);
        if((DateTime.Now - lastModified).TotalMinutes > 60)
            UpdateFile(fileUrl, filePath);

        // enable caching for 1 week for page speed score
        Response.AddHeader("Cache-Control", "max-age=604800");

        return JavaScript(System.IO.File.ReadAllText(filePath));
    }

    private void UpdateFile(string fileUrl, string filePath)
    {
        using (var response = WebRequest.Create(fileUrl).GetResponse())
        using (var dataStream = response.GetResponseStream())
        using (var reader = new StreamReader(dataStream))
        {
            var body = reader.ReadToEnd();
            System.IO.File.WriteAllText(filePath, body);
        }
    }
}

นี่คือ CompressAttribute ที่ใช้โดย MVC ProxyController สำหรับการบีบอัด Gzip

public class CompressAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
        if (string.IsNullOrEmpty(encodingsAccepted)) return;

        encodingsAccepted = encodingsAccepted.ToLowerInvariant();
        var response = filterContext.HttpContext.Response;

        if (encodingsAccepted.Contains("gzip"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (encodingsAccepted.Contains("deflate"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
}

อัปเดตสคริปต์ Google Analytics

ในฝั่งไคลเอ็นต์ฉันผนวกเส้นทางการวิเคราะห์ด้วยวันที่ปัจจุบันจนถึงหนึ่งชั่วโมงดังนั้นเบราว์เซอร์จะไม่ใช้รุ่นแคชมากกว่าหนึ่งชั่วโมง

<!-- analytics -->
<script>
    (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', '/analytics.js?d=' + new Date().toISOString().slice(0, 13), 'ga');
</script>


4

PHP

เพิ่มใน HTML หรือโค้ด PHP ของคุณ:

<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Speed Insights') === false): ?>
  <script>
    (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-PUT YOUR GOOGLE ANALYTICS ID HERE', 'auto');
    ga('send', 'pageview');
  </script>
<?php endif; ?>

JavaScript

ใช้งานได้ดีกับ JavaScript:

  <script>
  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-<PUT YOUR GOOGLE ANALYTICS ID HERE>', 'auto');
    ga('send', 'pageview');
  }
  </script>

NiloVelezพูดแล้ว:เห็นได้ชัดว่ามันจะไม่ทำให้ดีขึ้นจริง ๆ แต่ถ้าความกังวลเดียวของคุณคือการได้รับคะแนน 100/100 นี้จะทำมัน


1

ลองใช้วิธีนี้ก่อนหน้านี้

<script async='async' src='https://cdn.jsdelivr.net/ga-lite/latest/ga-lite.min.js'></script> <script>var galite=galite||{};galite.UA="xx-xxxxxxx-x";</script>

โปรดเปลี่ยน xx-xxxxxxx-x เป็นรหัสของคุณโปรดตรวจสอบการใช้งานที่นี่http://www.gee.web.id/2016/11/how-to-leverage-browser-caching-for-google-analitycs.html


1
โปรดทราบว่าสิ่งนี้มีไว้สำหรับ ga-lite มากกว่าการวิเคราะห์มาตรฐาน
Rob Forrest

0

Google ระมัดระวังไม่ให้ใช้สำเนาวิเคราะห์สคริปต์ในเครื่อง อย่างไรก็ตามหากคุณทำเช่นนั้นคุณอาจต้องการใช้สำเนาของปลั๊กอินและสคริปต์การดีบัก

ข้อกังวลประการที่สองเกี่ยวกับการแคชแบบก้าวร้าวคือคุณจะได้รับความนิยมจากหน้าแคชซึ่งอาจมีการเปลี่ยนแปลงหรือถูกลบออกจากเว็บไซต์


0

ในการแก้ไขปัญหานี้คุณจะต้องดาวน์โหลดไฟล์แบบโลคัลและรันงาน cron เพื่อทำการอัพเดตต่อไป หมายเหตุ: นี่จะไม่ทำให้เว็บไซต์ของคุณเร็วขึ้นเลยดังนั้นวิธีที่ดีที่สุดในการเพิกเฉยก็คือ

เพื่อจุดประสงค์ในการสาธิตให้ทำตามคู่มือนี้: http://diywpblog.com/leverage-browser-cache-optimize-google-analytics/


"สิ่งนี้ไม่ทำให้เว็บไซต์ของคุณเร็วขึ้น" ซึ่งไม่จำเป็นต้องเป็นเรื่องจริง ตามทฤษฎีแล้วการบีบอัดไฟล์ JS ที่ไม่สำคัญต่อการรวมกับการวิเคราะห์ควรบีบอัดไฟล์ที่มีขนาดเล็กกว่าไฟล์วิเคราะห์ที่แยกจากกันเล็กน้อยเนื่องจากพจนานุกรมที่ใช้ร่วมกัน อาจมีปัญหามากกว่าที่มันคุ้มค่า
Ray Foss

0

นี่อาจเป็นการหลอกลวง :)

<script>
  $.ajax({
  type: "GET",
  url: "https://www.google-analytics.com/analytics.js",
  success: function(){},
  dataType: "script",
  cache: true
  });
</script>

0

ขึ้นอยู่กับการใช้งานข้อมูล Google Analytics ของคุณหากคุณต้องการข้อมูลพื้นฐาน (เช่นการเข้าชมการโต้ตอบ UI) คุณอาจไม่สามารถรวม analytics.js เลย แต่ยังรวบรวมข้อมูลใน GA

ทางเลือกหนึ่งอาจใช้แทนโปรโตคอลการวัดในสคริปต์แคช Google Analytics: ภาพรวมโปรโตคอลการวัด

เมื่อคุณตั้งค่าวิธีการขนส่งอย่างชัดเจนเป็นรูปภาพคุณสามารถดูว่า GA สร้างบีคอนรูปภาพของตัวเองได้อย่างไร

ga('set', 'transport', 'image');

https://www.google-analytics.com/r/collect
  ?v={protocol-version}
  &tid={tracking-id}
  &cid={client-id}
  &t={hit-type}
  &dl={location}

คุณสามารถสร้างคำขอ GET หรือ POST ของคุณเองด้วยน้ำหนักบรรทุกที่ต้องการ

อย่างไรก็ตามหากคุณต้องการรายละเอียดในระดับที่สูงกว่ามันอาจจะไม่คุ้มค่ากับความพยายามของคุณ


การเชื่อมต่อกับ Pagespeed อยู่ที่ไหน
Nico Haase

การไม่โหลด analytics.js ทำให้คุณหลีกเลี่ยงบทลงโทษได้
Jonathan

ใช่. และด้วยการข้าม CSS, JS และภาพทั้งหมดออกจากหน้าของคุณมันจะโหลดเร็วขึ้น การข้าม Google Analytics ไม่ใช่ตัวเลือกตาม OP
Nico Haase

ยกเว้นข้อมูลที่ยังคงบันทึกไว้ใน Google Analytics ผมคิดว่าคำตอบของฉันถูกต้องชัดเจนและระบุว่าขึ้นอยู่กับระดับของรายละเอียดที่จำเป็นจาก Google Analytics ก็อาจจะคุ้มค่าตัวเลือกพิจารณาที่สำคัญจะยังคงบันทึกการเข้าชมปฏิสัมพันธ์ UI และตัวชี้วัดที่อาจเกิดขึ้นอื่น ๆ . หาก OP กำลังมองหาการปรับให้เหมาะสมสำหรับ 1% สุดท้ายอาจเป็นการพิจารณาการเพิ่มประสิทธิภาพที่คุ้มค่า
Jonathan

@NicoHaase ฉันได้แก้ไขความคิดเห็นของฉันเพื่อให้จุดของฉันชัดเจนยิ่งขึ้น สนใจฟังความคิดของคุณ
Jonathan

0

คุณสามารถตั้งค่าการกระจาย cloudfront ที่มี www.google-analytics.com เป็นเซิร์ฟเวอร์ต้นทางและตั้งค่าส่วนหัวหมดอายุอีกต่อไปในการตั้งค่าการกระจาย cloudfront จากนั้นแก้ไขโดเมนนั้นในข้อมูลโค้ด Google สิ่งนี้จะช่วยป้องกันไม่ให้โหลดบนเซิร์ฟเวอร์ของคุณเองและจำเป็นต้องอัพเดตไฟล์ต่อไปในงาน cron

นี่คือการตั้งค่าและลืม ดังนั้นคุณอาจต้องการเพิ่มการแจ้งเตือนการเรียกเก็บเงินไปยัง Cloudfront ในกรณีที่มีคน "คัดลอก" ตัวอย่างของคุณและขโมยแบนด์วิดท์ของคุณ ;-)

แก้ไข: ฉันลองแล้วมันไม่ง่ายเลย Cloudfront จะผ่านส่วนหัวของ Cache-Control โดยไม่มีวิธีง่าย ๆ ในการลบ


0

เปิดhttps://www.google-analytics.com/analytics.jsไฟล์ในแท็บใหม่คัดลอกรหัสทั้งหมด

ตอนนี้สร้างโฟลเดอร์ในสารบบเว็บของคุณเปลี่ยนชื่อเป็น google-analytics

สร้างไฟล์ข้อความในโฟลเดอร์เดียวกันและวางรหัสทั้งหมดที่คุณคัดลอกไว้ด้านบน

เปลี่ยนชื่อไฟล์ ga-local.js

ตอนนี้เปลี่ยน URL เพื่อเรียกไฟล์สคริปต์ Analytics ที่โฮสต์ในพื้นที่ของคุณในรหัส Google Analytics ของคุณ มันจะมีลักษณะเช่นนี้ https://domain.xyz/google-analytics/ga.js

สุดท้ายให้วางรหัสวิเคราะห์ google ใหม่ลงในส่วนท้ายของหน้าเว็บของคุณ

คุณดีไปแล้ว ตรวจสอบเว็บไซต์ของคุณจาก Google PageSpeed ​​Insights มันจะไม่แสดงคำเตือนสำหรับ Leverage เบราว์เซอร์แคช Google Analytics และปัญหาเดียวของวิธีนี้คือการอัปเดตสคริปต์ Analytics ด้วยตนเอง


0

ในปี 2020 ตัวแทนผู้ใช้ข้อมูลเชิงลึกของ Page Speed ​​คือ: "Chrome-Lighthouse" สำหรับมือถือและ "Google Page Speed ​​Insights" สำหรับเดสก์ท็อป

<?php if (!isset($_SERVER['HTTP_USER_AGENT']) || stripos($_SERVER['HTTP_USER_AGENT'], 'Chrome-Lighthouse') === false  || stripos($_SERVER['HTTP_USER_AGENT'], 'Google Page Speed Insights') === false): ?>
// your google analytics code and other external script you want to hide from PageSpeed Insights here
<?php endif; ?>

-13

คุณสามารถย่อขนาดสคริปต์ทั้งหมดในหน้ารวมถึงการanalytics.jsใช้:

อย่าลืมย่อขนาดไฟล์ก่อนใช้งาน มิฉะนั้นจะใช้เวลาประมวลผลมากขึ้น


6
analytics.jsได้รับการลดขนาดจากแหล่งข้อมูลแล้ว
João Pimentel Ferreira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.