Je viens d’ajouter le support des batchs dans GVA.
Vous pouvez désormais envoyer un tableau de requêtes à un serveur GVA, ce dernier exécutera toutes vos requêtes en parallèle puis vous enverra un tableau de réponses dans le même ordre que les requêtes fournies !
Le playground ne supporte pas les batchs, j’ai donc du tester avec curl :
La requête curl au format texte :
curl 'https://g1.librelois.fr/gva' \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Connection: keep-alive' \
-H 'DNT: 1' \
-H 'Origin: https://g1.librelois.fr' \
--data-binary '[{"query":"{balance(script: \"D9D2zaJoWYWveii1JRYLVK3J4Z7ZH3QczoKrnQeiM6mx\") {amount}}"},{"query":"{balance(script: \"Do99s6wQR2JLfhirPdpAERSjNbmjjECzGxHNJMiNKT3P\") {amount}}"}]' \
--compressed
J’invite les développeurs des clients à grouper autant que possible leurs requêtes dans des batchs, cela permet de limiter les appels réseaux et donc de gagner en performances globales sur vos applications
De plus, je viens d’activer la compression gzip sur mon nginx, mon serveur GVA vous renvoi désormais des réponses compressées, sur ce tableau vous pouvez comparer la taille compréssée (Transfered) et la taille normale (Size) :
Les batchs sont d’autant plus intéressants avec de la compression, car cela permet de compresser plusieurs réponses ensembles
Pour la compression, j’ai ajouté ces 3 lignes dans le bloc location /gva
de ma config nginx :
gzip on;
gzip_types application/json;
gzip_min_length 1000;
En revanche, les batchs permettent de spammer davantage le serveur, c’est pourquoi :
- La taille d’un batch est limitée à 5 requêtes
- Le nombre max de requêtes par tranche de 20 secondes passe de 40 à 10.
ces restrictions ne s’appliquent pas aux IPs whitelistés.