refactor to better structure

1. use Fetcher to abstract different fetchers (html, image)
2. use query as key
3. move ttl to client

etc.
use pprof
client