Sunday, December 9, 2007

Using Google Gadgets to Cache Images

Google Gadgets API has a lot of interesting features for creating gadgets, but you could also use it to improve your site. Instead of creating gadgets that can be added to iGoogle and embedded into other web pages, you're using Google Gadgets API as a proxy for some features that are difficult to add on the client side.

One of the most interesting features is caching images. Let's say you upload a big image to your site and you suddenly get a lot of visitors or you dynamically generate a chart of your traffic stats every 30 minutes. Google Gadgets API has a useful function:
_IG_GetImage(url, {refreshInterval:num}) that returns the cached version of an image from Google's servers.

Using the function, I built a pseudo-gadget has two parameters: the image URL (up_imgurl) and the refresh interval in seconds (up_update), which is optional. Here's an example of gadget call:

http://gmodules.com/ig/ifr?up_update=60&
up_imgurl=http://www.parislive.net/eiffelwebcam1.jpg&
url=http://hosting.gmodules.com/ig/gadgets/file/114716457819959241692/cache-image.xml




The example above uses an image from a Paris webcam that's updated every two seconds, but it's cached on Google's servers every 60 seconds. That means you only need to include an iframe that calls a gadget (hosted by Google), add the two parameters and make sure to add the width/height of the image in the iframe's style attribute.