Laissez les télécharger de documents atteignent effectivement le plafond de backend 3 GiB

Fixkamo-internal
Expédié
11 août 2026 à 16:21 UTC
Auteur
kamo
Commite
f1de4ec

Le backend est maintenant en streaming à 3 GiB, mais trois choses dans le navigateur et le BFF ont fait que inatteignable, chacun mortel en soi. Le proxy de téléchargement a fait de la demande.formData()-, a sorti le fichier et a reconstruit une seconde FormData à transmettre - l'ensemble du volume dans le tas de ce processus, deux fois. Il canalise maintenant la carrosserie directement avec node:http, la même construction que le mandataire de l'attachement au chat utilise déjà pour transporter 3 GiB en production. noeud:http plutôt que chercher parce que l'undic applique un en-tête de 300 s temporation à chaque demande, et un téléchargement multigigaoctets passe beaucoup plus longtemps que celui sur le fil avant ConversionService - qui hais le fichier bouillonnant avant de répondre - peut répondre ; avec Fetch, le proxy plutôt que le produit déciderait de la taille maximale du fichier. calculBlake3(fichier) et calculSha3256(fichier) chaque fichier d'appel.arrayBuffer(), et les téléchargeurs Ils ont présenté une promesse.all, donc le fichier résidait entièrement dans l'onglet TWICE au sommet. À l'ancienne Capuchon de 500 Mo qui était déjà un gigaoctet de mémoire de tabulation; à 3 GiB, il est six et la languette meurt avant un octet est téléchargé. Remplacé par le calculFileDigests, qui parcourt le fichier une fois en 4 tranches de MiB et nourrit les deux hachards à partir de la même mémoire de crête et de pic est un morceau à n'importe quelle taille, en miroir HashUtils.computeDigests sur le serveur. Les deux digests sont encore calculés parce que le téléchargement le critère d'évaluation recalcule et compare les deux ; js-sha3 est JavaScript pur et domine le temps, qui est le prix du contrôle plus fort côté serveur, donc le hachage fait maintenant état d'avancement plutôt que assis à 2 % pendant des minutes. MultiFileUploader n'avait aucune limite de taille, donc un pick oversize a passé des minutes à hachérer pour gagner un défaillance opaque. La taille est maintenant vérifiée avant que quoi que ce soit lit le fichier, et le fichier est ajouté dans le un étage d'erreur nommant à la fois sa taille et la limite.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation