Niall makes some very,very good points here that I am going to keep in mind as I work on my own Widget implementation.
There are a lot of “tricks” you can use to minimize bandwidth/load times – and Niall covers most of them. By “minify” Niall is talking about writing small code, mostly. I think he could have named this “K.I.S.S.” – Keep it Simple, Stupid”.
What information does your widget need to display when the user is not actively engaged with it? OK, once you know that, get rid of the rest of it until the user DOES engage. Why load information that the user doesn’t need? The same idea applies to graphics. Will a text link work, or do you really need to download that pretty graphic button 250,000 time a day?
In any case, this is a a great post to keep in mind.
And remember – if it makes sense applied to Widgets it probably makes sense applied to your web sites.
Serving widget content across hundreds of thousands of users per day is no easy task. A relatively small widget contains images, dynamic data, dynamic renderers, and manifest code that may consume 50 KB of space if you’re lucky. That’s 12 GB of bandwidth a day if you’re lucky enough to hit 250,000 gadget views hitting your servers, or about 3 file bundle requests per second. Even Google’s infrastructure has strained under the load of widget serving, but your sites don’t have to suffer the same fate.