jsonscraper
Marchés
Retour au journal

Cloudflare D1 limite la taille des réponses aux requêtes : pourquoi l’export de la base fonctionne autrement

Depuis le 4 novembre, une requête D1 peut échouer si son résultat dépasse 50 Mo. Cette limite concerne la réponse de la requête ; l’import et l’export via l’API REST restent possibles.

Politique éditoriale Signaler une erreur

Depuis le 4 novembre 2026, une requête adressée à Cloudflare D1 échoue si elle renvoie un résultat de plus de 50 Mo. Pour les développeurs, il est important de bien cerner la portée de ce changement : il concerne la taille du résultat d’une requête donnée, et non la taille maximale de la base. L’import et l’export via l’API REST ne sont pas soumis à cette limite. C’est donc la méthode de lecture des données qui détermine s’il faut modifier le flux de travail.

Article : Cloudflare D1 limite la taille des réponses aux requêtes : pourquoi l’export de la base fonctionne autrement
Résumé : La limite de 50 Mo de D1 porte sur le résultat d’une seule requête, et non sur la taille de la base. Voici les opérations concernées et comment fractionner les lectures et les exports volumineux.
Rôle de l’image : couverture — idée centrale
Section : Cloudflare D1 limite la taille des réponses aux requêtes : pourquoi l’export de la base fonctionne autrement
Sujet visuel : photo éditoriale d’une table de base de données représentée par une pile de cartes de données translucides
La limite porte sur le volume du résultat d’une requête SQL, et non sur la taille totale de la base.© jsonscraper · créé avec l’IA

Qu’est-ce qui est exactement limité ?

Dans une publication du 30 octobre, Cloudflare a annoncé cette limite : une requête dont le résultat dépasse 50 Mo renvoie l’erreur D1 query result exceeded the maximum response size limit of 50 MB. La limite entre en vigueur le 4 novembre 2026. La documentation D1 précise également qu’il s’agit d’une limite portant sur la taille du résultat d’une requête ; une base peut, quant à elle, stocker jusqu’à 10 Go avec l’offre payante ou 500 Mo avec l’offre gratuite.

Il s’agit de deux niveaux distincts : le stockage définit le volume de données dans la base, tandis que la limite de résultat détermine la quantité de données qu’une seule requête peut renvoyer. Une base peut donc contenir bien plus de 50 Mo de données tout en restant accessible par lectures fractionnées. À l’inverse, même une requête sur une petite base peut dépasser la limite si elle sélectionne de nombreuses lignes volumineuses ou de grands champs textuels et binaires.

Dans son annonce, Cloudflare indique que le seuil couvre le 99,999e percentile des requêtes D1. Il s’agit d’une estimation de la distribution des requêtes fournie par le prestataire ; pour vérifier le comportement d’une application, le plus important est de mesurer ses réponses et de repérer les requêtes qui renvoient de grands volumes de données.

Pourquoi l’export via l’API REST est-il un cas à part ?

Une application reçoit généralement le résultat d’une requête SQL et le transmet au code appelant. L’import et l’export d’une base via l’API REST sont des opérations différentes : Cloudflare précise qu’ils ne sont pas soumis au nouveau seuil et continuent de fonctionner comme auparavant. Ainsi, l’échec d’une requête volumineuse ne signifie pas qu’il est impossible d’exporter un grand volume de données depuis la base.

Article : Cloudflare D1 limite la taille des réponses aux requêtes : pourquoi l’export de la base fonctionne autrement
Résumé : La limite de 50 Mo de D1 porte sur le résultat d’une seule requête, et non sur la taille de la base. Voici les opérations concernées et comment fractionner les lectures et les exports volumineux.
Rôle de l’image : illustration complémentaire 2 — un aspect distinct
Section : Pourquoi l’export via l’API REST est-il un cas à part ?
Sujet visuel : infographie technique en russe montrant deux parcours vérifiés : la requête SQL renvoie des lignes
La lecture paginée fractionne les réponses des requêtes SQL, tandis que l’import et l’export via l’API REST restent des opérations distinctes.© jsonscraper · illustration générée par IA

En pratique, cette distinction aide à choisir la bonne méthode. Si l’application a besoin de toutes les entrées pour les afficher, les traiter ou produire un rapport, fractionnez la lecture en lots. Si l’objectif est de transférer ou d’exporter les données, examinez la possibilité d’utiliser l’export via l’API REST plutôt que d’essayer de récupérer toute la base dans une seule réponse SQL.

Comment réduire la réponse sans perdre les données nécessaires ?

La première étape consiste à supprimer les colonnes inutiles. Au lieu d’utiliser SELECT *, indiquez uniquement les champs nécessaires à l’opération en cours. Cela réduit le volume de la réponse, en particulier si la table contient de longues descriptions, des données JSON ou des valeurs BLOB.

La deuxième étape consiste à lire les lignes par lots à l’aide de LIMIT et OFFSET, comme le recommande Cloudflare. Par exemple, une interface peut récupérer la page suivante au fil du défilement, tandis qu’une tâche par lots traite séparément chaque segment. Ajoutez un tri stable, par exemple sur un identifiant unique : sans cela, les limites entre les pages peuvent se décaler si les données changent entre les requêtes.

Pour les exports de longue durée, il est également conseillé de conserver un point de reprise indiquant le dernier enregistrement traité. La tâche peut ainsi reprendre après une panne sans retraiter l’ensemble des données. La méthode dépend de l’application ; le principe essentiel consiste à limiter la taille de chaque réponse plutôt qu’à compter sur une seule requête qui renvoie tout le jeu de données.

Que vérifier dans l’application

Commencez par les requêtes qui renvoient de longues listes : exports de rapports, écrans d’administration, tâches en arrière-plan et routes d’API qui renvoient des tableaux de lignes. Mesurez temporairement le volume de la réponse sérialisée, ou le nombre et la taille des champs sélectionnés. Vérifiez ensuite le volume maximal attendu, et pas seulement celui d’un petit jeu de données de test habituel.

Si l’application renvoie une erreur après l’entrée en vigueur du changement, la documentation D1 l’associe précisément aux résultats de plus de 50 Mo et recommande de sélectionner les colonnes nécessaires ou de paginer les résultats. Cela permet de distinguer un problème de taille de réponse des limites de durée d’exécution, de mémoire ou de disponibilité de la base, qui ont d’autres causes et produisent d’autres erreurs.

En résumé, les requêtes courtes habituelles ne nécessiteront probablement aucun changement, tandis que les lectures volumineuses devront être traitées par lots. Cette limite n’empêche pas de stocker une base plus grande et ne bloque pas l’export via l’API REST ; elle impose de concevoir les requêtes pour que chaque réponse reste sous les 50 Mo.

Personnes

Aucune personne répertoriée pour cet article pour le moment.

Continuez à lireCloudflare D1 imposera une limite aux résultats des requêtes : quoi vérifier avant le 4 novembre
Lire le prochain article

Transformez vos lectures en intégration fonctionnelle

Explorez les API de données sociales de jsonscraper, testez des requêtes et créez votre prochain workflow.

Explorer les API