Like it or not but many WordPress widgets, plugins and themes are poorly coded and do crazy things like remote HTTP requests and multiple database queries on every page load which drastically decreases the performance of your website.
One solution is to simply fix the plugin or theme and send a patch to the original author in hopes of it actually being included in the next release of the plugin or theme. A more generic solution is to use the crude PHP output buffering together with WordPress transients to store and retrieve complete widget output from database or non-persistant object cache.
While this is certainly not the most elegant solution, it definitely is the quickest to implement thanks to the widget_display_callback
filter.
Widget Output Cache is a plugin that does exactly that.