use cache and compress