- Shipped
- 11 de agosto de 2026 às 16:21 UTC
- Author
- kamo
- Commit
- f1de4ec
A infra- estrutura agora flui para 3 GiB, mas três coisas no navegador eo BFF fez que inalcançáveis, cada fatal por conta própria. O proxy de upload fez `await request.formData()`, puxou o arquivo e reconstruiu um segundo FormData para encaminhar — todo o upload no heap deste processo, duas vezes. Ele agora canaliza o corpo direto com o nó:http, a mesma construção que o proxy chat-attachment já usa Transportar 3 GiB em produção. nó:http em vez de obter porque o ondici aplica um cabeçalho 300s tempo limite para cada pedido, e um upload multi-gigabyte gasta muito mais tempo do que isso no fio antes de ConversionService — que hashes o arquivo carreado antes de responder — pode responder; fetch, o proxy em vez do produto decidiria o tamanho máximo do arquivo. computBlake3( arquivo) e computSha3256( arquivo) cada arquivo de chamada.arrayBuffer(), e os uploaders Fiz-lhes uma promessa. Todos, então o arquivo era totalmente residente na aba TWICE no pico. No velho 500MB cap que já era um gigabyte de memória de tabulação; em 3 GiB é seis e a aba morre antes um byte é carregado. Substituido por computFileDigests, que caminha o arquivo uma vez em 4 fatias MiB e alimenta ambos hashers do mesmo pedaço — a memória de pico é um pedaço em qualquer tamanho, espelhando HashUtils.computDigests no servidor. Ambos os digestos ainda são computados porque o upload endpoint recomputa e compara ambos; js-sha3 é JavaScript puro e domina o tempo, que é o preço da verificação mais forte do lado do servidor, então hashing agora relata progresso em vez de sentados a 2% durante minutos. MultiFileUploader não tinha nenhum limite de tamanho em tudo, então uma escolha oversize gasto minutos hashing para ganhar um falência opaca. O tamanho agora é verificado antes de qualquer coisa ler o arquivo, e o arquivo é adicionado no fase de erro nomeando tanto o seu tamanho quanto o limite.