We tried using a worker for a bit, and while it's mostly very convenient, the request/response cache API does NOT support Vary headers, which was a major dealbreaker for us.
We can probably help. Vary is usually intended to shard the cache based on parts of the request. You can do the same with the cache API - modify the cache key (quite similar to the example for caching the POST request (https://workers.cloudflare.com/docs/reference/workers-concep...), as you modify cache key to match the POST body).