fix `alread set header` error
build a new "many to many" cache
also hack the `openSync` function