Agree with Jaap - caching of objects returned from SharePoint should generally be avoided, since even if that particular object doesn't implement IDisposable (and thus require disposal by you), it's likely that other objects which do will be referenced.
In addition to memory pressures mentioned by Jaap I think you could run into other problems. Here's what I think will happen if you cache certain SP objects:
- Explicit disposal is not happening so the GC will dispose them for you
- At some point later you retrieve the object from the cache, attempt to use it and an exception will occur, effectively saying "attempted to use a previously disposed object"
OR if you're very lucky it's one of the objects which the SharePoint API manages heavily and a new instance will be spun up for you - this will be recorded in ULS logs. This is purely a safety mechanism, isn't implemented everywhere, and since a new object is ultimately spun up there's absolutely no gain from the caching.
My recommendation would be to always seek to cache disconnected objects.