Så här ställer du in Lazy Load för Google AdSense-annonser

Ett vanligt problem för publicister är att Google AdSense påverkar bloggens hastighet. Eftersom vi inte har kontroll över optimeringen av resurserna blir vi bara ledsna.

Precis som YouTube-videominiatyrerna bör de använda WebP för bilderna i annonsenheterna. Det är ironiskt att de ibland inte bryr sig om att använda GZIP-komprimering eller att hålla resurserna minimerade. De massiva resurserna och den extra belastningen från många DNS-sökningar dödar vår sidhastighet som fan.c

När jag för några månader sedan twittrade om problemet med hastigheten på annonsenheten fick jag inget tillfredsställande svar. Jag är tillbaka själv med en lösning som förhindrar att AdSense saktar ner laddningen av ditt ursprungliga innehåll.

Ärligt talat är jag personligen inte ett stort fan av lazy load, inte ens för bilder. Men jag vill ändå bara dela med mig av ett lättviktsalternativ. Om du vill kan du prova en gång om du är mycket angelägen om att servera primärt innehåll först, före annonsenheter.

Tips: Du kan använda Ezoic för att tjäna mer än AdSense och vara värd för WP utan kostnad.

Instruktion för att ställa in Lazy Loading för AdSense

Naturligtvis ser en ursprunglig annonsenhetskod ut så här.

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- leaderboard -->
<ins class="adsbygoogle"
 style="display:inline-block;width:728px;height:90px"
 data-ad-client="ca-pub-xxxxxxxxxxxxxxxx"
 data-ad-slot="1234567890"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Tekniska detaljer: I grund och botten händer det att den laddas i asynkron form, vilket innebär att webbläsaren fortsätter att ladda ner adsbygoogle.js-skriptet utan att blockera HTML-analysen.

Men här, i den lata laddningsmetoden, ska jag ändra ASYNC-metoden till en riktig DEFER-metod. AdSense-skriptet kommer att börja laddas ner i webbläsaren först när fönstret har laddat klart huvudwebbplatsen. På så sätt behöver besökaren inte vänta på att se hela sidan snabbt för AdSense.

För detta ändamål behöver du inte göra några stora ändringar i din annonsenhet. Vi ändrar helt enkelt stilen för laddning av adsbygoogle.js, vilket kommer att göra all magi.

Allt du behöver göra är att följa nedanstående två steg

Ta bort nedanstående skript från alla befintliga annonsenheter.

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

Nu kommer den att se ut så här

<ins class="adsbygoogle"
 style="display:inline-block;width:728px;height:90px"
 data-ad-client="ca-pub-xxxxxxxxxxxxxxxx"
 data-ad-slot="1234567890"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>

Därefter lägger du till nedanstående JavaScript-kod i din temafotsida, eventuellt strax före body-taggen.

Metod 1. onload-händelsen

Tips: Noptimize-taggen finns med för att göra den kompatibel med Autoptimize. Den förhindrar att AdSense lazy loader inline JS sammanställs.

<!--noptimize-->
<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>
<!--/noptimize-->
  1. Ovanstående kod kan du använda via Temaalternativet om det finns tillgängligt för att lägga till anpassade skript.
  2. För Genesis, använd Genesis Simple Hooks plugin med alternativet genesis_after
  3. eller Header and Footer-plugin för alla andra teman.
genesis hooks option

Vad gör det här skriptet exakt?

Det här skriptet ser till att din AdSense-annonsenhet börjar laddas och blir synlig efter att din huvudwebbplats har laddats klart. Det är därför jag har döpt det till Lazy Loading for Google AdSense.

Metod 2. onscroll-evenemanget

Detta tillvägagångssätt laddar annonsenheten endast när användaren rullar på webbsidan, annars inte.

<script type='text/javascript'>
//<![CDATA[
var la=!1;window.addEventListener("scroll",function(){(0!=document.documentElement.scrollTop&&!1===la||0!=document.body.scrollTop&&!1===la)&&(!function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(e,a)}(),la=!0)},!0);
//]]>
</script>

Metod 3. Visa annonsenheter på användarinteraktion

