rework post caching, add more test coverage. reuse bytebuffer