fix some bugs & add a recent-ip cache