mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-12 09:47:20 +02:00
La limite de 24 Mo n'etait pas arbitraire : le fichier partait dans un seul corps JSON en base64, tenu entier en memoire par le navigateur puis par le serveur. Relever la constante seule aurait demande ~1,4 Go de RAM de chaque cote pour un fichier de 1 Go. Le transfert est donc decoupe en tranches de 8 Mo. Le navigateur lit une tranche a la fois (Blob.slice), le serveur la decode, l'ecrit dans un .part et l'oublie ; seul le descripteur reste ouvert. Mesure sur 120 Mo : la RAM du process n'a pas bouge (95 -> 96 Mo). uploadMaxBytes (1 Go) borne desormais le DISQUE ; c'est uploadChunkMax (8 Mo) qui borne la memoire, et lui seul. Une session interrompue est balayee au bout de 10 min, et les .part orphelins sont effaces au demarrage du service : les sessions vivent en memoire, aucun n'est reprenable apres un arret. Un identifiant inconnu est refuse en 409 plutot que de reprendre un fichier en son milieu. La vignette affiche l'avancement en pourcentage au-dela d'une tranche.