Back to top

Death to the Blog Widgets! (Or at least some better performance)

You may have noticed that I killed third party javascript widget thingies on my site (maybe not, maybe you read only via RSS). Verious money making schemes are gone (most didn't work, but that's no my focus here). I killed my site widgets because they were slow and made my site appear to be slow as well.


What are Widgets (Blog Widgets)

Widgets are the little things that people place in the sidebars and other low-value parts of their site. They do this to provide additional features, to show affiliation with something, to prove the value of their blog, to make money from their blog, basically they do it for a lot of reasons. Prominent examples include the MyBlogLog widget, Last.Fm widget, Adsense widget, Flickr photostream widget, the Google Analytics widget (hidden widget, but still a widget).

Even fast blog widgets are slow

Browsers are designed to download files from webservers. It used to be that a page was a page. You downloaded that one file and you were done. Then we got images, and css, and javascript. So your browser downloaded 4 or 5 files. Typically this was done serially (one after the other) which means that the page loads first, then the css and javascript, and finally you see the images loading into the page one after the other. Some browsers can doanload in parallel where they grab multiple files at the same time which speeds the process because it takes full advantage of your network link.

Each file that gets downloaded takes time because of the size of the file itself and also because of the additional request. Each file request has additional overhead associated with it. So, downloading 1 file that is 2MB will take less time than 2 files that are 1MB each.

Widgets add more files to your page. More files makes your page slower, even if they are served quickly. But what if they are served slowly or - ghasp - the widget server goes down.

Widgets are Often Served Slowly (or from Dead Servers)

So, adding any widget - even from a fast server - slows your site. And now you add widgets from an overloaded server? Most widgets are personalized. Behind the scenes they are searching for information about you among millions of other people and then inserting that unique content into your site. That takes time. Lots of it.

The day after I disabled the widgets on my site, I happened upon the ColoradoStartups homepage. (And David, I single you out because I love your site). The page load time was atrocious. Really. Total page load: 17.79 seconds Wow. If we look at there site, my browser 105 Requests for 513KB worth of data, of which 310KB was already cached. So I was only downloading 200KB worth of new data - why did it take so long? For the test I only used the internet to get their page and I'm on a DSL connection where downloading a movie at over 300Kbps (typical dsl speed). The problem is in all of these widgets doing their personalization, storing data, reading data. Behind the scenes, some of them use yet further web services to lookup data!

When you have 8 widgets like does (madkast, widgetserver, widgetbox, lijit, mybloglog, madkast, plugoo, feedburner - and then yahoofs and amazonaws support some of those) is that at least one of the 8 is bound to be overloaded. And pretty regularly one of them is going to be totally down. This makes a page load take an immense amount of time.  

The left image shows the page loading for and on the right you get

I understand that they have somewhat overloaded their page with different widgets so that they can utilize the services provided by companies they review (like lijit and intense debate) but I think at some point you turn users away. That point is, according to various studies I've read, about 4 seconds. So, a page load time of almost 5 times that threshold won't work.

Now what?

Solutions to the Blog Widget problem

As I've pointed out, the problem can't be solved by "get faster" solutions like just speeding up the internet connections of users or making the servers that run the widgets faster. That would certainly help, but the "more files" problem means you are still limited to a few widgets.

The real solution, in my opinion, lies in solutions that are integrated into my site's software. Don't give me a flickr javscript widget - give me a flickrrippr module that pulls my photos into a local cache. Don't give me a comment plugin that takes years to load - create the "intense debate" by reading my comment rss and aggregating that information with some form of universal login so that my comments can be tracked from blog to blog (if I want). Having integrated applications you can take advantage of javascript and css aggregation/compression to reduce those files from 10 to 2. That helps.

Of course the problems with my solution is that 1) it requires lots of things like microformats that are only slowly picking up 2) site users will need powerful website building software that can be more difficult to install 3) some of these widget companies have "collect lots of data and do stuff with it" as a business model and they can do more of that without you knowing about it when they do it in this format.

People Involved: 



[...] Basically they have built an easy way to use the Google Custom Search Engine. They kept google ads on the side and they kept the revenue from those ads. Now they are going to open those ads up to more ad providers and start sharing the revenue with you. I’m optimistically skeptical (you’ll note that I added the lijit widget back to my sidebar after a …um… brief hiatus). [...]