Sample: data loader with cache (cleanup)