The issue is that sometimes you cannot cache a slow method because periodically it should return a different result.
Example:
cache: get_installed_modules()
invalidates-cache: install_module()
Even better would be to let install_module modify the cache of get_installed_modules, might be prone to bugs though