Hit 250 | status 302 | 83 ms | redirect to: https://app.lshort.sh/online
Erro no hit 251: fetch failed
Resumo do teste:
Hits realizados: 250
Tempo médio (ms): 81.71
Tempo mínimo (ms): 66
Tempo máximo (ms): 326
Teste finalizado.
// hit_test.js
// Teste controlado de acesso a link encurtado
// Uso consciente, autorizado e com limite
const URL = "https://lshort.sh/ITlPomy";
const TOTAL_HITS = 1000; // quantidade total
const DELAY_MS = 1; // 1 segundo entre hits
const METHOD = "HEAD"; // HEAD reduz carga (troque para GET se precisar)
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function hit(i) {
const start = Date.now();
const res = await fetch(URL, {
method: METHOD,
redirect: "manual", // não seguir redirect para evitar custo extra
cache: "no-store",
});
const duration = Date.now() - start;
return {
index: i + 1,
status: res.status,
timeMs: duration,
location: res.headers.get("location") || null,
};
}
(async () => {
console.log("Iniciando teste de hits controlado…");
const times = [];
for (let i = 0; i < TOTAL_HITS; i++) {
try {
const result = await hit(i);
times.push(result.timeMs);
console.log(
`Hit ${result.index} | status ${result.status} | ${result.timeMs} ms` +
(result.location ? ` | redirect to: ${result.location}` : "")
);
} catch (err) {
console.error(`Erro no hit ${i + 1}:`, err.message);
break;
}
await sleep(DELAY_MS);
}
if (times.length) {
const avg =
times.reduce((a, b) => a + b, 0) / times.length;
console.log("Resumo do teste:");
console.log("Hits realizados:", times.length);
console.log("Tempo médio (ms):", avg.toFixed(2));
console.log("Tempo mínimo (ms):", Math.min(...times));
console.log("Tempo máximo (ms):", Math.max(...times));
}
console.log("Teste finalizado.");
})();