Speed up page load times when running Google ads

Google ads are an easy way to monetize your site, but their implementation leaves a lot to be desired. To insert a Google ad block on a page one has to insert two script blocks: one to set the adverts parameters, and one to load the external Google script.

The problem is that the scripts have to be inserted in the body at the place where the advert is desired. This is because Google uses JavaScript's document.write to generate an iframe, which then loads the ad. If Google's servers are being a bit laggy then your visitor has to wait for the Google script to finish loading before the rest of the page is rendered. The closer your ad is to the top of the page, the worse the resulting problem is.

A number of solutions have been proposed, including overwriting the document.write method, and inserting the Google script through DOM manipulation. Unfortunately this breaks in Safari 2.0, and breaks any other instances of document.write you may be using.

So here is the solution we've come up with:

Normal set-up

<body>
	Content above advert
	<script type="text/javascript"><!--
		Google ad params
	//--></script>
	<script type="text/javascript" src="...show_ads.js"></script>
	Content below advert
</body>

Optimised set-up

<body>
	Content above advert
	<div id="ad1_inline"></div>
	Content below advert
	<div id="ad1_footer" style="display: none;">
		<script type="text/javascript"><!--
			Google ad params
		//--></script>
		<script type="text/javascript" src="...show_ads.js"></script>
	</div>
	<script type="text/javascript">
		window.onload = function() {
			document.getElementById('ad1_inline').appendChild(document.getElementById('ad1_footer'));
			document.getElementById('ad1_footer').style.display = '';
		}
	</script>
</body>

What it does

  1. Creates a place-holder div for the where the ad will end up
  2. Places all the ad code in an "footer div" at the bottom of the page - this prevents your page from "locking" while the Google scripts load
  3. Hides the footer "footer div" with css so the ads don't ever show below your page, causing the page height to "jump"
  4. Waits for the whole page to load before moving the ads (the window.onload bit) thus preventing Internet Explorer from getting really upset.
  5. Moves the ad to it's placeholder, and un-hides it

