Melhores Práticas de Buffers
Buffers são a ferramenta certa para trabalhos binários pequenos e de tamanho conhecido - para todo o resto, limite os tamanhos, prefira streams e trate codificação e segredos explicitamente.
Busque em todas as páginas da documentação
Buffers são a ferramenta certa para trabalhos binários pequenos e de tamanho conhecido - para todo o resto, limite os tamanhos, prefira streams e trate codificação e segredos explicitamente.
readFile para um único Buffer. Memória constante sob carga.MAX_FRAME ou de tamanho de corpo em parsers binários. Rejeite prefixos de comprimento excessivos antes da alocação.Buffer.concat quando o comprimento total for conhecido. Evite realocação O(n²) em muitos pedaços.Buffer.alloc para segredos e material criptográfico. Não allocUnsafe a menos que seja imediatamente sobrescrito completamente.utf8 explicitamente em toString/from para texto. Documente codificações legadas em ADR se for inevitável.TextDecoder com fatal: true para protocolos de texto de entrada. Rejeite sequências malformadas na fronteira.Buffer.byteLength para limites de tamanho UTF-8. Não .length da string.crypto.timingSafeEqual em digests de comprimento igual. Não use === bruto em chaves de API.finally quando viável. buffer.fill(0) higiene de melhor esforço.data corresponde a uma mensagem.subarray em vez de slice para visualizações de zero-copiagem. Copie ao reter além da próxima leitura.TextEncoder/Uint8Array nas fronteiras de fetch. Interoperabilidade com clientes do navegador.latin1 para "preservação". Use hex/base64 explícito com limites de tamanho em vez disso.Depende da API - típico 1-10 MB em proxy reverso e aplicativo. Mais rigoroso para endpoints de autenticação.
Pooling interno de chunks não sensíveis que você escreve completamente antes de qualquer leitura - nunca segredos voltados para o usuário.
Buffer estende Uint8Array - use qualquer um; prefira APIs Web em fronteiras isomórficas.
Transfira ArrayBuffers para evitar cópia - documente as semânticas de transferência de propriedade.
Decodifique UTF-8 para string primeiro com decodificador fatal - depois analise - ou limite o tamanho antes da decodificação.
Transmita para disco ou S3 - não bufferize o arquivo inteiro na RAM.
Não - ${buf} é coagido para string e pode vazar conteúdo em logs.
Divida o frame conhecido em várias chamadas feed() em node:test.
Apenas onde a estabilidade do esquema e a taxa de transferência justificam a complexidade - não para scripts únicos.
Melhores Práticas de Streams para regras de pipeline e backpressure.
Defina bodyLimit e use streams para downloads grandes - os padrões do Fastify não são segurança ilimitada.
Não em repouso - use KMS/Vault. Transporte Base64 OK com TLS e curta vida útil.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026