add feature: cache when maxsize and timeout is None