Implement Memory + Disk cache