Of course you may not want to use window.onload. If you attach the function to an event you can modularise the whole ad insertion in your code. Using a JavaScript library (Prototype in this case, but others will look similar) results in the following change to the last script:

	...
	<script type="text/javascript">
		Event.observe(window, 'load', function() {
			$('ad1_inline').appendChild($('ad1_footer'));
			$('ad1_footer').show();
		}
	</script>
	...

All scripts are Public Domain.

Comments

Perfect, Thanks

Very good post, thanks a lot.

Perfect, works like a charm and the speed of the homepage is so much faster!

Cheers!

Hey thank you for making this,

I would suggest to put in bold the things that are added,
that way we can see clearly what to add and what not to, made a mistake :(

Thanks alot

Thanks to you, www.travelmastery.com will be a lot faster,
If its works you are going in my Thanks page :)

Thanks a lot!! Now the load speed is faster in www.quereceta.com !

This is a very detailed and professional solution which helped me to significantly improve the speed of my website http://www.sandraandwoo.com/ today.

Thanks for mentioning this on your site, Novil! I'm using this tweak on http://www.kennychronicles.com/ now, and I've noticed a 1-2 second increase. The biggest benefit will be when Adsense is slower than usual, which it definitely is sometimes.
I've tweeted this to my 68 followers, many of which are other cartoonists with sites. I hope this edit gets spread around more.

Awesome stuff, thank you!

I've just spent an hour or so rewriting all my AdSense calls and the result is my pages are much, much faster.

The pages were fast before I added AdSense, the slow downs it suffered were frustrating the heck out of me so I was on a mission today to bring my pages back up to loading sub two seconds.

You solution was wicked!
Appreciated.

Hi, ads do not load i check in firefox error console it shows as security error log. any idea why?

Great Way to do it! Straight and simple!

Thanks.

Thank you - excellent code!

I know this post is old but your code saved my butt wagons. Previously I was using a different iteration of a DIV placeholder that caused errors in Safari and for the life of me I could never figure out a fix, but this version results in no errors across browsers, and seems to work even better. Thanks so much!

Thank you! life saver!

Thank you so much, superb solution, works like a dream. It's now 1.35am but now all sorted thanks to your code. Goodnight!

Awesome solution. thank you for publishing this

Really really good!! It works fine. Very useful on my web www.cocinadetodo.com
Thanks a lot!!

Thanks for the code, it worked to speed up our site (http://www.invisalign-reviews.com) plus we noticed the nice side effect that bots can better read the page. Thanks again!

Great tip, it's always bothered me that my streamline pages loads slowly because of google's ads. My site Alnido Viviendas has speed up considerably using your code. Thanks.

It is not working in chrome and IE8
Only works in firefox. How do i fix it?

Awesome -- this came in handy. Using this technique, but with jQuery, at Tweet Archivist.

Thanks for this great implementation! I tried it in my page http://crete.mmx.gr and I saw great improvement!

Awesome script. It been here for awhile but it is still awesome and I just implemented it on my website!!!

http://uacda.discontinued.ru/audio-kniga-legkiy-sposob-pohudet.html - аудио книга легкий способ похудеть
http://pbkut.cordonbleu.ru/pohudet-s-pomoshyu-lekarstvennih-preparatov.html - похудеть с помощью лекарственных препаратов
http://gafmg.cordonbleu.ru/lechebnaya-yagoda-godzhi.html - лечебна¤ ¤года годжи
http://uwdnt.discontinued.ru/kefirno-yablochnaya-dieta-9-dney.html - кефирно яблочная диета 9 дней
http://tvxag.discontinued.ru/dieta-doktor-bormental-chitat.html - диета доктор борменталь читать

Общие интересы могли бы связать их некоторым подобием семейных уз. Вышинский: То есть с провокационными целями? Это не к тебе, часом? Через два - три года он будет в рот ей смотреть и лизать ноги если этого ей захочется. Всякий раз, когда человечество пользовалось другими критериями, оно жестоко страдало.
http://nfjxy.discontinued.ru/hochu-pohudet-k-novomu-godu.html - хочу похудеть к новому году
http://apyph.discontinued.ru - вздутие живота диета
http://ykwum.discontinued.ru/dieta-kima-protasova-produkti.html - диета кима протасова продукты
http://gfkmn.discontinued.ru/spisok-produktov-chtobi-pohudet.html - список продуктов чтобы похудеть
http://hfyqv.discontinued.ru/shokolad-dlya-pohudeniya.html - шоколад для похудения

Эоней улыбнулся: — Все нормально, кузина. Через день наносится второй удар, несколько южнее. Выбравшись из кабины с привычной грацией раздраженного леопарда, он, демонстративно не смотря в их сторону, окинул ангар тяжелым, сумрачным взглядом, потом сделал несколько шагов вперед, остановившись рядом с платформой лифта, на которой несколько дней назад стоял имперский курьер, постоял, всматриваясь в шершавую плиту, будто рассматривая что-то видимое только ему одному, и только после этого повернулся к ним. Враги стояли вдоль стен и невероятно медленно разворачивали свои сенсоры в его сторону. Обессиленный и едва живой, этот червяк тем не менее сохранил разум и сознание Твари.
http://bnape.discontinued.ru/lechebnoe-pitanie-dieta-9.html - лечебное питание диета 9
http://wnfky.discontinued.ru/gadalka-kak-pohudet.html - гадалка как похудеть
http://xnyte.cordonbleu.ru/yagodi-godzhi-nomer-telefona.html - ¤годы годжи номер телефона
http://dyjmy.discontinued.ru/kristina-agilera-pohudela-2013.html - кристина агилера похудела 2013
http://kbacz.discontinued.ru/kak-pohudet-pozhilomu-cheloveku.html - как похудеть пожилому человеку

Более того, он переживает все события как наступление последних времен: недаром же высчитывает роковое число Наполеона, указанное в Апокалипсисе как знак антихриста. Мирная Лангобардия вовсю торговала паклей и потихоньку откармливала слона. Вероятно, отчаяние бессилия, которое порою овладевает человеком, стремящимся честно служить всеобщему благу, завлекло Глинку искать и иных путей борьбы со злом. Гоголь отрезвляюще отвергает этот постулат: "…Призваны в мир мы вовсе не для праздников и пирований. Да и каком Замысле может идти речь, когда отрицается Бог-Творец и Вседержитель?
http://dmasc.discontinued.ru/dieta-3-3-otzivi.html - диета 3 3 отзывы
http://vjtvm.cordonbleu.ru - как похудеть на долго
http://wxnyx.discontinued.ru/programma-pohudet-za-30-dney.html - программа похудеть за 30 дней
http://tmxga.cordonbleu.ru/posle-rodov-pohudela-kak-popravitsya.html - после родов похудела как поправитьс¤
http://gzpxm.discontinued.ru/yagodi-godzhi-drugoe-nazvanie.html - ягоды годжи другое название

Что означает этот дорожный знак? Чтобы увидеть движение поплавка, лунку приходится освещать, либо электрическим фонарем, либо (при ловле в палатке) свечкой. И мне даже страшно подумать, что может произойти, если этот бредовый кошмар не прекратится! Вся эта чушь насчет того, что за ней наблюдают, уже начала надоедать. Она останется для вашей работы надолго.
ZN2B2g5cyZ вот

Add new comment