Add caching support with transient API