HeadlinesBriefing favicon HeadlinesBriefing.com

Autocompletar p99 0ms para 240M domínios

Hacker News •
×

Eu administro Wirewiki.com, um site para inspecionar infraestrutura de internet como nomes de domínio. Ajuda as pessoas a verificar registros DNS (históricos), delegação DNS, configuração de capacidade de entrega de e-mail, etc. Há muitos sites que oferecem isso (crescendo mais rápido do que nunca graças ao vibe coding), então preciso de uma maneira de me destacar. Escolhi qualidade / utilidade da ferramenta e UX.

O autocompletar é a principal forma de navegar pelo Wirewiki, então deve ser o mais completo, preciso e rápido possível. Quero que seja instantâneo. Como, instantâneo no próximo quadro.

Eu basicamente consegui isso. Ao pressionar uma tecla (o usuário começa a pressionar uma tecla), pré-carregamos as sugestões para o caractere digitado + qualquer caractere seguinte. E ao soltar a tecla (o usuário solta a tecla), renderizamos as sugestões.

Isso nos dá um orçamento de tempo da duração da pressão1 + o intervalo entre as pressões + a duração da pressão2. Se a API retornar antes do fim da segunda pressão, tereemos os resultados prontos a tempo. (Uma tela de 60 Hz renderiza a cada 16.7 ms. Então tecnicamente temos um orçamento de tempo extra de 8.33 ms em p50, mas próximo de 0 ms em p99.) Tecla solta Tecla pressionada wik GET /autocomplete?q=wi Renderizar complementos para 'wik' Orçamento de tempo da API Tempo de ida e volta da API A solicitação para q=wi dispara no instante em que i é pressionado; se sua resposta chegar antes de k ser solto, os complementos para wik renderizam com latência percebida zero.

Então, para o propósito deste artigo, definiremos a latência como de soltar a tecla aos resultados prontos para renderizar. p99 0 ms significa que 99% do tempo, os resultados estarão prontos antes de o usuário soltar a tecla. Precisamos de duas coisas para que isso aconteça: pré-carregamento e cache das sugestões do lado do cliente, e uma API rápida o suficiente. Como é grande o orçamento? Agora sabemos que podemos gastar duas durações de pressão de tecla e uma duração de intervalo, mas quanto é isso em milissegundos? Eu o mediu enquanto digitava 100 nomes de domínio razoavelmente rápido e encontrei que p99 funciona para mim em 121 ms.