It's always best to cache as high in the n-tier stack as possible. So if your application is a webapplication, and you have a set of webcontrols, cache these, not the data required to build the controls, as with caching the controls, you save yourself the time re-creating them all the time as well.