Parar o envio do código shell nenhuma rota pode alcançar

Performancekamo-internal
Navios
26 de agosto de 2026 às 00:52 UTC
Autor
kamo
Enviar
0a36119

Lote 1 da auditoria de desempenho do cliente. Cada mudança é de preservação do comportamento; Nada que um membro possa ver ou fazer é diferente depois. I18nFornecedores importaram quatro barris locais com «importação * como» e indexaram-nos por um Chave de tempo de execução. Um espaço de nomes lido por uma chave computada não pode ser abalado pela construção, assim todos os 236 objetos locais enviados quando o aplicativo mapeia 74. Medido com esbuild contra os formulários exatos de importação: 1.283 KB -> 421 KB minificado, 216 KB -> 77 KB gzip. Aquele pedaço. está em 143 das 143 rotas da página, por isso foi parse-e-execute trabalho antes Todas as páginas. Todos os 88 mapeamentos locais (22 locais x 4 mapas) verificados para resolver para a exportação idêntica à anterior. createPhoneSdk importou estaticamente todos os três adaptadores, então sip.js E ringcentral-web-phone atingiu cada membro em cada rota — incluindo orgs sem provedor de telefone e membros de equipes, que não precisam de nenhum deles. Os módulos do adaptador estão agora alcançado através de `await import()`, razão pela qual a fábrica é assync; sua única chamada Já era uma chamada de volta. EquipesAcsPhoneSdk já diferiu o Azure SDK Assim, isto estende um padrão estabelecido em vez de inventar um. UseFormatters construiu dois objetos Intl.DateTimeFormat em cada chamada `custom()` e um Intl fresco. NumberFormat em cada número/percent/moeda chamada. Numa grelha com duas datas colunas sobre ~25 linhas que são 50 construções por ordenação, filtro ou atualização de rolagem. Agora servido a partir de um cache de todo o processo: 2.028 comparações entre 12 locais, 5 zonas e 8 formas de opção produzem saída bytes idênticos, e 20.000 formatos foram 12.720ms -> 308ms. MeetingDialog (@ mui/x-date-pickers' DateTimePicker) e o editor lexical de notas pegajosas foram ambas as importações estáticas na casca sempre montada para superfícies que começam fechadas. Ambos estão adiados agora. O editor é adiado em FloatingNote em vez de em Nota flutuanteLayer de propósito — lazir a camada iria colapsar o AnimatePresence rastreamento de crianças e silenciosamente soltar a animação próxima do pegajoso — e FlutuanteNoteLayer aquece o pedaço no ocioso para que o primeiro aberto permanece instantâneo em vez de se tornar uma busca. NavLayot, SettingsAppPins e FloatingNotes cada um obteve o membro inteiro ui-preferences documento para si mesmos, embora um leitor coalescendo para exatamente que endpoint já existia na mesma base de códigos. Todos os três agora compartilhá-lo, e seus escritos passar pelo escritor partilhado para que o mapa em cache não possa ficar obsoleto. Adiciona uma correspondência deleteMemberUiPreference para o caminho de reset do NavLayout, que de outra forma teria deixado um a tecla apagada na cache. A compilação do navegador do Blake3 agora é importada vagamente. Foi puxado por qualquer coisa que importa. MAX UPLOAD BYTES ou formatFileSize do mesmo módulo, então seu WASM foi obtido e compilado durante a primeira pintura para uma função que só é executada após um seletor de arquivos. next.config: productionBrowserSourceMaps defaults off (opt back in for a debugging construir com KAMO BROWSER SOURCEMAPS=verdadeiro). Ele estava emitindo 349 arquivos de mapa, 103.7 MB, todos Fontes de transporteConteúdo — o TypeScript original completo deste aplicativo, servido a partir de / next/static para qualquer um que possa alcançar o host. Também deixa cair o bloco 'env' morto: KAMO OAUTH2 CLIENT PASSWORD tem zero referências na fonte e aparece no cliente zero pedaços, então nada estava vazando, mas o bloco é um convite permanente para secretar o momento em que um componente cliente lê-lo. Deliberadamente NÃO feito: definindo `compress: false` para deixar o brotli de Traefik assumir. O middleware de compressão da Traefik permite-listas de tipos de conteúdo e a lista omite aplicativo/javascript e aplicativo/json, que é exatamente o que Next serve JS e Corpos de API como — então desativar o gzip do Next enviaria cada parte e cada resposta de API sem compressão. Isso precisa da lista de permissão alargada em KlusterServices primeiro, como seu próprio Mudança de plataforma. Verificado: tsc -- noEmit clean; os scripts de 7 guardas não relacionados com o passe de trabalho em voo; vitest 3.089 tests pass (a suite é um intervalo de tempo em carga simultânea — a falha conjunto diferente por corrida e todo verde re-ran em isolamento).

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços