You don't even need to look at any specific client or server implementation to realize why cache is a problem. Fundamentally, it cannot work well because the whole premise of GraphQL is to allow clients to request as many different permutations of the data as they want. It doesn't make sense to cache every unique permutation of the same underlying data because the number of cached responses would grow exponentially even with a very limited dataset. From a security point of view, a client should be able to DoS a server more easily because they can just request a slightly different permutation of the dataset every time (same data, different query); each request gives the GraphQL server a lot of work to do and uses memory. It's less work for the client to generate complex random GraphQL queries than it is for the server to generate valid responses.

One solution to this is to add a cost to the queries... https://github.com/slicknode/graphql-query-complexity