GraphQL and REST, one cache
The problem
Few APIs are only GraphQL: product pages come from REST, search and images from plain HTTP. A cache that understands only GraphQL passes those requests through to your origin, every time.
With GraphPilot
GraphPilot caches both in the same service. For a plain HTTP request, your origin decides with the headers it already sends: Cache-Control sets the lifetime, a Surrogate-Key header tags the response, and the same header on a write's response purges what it names, at every edge location. Those keys share one space with the keys GraphPilot derives for GraphQL, so a REST write that names a book's key clears the cached GraphQL answers for that book as well.
Docs: Caching a REST API ↗Transcript
Your API isn't only GraphQL. Product pages come from a REST API, images and search from plain HTTP.
Put a cache in front that only understands GraphQL, and those requests go straight to your origin, every time.
GraphPilot caches both, in the same service. For REST, your origin decides with the headers it already sends: Cache-Control for how long.
Tag a response with a Surrogate-Key header, like product-42.
When a PUT changes the product, its response names the same key, and every cached answer with it is purged, at every edge location.
And it all works together: name the book's key in that response (Surrogate-Key: product-42 Book:id:42), and the cached GraphQL answers for the same book are cleared as well.
One cache, one Cockpit, for your GraphQL and your REST API.
Cleared for takeoff
Start on Glider (Free).
No credit card, no commitment.
Prefer to talk first? Book a call