Google search engine ranking an Associate punishment?
So now Google has declared that it takes site speed into consideration in determining the ranking of web sites and web pages. On face value, it’s a move that seems and sounds reasonable.
However, as I indicated in a previous post, it is a little more complicated. What if your site is fast but you have ads on it that are slow? Will you be punished? And how much?
You see, I am guilty of this! I have advertising on this site and on other sites I am running as well. I am an associate both with Goggle and Amazon. So, being concerned, I have tested a little to see how it works in practice – how web advertising affect the speed of my sites.
Test setup
I have used several testing tools to measure the effect of the ads I am running on the speed of a web page. I could have tested a number of different pages, but as I use the tests only to illustrate, I think this one test is sufficient for now.
I took a page from my site ScandinavianBooks.com, a page about Swedish author Mari Jungstedt.
I tested it first as it is – a 30.46 KB HTML file with 10 small images, linking one CSS file and one JS file (both minified), but which in addition contains scripts and images in ads as well as iFrames from Amazon which call external CSS and JS files.
Then I took out all the Amazon ad-related stuff – ads and links . This reduces the page from 30.4 KB to 25.58 KB, and created a second version of the page.
Finally, in the third version, I also took out the two Google ads on the page. This reduced the page size further to 24.97 KB. Then I uploaded the three pages on my server and tested their speed on various site speed testing services online and inspected them with YSlow and PageSpeed.
Table: The impact of Google and Amazon ads on Web page speed and loading
| Original | No Amazon | Diff | No |
Diff | |
| File size (KB) | 30.48 | 25.58 | 4.90 | 24.97 | 0.61 |
| YSlow total page load | 308K | 145K | 163K | 77K | 68K |
| PageSpeed (score) | 81 | 85 | +4 | 90 | +5 |
| Pingdom* | 28.3s | 2.0s | 26.3s | 2.0s | 0 |
| WebsiteOptimization** | 9.29s | 5.19s | 4.10s | 4.96s | 0.23s |
| WebPageTest | 5.07s | 3.02s | 2.05s | 3.22(??) | n.a. |
| WebCentric (UK) | 8.84s | 4.91s | 3.93s | 4.63s | 0.28s |
Notes: * Pingdom seems allergic to Amazon ads on tested pages (I’ve seen lots of odd results there). ** At 1.44 Mbps
HTML Size
The results differ a lot (to express it mildly) but are somewhat consistent even so. It seems the ads from Google increase the overhead relatively little, less than 10% in these tests. The ads from Amazon, on the other hand, result in a 20% increase in the size of the HTML file and almost double the time it takes to render the page (far worse, if Pingdom is to be believed – which I don’t).
Diagnostics using YSlow
The total page load, according to YSlow, is 344K (empty cache, 51K with primed cache), including 144K in 19 javascript files and 112K in 41 images. The original file – will all the ads – gets an overall grade of “C” (performance score 79), but “F”-s for lacking compression, large number of DNS-lookups and HTTP requests (74 in all). It gets a “D” for “minfy” JS and CSS. Some of the scripts from Amazon have response times in excess of 1000 ms according to YSlow.
After removing the Amazon components, the page load is 145K (9K with primed cache). The performance grade is A, and score 94. The page gets Bs for compress and minify JS and C for DNS look-ups. The version without any ads gets grade A and a performance score of 99. The overall page load is now 70K (1K with primed cache).
Diagnostics using PageSpeed
PageSpeed gives a performance score of 81 for the full page. The top complaints are “minimize request size”, “specify image dimensions” and “combine external javascripts”. A lot of ad servers are requesting cookies and a lot of images from Amazon lack dimensions. Closer inspection shows that Amazon is also wasting 13.5K of bandwidth on JS files that have not been minified. There is also some “very inefficient CSS” involving use of “star selectors”.
With Amazon components removed PageSpeed gives a performance rating of 85, now mainly complaining about “combine external javascrit”, minimize request size and serve static content from a cookie-free domain.
In the version without ads, PageRank gives a performance score of 90 and gripes about “serving static content from a cookieless domain” and “specifying a cache validator”.
Conclusions: Advertising and search engine ranking
I conclude that there is a price to pay in terms of speed and very likely search engine ranking – in some cases even a heavy price – for being associated with the “big guys” and placing their ads on web pages. In the case of Google it is small, the main problem being that Google spreads their ad elements over a number of servers and cause several unnecessary DNS lookups. But even if the speed decrease due to Google ads is small, it is quite interesting that Google actually will punish their own associates.
In the case of Amazon ads, the overhead is huge and the price in terms of search engine ranking may be big as well. Amazon ads are “smart”, convert well and are excellent from a business perspective but from a technical perspective they could be better. There is much to be done – minification of scipts, optimizing images, better html, get rid of unnecessary and inefficient CSS, make fewer DNS lookups and HTTP calls, and so on. Amazon is not doing a very good job. (Other ad networks I have used, for instance the European network Tradedoubler, are equally bad.)
Also – other tests I have done (not reported here) indicate large speed differences depending on type of ad. So you may want to test individual ads on your own site, and try to – as I do – get rid of the worst performing ones.
However, it’s not a price for sloppy delivery of ads to associates Amazon or other advertisers will pay directly, but one I and maybe you – if you are guilty of placing ads on your pages as well – will pay. The Amazon site itself is good, and their search engine ranking is not affected by what they feed their associates. Amazon, however, will be affected indirectly – fewer hits to their legions of associates will ultimately translate into fewer sales for Amazon.
Sandboxes or isolation chambers for badly performing ads
It seems to me to be important to develop techniques for loading ads in ways which do not affect web page loading speed. I am currently testing a couple of ways of loading ads after the page has been loaded and shifting them into ad placeholders when they have finished loading using Javascript. It is possible to do this, but the way to do it depends on characteristics of the ads. Several methods, using Ajax or Javacripts, seem feasible.
The advantage of sandbox-ing or using an isolation chamber for ads this way is that it makes the page load faster and improves the user experience. I would prefer to have the ads load between the </body> tag and the </html> tag. This way badly performing ads will not slow down the page or have a negative effect on search engine ranking. The disadvantage is that slow ads get marginally slower and “pop” into their slots a little while after the page has loaded.
What do others using ads think?