Des nouvelles ont été ajoutées en tête de listes.
Remontez pour les voir.
Inscription à la newsletter
title: "Le problème N+1 en GraphQL — pourquoi votre API Laravel ralentit (et comment le régler avec Lighthouse)"
DEV -
14/07
Vous avez branché GraphQL sur votre API Laravel. Tout fonctionne, les requêtes sont propres, vos...
Vous avez branché GraphQL sur votre API Laravel. Tout fonctionne, les requêtes sont propres, vos développeurs front-end sont contenus de ne demander que les champs dont ils ont besoin. Puis un jour, une liste qui contient 10 éléments en contient 500 — et votre API qui répondait en 80ms se met à répondre en 4 secondes.
Neuf fois sur dix, la cause est la même : le problème N+1. Et la bonne nouvelle, c'est qu'il se corrige en quelques minutes une fois qu'on sait où regarder.
Reproduire le problème
Prenons un cas simple : une liste d'articles, chacun avec son auteur.
requête { articles(premier : 20) { data { titre auteur { nom } } } }
Entrer en mode plein écran Quitter le mode plein écran
Rien d'alarmant à première vue. Pourtant, si la relationauteurest résolue naïvement — un accesseur PHP qui recharge la relation à chaque fois, ou un résolveur personnalisé mal écrit — voici ce qui se passe réellement côté base de données :
SELECT * FROM articles LIMITE 20 ; -- 1 requête SELECT * FROM utilisateurs WHERE id = 1; -- pour l'article 1 SELECT * FROM utilisateurs WHERE id = 2; -- pour l'article 2 SELECT * FROM utilisateurs W... [Courte citation de 8% de l'article original]
Loading...
🍪
Le modèle économique de notre site repose sur l'affichage de publicités personnalisées basées sur l'utilisation de cookies publicitaires. En continuant votre visite sur notre site, vous consentez à l'utilisation de ces cookies.
Politique de confidentialité