Adds support for HTTP-based batching of GraphQL operations in Silverstripe
Adds basic support for using Apollo’s
to send multiple GraphQL operations in a single HTTP request.
Note that this approach does not run operations in parallel - they are executed in order, one at a time. Because of this, and the fact that all operations have to be complete before any can be returned, there’s no guarantee this will improve the performance of your app - do your own research and testing!
composer require bigfork/silverstripe-graphql-batching
Register a new Injector service for your schema (in the example below, we’re using the schema name
default) and then
point your GraphQL route to it:
SilverStripe\Core\Injector\Injector: Bigfork\SilverstripeGraphQLBatching\Controller.default: class: Bigfork\SilverstripeGraphQLBatching\Controller constructor: schema: default handler: '%$SilverStripe\GraphQL\QueryHandler\QueryHandlerInterface.default' batchMax: 10 SilverStripe\Control\Director: rules: 'graphql': '%$Bigfork\SilverstripeGraphQLBatching\Controller.default'
batchMax is the maximum number of operations that can be included in a single HTTP request. It should
batchMax value you set when creating the
BatchHttpLink in your client-side code (default 10) and should be
kept as low as possible. The higher this value is, the more likely it is to become a DDoS attack vector: if you allow
someone to run dozens of GraphQL operations in a single HTTP request, it becomes trivial to overload your server.