id: "REQ-288" title: "URL inexistente demorava segundos para responder (busca de outro idioma lia todas as páginas)" status: "implemented-pending-homologation" date: "2026-10-20" author: "executor" target_repo: "conn2flow" batch: "BATCH-296" topology: "dupla" autonomy: "autonomo_monitorado" origin: "Engenheiro Chefe: em conn2flow.com/<url-que-não-existe> a aba Network mostra a requisição pendente ~5,5 s antes do /404; o mesmo no [REDACTED]"
req-288: 404 lento
Relato
Ao digitar uma URL que não existe, o navegador fica carregando; a requisição do documento fica "pending" por ~5,5 s e só então vem o redirecionamento para /404. Acontece em produção e no Lab.
Diagnóstico (BATCH-296)
-
Medido de fora: produção 6,4 s para o
302 → /404(páginas reais 0,2–0,7 s); Lab 1,1 s (página real 0,09 s). -
Reproduzido no PHP CLI do Lab com o front-controller e
strace: a pausa inteira é uma consulta — a busca "a página existe em outro idioma?" do roteador (gestor.php), que rodava sem filtro de idioma e pediahtml,css,css_compiled… Sem o índice(language, caminho)da req-263, o banco lia todas as páginas inteiras (1.600 no Lab; ~200 MB em produção) mesmo sem achar nada. -
Tempos da consulta: produção 7.849 ms (antiga) × 26 ms (nova); Lab ~1.000 ms × 12 ms.
Correção
-
A busca de outro idioma pega primeiro só o
id_paginas, comlanguage IN (<idiomas habilitados>)eLIMIT 1(usaidx_paginas_language_caminho); a página inteira só é lida por id quando existe. -
A lista de idiomas da página (roda em toda página servida) também filtra pelos idiomas habilitados, para usar o mesmo índice.
Critérios de aceite
-
URL inexistente redireciona para
/404sem a espera (ordem de dezenas de milissegundos no servidor). -
Página existente só em outro idioma continua sendo servida.
-
Testes do core verdes.