Om du vill visa annonser i tid utan att kompromissa med intäkter och prestanda kan du använda insticksmodulen ”Flying Scripts by WP Speed Matters” för att ladda ner och köra JS baserat på användarens interaktion.

Det bästa är att du inte behöver göra några ändringar i din annonskod alls.

flying scripts plugin settings for lazy loading
Det snygga och rena användargränssnittet för Flying Script
  • Gå till inställningar för insticksmoduler och inkludera nyckelordet adsbygoogle.
  • Spara sedan inställningarna och rensa (rensa) sidans cache. Det var allt.

Resultat av prestanda

Jag har använt det här insticksprogrammet på en av mina kunders webbplats som använder Mediavine-annonsnätverket (vilket är mer tungt än Adsense-annonsenheter).Kärnan har klarat sig bra både för mobil och dator.

core vital result

Du bör också läsa dessa artiklar

Lämna en kommentar

129 svar på ”Så här ställer du in Lazy Load för Google AdSense-annonser”

    • 1. There is one customized responsive ad unit added in top header using Elements > Hook option. Here’s the code if you need.

      2. Then I have two responsive ad units added after paragraphs 2 and 8 using Ad Inserter. That’s all.

      Svara
  1. Hello. Thank you so much for the useful information.

    I have read all the posts and comments.

    Google Adsense updated, but this code still works fine for me.

    But as you said in your comment, ”If you have AdSense placement mainly in above the fold, you should avoid.” Due to the problem, I also stopped using it.

    By any chance, how are you displaying AdSense now?

    Are you just using the default (provided by Google) code?

    Or

    Can you please let me know if you are using another method?

    Thank you.

    Svara
  2. Method 2 worked for me, but method 1 did not.
    Method 2 increases pagespeed from a meager 50 to a whopping 92 on mobile.
    Method 1 did nothing.
    The downside is that method 2 loads the add only after a scroll, even if it is above the fold.

    I find it amazing that google puts so much emphasis on pagespeed while at the same time slows sites with adsense down to impossible levels.

    Svara
  3. Theoretically speaking, does lazy loading affect ads targeting? I kinda notice that the ads I see when lazy loading seem quite different from AdSense auto ads.

    Thank you

    Svara
  4. Thanks for the great tip. However, recently AdSense launched new ad code that looks like this:

    Do we need to update the Javascript you provided?

    Svara
  5. Improved JS version as per new AdSense code. Added query string for publishing ID and crossOrigin property.

    function downloadJSAtOnload() {
    var element = document.createElement(”script”);
    element.src = ”https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1234567890″;
    element.crossOrigin=”anonymous”;
    document.body.appendChild(element);
    }
    if (window.addEventListener)
    window.addEventListener(”load”, downloadJSAtOnload, false);
    else if (window.attachEvent)
    window.attachEvent(”onload”, downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;

    Svara
      • Hey Gulshan, thanks for providing us with this code. But I discovered that it’s not lazy loading, but just to defer loading of ads.

        I will like it if you will make it to load ads only when user scrolls to the viewport where the ads are meant to show.

        Thanks a lot

        Svara
  6. what about the header tag which will be added for Adsense approval?

    this is present in the header, should we keep this or remove it?

    Svara
  7. Brother, initially it worked fine but after 1 day it stoped working and my ads load very fast, page speed decreased. Please help

    Svara
    • You do not need to put this script in all Ad units. As provided code will work across all web page if once added in body tag.

      Svara
  8. Thanks so much for the code and your research Gulshan. My Pagespeed score is now, as you say, as without Adsense placed on the page. Also reassuring that you’ve been using the second option since June 2020, I’m guessing without Google Adsense wrath. Thanks also for your continued watch of this post. With Core Web Vitals being slapped on us in a couple of months, I’m sure many people are looking for this type of assistance now.

    Svara
  9. Gracias hermano por el aporte este truco de lazy espectacular me ayudo en Lighthouse Report Viewer de 40 a 80 puntos….todo debido a ese script de google adsense.. 🙂

    Svara
  10. My site’s speed was seriously battered due to adsense codes but using this code raised my speed to 90. Thanks for this hint, its really the drug for FCP and CLS

    Svara
  11. Hey buddy! I just come across your article and this is literally amazing but I had one issue.. I m trying to work with the second option, which is the scroll event, I did the steps u said on the first event but besides putting the lazy load code I put the scroll one but it doesn’t work, PLEASE I was looking for this script for months and finally when I found it, it won’t work could you please show me exactly how it works or is there any video I can follow..

    Really appreciate you effort

    Svara
  12. Gulshan,

    Which of the both methods are you seeing an effective balance between load speed and the revenue?

    In the comments you said, you haven’t using the lazy load.

    Can we able to add an array tags to the JS code, so that it applies to only that ads code? We can easily add a comment to the adsense code if they are below the fold.

    That should help in even fine tune the code.

    Svara
    • At the moment of writing this comment, I am using second method which is based on scroll. I feel, it is subject to test what perform best for each site.

      Svara
  13. Based on this ”Update 12/09/2017: I have removed this method from my blog since I found that it reduces Ad impressions. So, please implement at your own responsibility.”

    Can anyone confirm if this method still affects impressions?

    Svara
  14. Hi, I just wanted to implement your code but then I wasn’t able to see your code, already tried opening it in Chrome and Firefox but where the code is supposed to be there is just a grey box unfortunately…

    Svara
  15. Gulshan, I want to know, will this accept Google Adsense policy? Becuase they are very strict when comes to modification of their ad code.

    Svara
    • Hi,
      Great question!

      We are not modifying heavily like modifications. We are just adjusting same script in a way to load after finishing page load. From async to defer. So, I don’t think it’s a violation.

      Svara
  16. Gulshan, I want to know, will this accept Google Adsense policy? Becuase they are very strict when comes to modification of their ad code.

    Svara
    • Hi,
      Great question!

      We are not modifying heavily like modifications. We are just adjusting same script in a way to load after finishing page load. From async to defer. So, I don’t think it’s a violation.

      Svara
  17. You must execute for every ad after load the script:

    (adsbygoogle = window.adsbygoogle || []).push({});

    so if you have 3 ads you must execute this code 3 times 😉

    Svara
  18. Great share Gulshan. Personally, I’m not a big fan of Google AdSense and prefer to stay away since it slows down the website and distracts the users.

    I don’t want my readers to click on the ad and leave my site while reading an article where I could have gotten a chance to make an affiliate sale. Also, Google pays peanuts, which is another sad truth.

    Lazy load can reduce the server load and improve the site speed by a good margin. Thanks for sharing the script.

    Svara
  19. Great share Gulshan. Personally, I’m not a big fan of Google AdSense and prefer to stay away since it slows down the website and distracts the users.

    I don’t want my readers to click on the ad and leave my site while reading an article where I could have gotten a chance to make an affiliate sale. Also, Google pays peanuts, which is another sad truth.

    Lazy load can reduce the server load and improve the site speed by a good margin. Thanks for sharing the script.

    Svara
  20. Just Now I removed the lazy load Adsense option on my website,

    Once you add the script for lazy load, site loading is very fast, but the main problem is if your having more than 3 ads means sometimes ads not showing, it shows blank space, once refresh only ads came, I recently found out this problem.

    Then only i remove the script, normally my side load time is 5 secs, while using lazy load 2 secs only.

    Svara
  21. Fabulous! 245 ms load time. How cloudflare is caching HTML content? Part of their paid plan?
    ”cf-cache-status” shows HIT, which I never get for any HTML content. I always get very long wait time with CF, around 0.5 to 1 Sec every time.

    On the server side, using Key-CDN cache enabler, and Autoptimize, there’s only Two CSS and one JS file, excluding adsense scripts.

    Svara
  22. Fabulous! 245 ms load time. How cloudflare is caching HTML content? Part of their paid plan?
    ”cf-cache-status” shows HIT, which I never get for any HTML content. I always get very long wait time with CF, around 0.5 to 1 Sec every time.

    On the server side, using Key-CDN cache enabler, and Autoptimize, there’s only Two CSS and one JS file, excluding adsense scripts.

    Svara
    • Great Now My site works really awesome fast. i am also like to know How to do Https for my website using cloudfare ? Can you guide me.

      One more doubt : How to use cloudfare ssl for normal html websites ?

      Thank you

      Svara