An Abstract Caching Framework