add feature: cache menu list, invalidate in 24 hours