# Performance antes/depois

Medição final: 17 setembro 2026. Os quatro documentos de planeamento e a primeira medição da referência foram criados antes da extração. No fecho, a mesma cópia imutável da referência foi medida novamente com **Node 24.1.0**, igual à baseline, para uniformizar o runtime. Nenhuma medição foi feita no servidor publicado.

## Resultados

| Métrica | CSPVF (referência) | UNEED baseline |
|---|---:|---:|
| Compilado `.next/server` + `.next/static` | 17.61 MiB | 3.32 MiB |
| Diretório de build sem cache | 239.93 MiB | 3.73 MiB |
| Assets públicos | 215.32 MiB | 235 bytes |
| Homepage: pedidos de rede | 51 | 9 |
| Homepage: transferência total | 1235.8 KiB | 141.1 KiB |
| JavaScript inicial transferido | 294.6 KiB | 132.5 KiB |
| TTFB da navegação local, servidor aquecido | 2.5 ms | 4.7 ms |
| Tempo local até headers, mediana de 10 fetches | 3.2 ms | 3.9 ms |
| Lighthouse Performance (mobile) | 75 | 97 |
| Lighthouse Accessibility | 96 | 100 |
| Lighthouse Best Practices / SEO | 100 / 100 | 100 / 100 |
| LCP de laboratório | 7.29 s | 1.92 s |
| CLS de laboratório | 0 | 0 |
| Total Blocking Time (não é INP) | 149 ms | 169 ms |
| RSS do processo após carregamento, 3 amostras | 68.1 MiB | 83.6 MiB |
| CPU idle aproximada nas 3 amostras | 0.0% | 0.0% |

## Leitura dos resultados

- Transferência total caiu cerca de 89%; JavaScript caiu cerca de 55%. Foram retirados slider/prefetch/media e CSS globais desnecessários.
- A homepage neutra não tem fotografias e o pacote não inclui o arquivo público histórico. Parte da redução é remoção de conteúdo específico, não uma comparação de páginas visualmente iguais. Repetir com o conteúdo real de cada cliente.
- **A orientação de JavaScript inicial ≤100 KB ainda não foi atingida**: continuam 136 KB transferidos pelo runtime Next/React. Não se retiraram scripts à resposta só para influenciar o teste. A homepage não tem componentes cliente próprios, mas preservar a stack mantém esse custo base. Brotli no proxy pode reduzir transferência; não foi contado como resultado medido.
- LCP <2 s, CLS <0.1 e Performance ≥95 foram observados nesta execução. Não são garantias de campo. INP real não foi medido; TBT não é usado como substituto.
- **Não se verificou uma redução de RAM nesta amostra**. RSS é afetado por GC, tempo de vida e pressão de memória do macOS. A baseline final usa versões de segurança mais recentes e outro arranque. Medir em produção sob carga antes de dimensionar vários sites. Não foi medido consumo médio de CPU sob carga.
- A build anterior inclui uma distribuição standalone com dependências/ficheiros duplicados. A final usa build Next normal e dependências instaladas à parte. Por isso o tamanho de build total não equivale a tamanho completo de deploy; a linha server+static separa o código compilado. `.next/cache` e `node_modules` de desenvolvimento não são pacote de produção.

## Método e evidência

Lighthouse 12.8.2, Chrome headless local, configuração mobile/simulated throttling de origem (guardada nos JSON). Requests/bytes recolhidos com Chrome DevTools Protocol, viewport 390×844, cache de browser desativado, `networkidle` + 1 s. Antes destas medições de requests/TTFB, foi pedido o HTML uma vez para aquecer o servidor. Os bytes CDP incluem overhead de transferência/headers; não são a soma de ficheiros JS descomprimidos.

Os benchmarks finais correram sequencialmente, sem builds ou testes de integração em paralelo. A primeira ronda foi 75/98; a ronda final com dependências corrigidas foi 75/97. São execuções locais, não percentis de utilizadores. TTFB local não representa latência de Internet. RSS/CPU recolhidos pelo `ps` do processo associado à porta, três amostras de um segundo.

Referência: build existente em cópia de `cpanel-source` com Next 16.2.6/Turbopack. Baseline: Next 16.3.5/Webpack, React 19.3.0. Os modos de build são diferentes e constam para não atribuir toda a redução a um único fator.

Ficheiros em `docs/evidence`: `before-final.json`, `after-final.json`, `lighthouse-before-final.json`, `lighthouse-after-final.json`, `npm-audit.json`. A verificação de integridade das 527 fontes originais está em `source-integrity.json`.

## Repetir para uma nova instituição

Iniciar uma build de produção, instalar as ferramentas **fora** do projeto e executar:

```sh
npm install --prefix /tmp/institution-benchmark --no-audit --no-fund playwright-core@1.51.1 lighthouse@12.8.2
PLAYWRIGHT_MODULE=/tmp/institution-benchmark/node_modules/playwright-core/index.mjs CHROME_PATH=/caminho/para/chrome node scripts/benchmark.mjs http://127.0.0.1:3000 "$PWD" /tmp/institution-result
CHROME_PATH=/caminho/para/chrome /tmp/institution-benchmark/node_modules/.bin/lighthouse http://127.0.0.1:3000 --chrome-flags='--headless' --only-categories=performance,accessibility,best-practices,seo --output=json --output-path=/tmp/institution-lighthouse.json
```

O script de medições usa `lsof` e `ps` (macOS/Linux). Não faz parte do runtime e não adiciona dependências ao website. Guardar ambiente, versões, modo de build, conteúdo e condições de teste. Testar também navegação/teclado/mobile e homepage com DB indisponível.
