HeadlinesBriefing favicon HeadlinesBriefing.com

Autocomplete p99 0ms untuk 240M Domain

Hacker News •
×

Saya mengelola Wirewiki.com, situs untuk memeriksa infrastruktur internet seperti nama domain. Ini membantu orang untuk memeriksa catatan DNS (sejarah), delegasi DNS, konfigurasi kirim email, dll. Ada banyak situs yang menawarkan ini (tumbuh lebih cepat dari sebelumnya berkat vibe coding), jadi saya butuh cara untuk menonjol.

Saya memilih kualitas / kegunaan alat dan UX. Autocomplete adalah cara utama untuk menjelajahi Wirewiki, jadi sebaiknya sempurna, akurat, dan cepat mungkin. Saya ingin agar instan.

Seperti, instan di frame berikutnya. Saya kebanyakan telah mencapainya. Saat menekan tombol ke bawah (pengguna mulai menekan tombol), kami mem-prefetch saran untuk karakter yang diketik + karakter berikutnya apa pun.

Dan saat menekan tombol ke atas (pengguna melepas tombol), kami merender saran-saran tersebut. Ini memberi kami anggaran waktu dari durasi tekanan1 + jarak antar tekanan + durasi tekanan2. Jika API mengembalikan sebelum akhir tekanan kedua, kami akan memiliki hasil yang siap tepat waktu. (Tampilan 60 Hz merender setiap 16.7 ms.

Jadi secara teknis kami memiliki anggaran waktu tambahan sebesar 8.33 ms pada p50, tetapi dekat dengan 0 ms pada p99.) Tombol dilepas Tombol ditekan wik GET /autocomplete?q=wi Renderkan penyelesaian untuk 'wik' Anggaran waktu API Waktu putaran API Permintaan untuk q=wi menembakkan saat i ditekan; jika responsnya mendarat sebelum k dilepas, penyelesaian untuk wik akan dirender dengan latensi yang dirasakan sebagai nol. Jadi, untuk tujuan artikel ini, kami akan mendefinisikan latensi sebagai dari tombol dilepas hingga hasil siap untuk dirender. p99 0 ms berarti bahwa 99% dari waktu, hasilnya akan siap sebelum pengguna melepas tombol. Kami perlu dua hal untuk membuat ini terjadi: Prefetching dan caching saran dari sisi klien, dan API yang cukup cepat.

Seberapa besar anggaran waktunya? Kami sekarang tahu bahwa kami dapat menghabiskan dua durasi penekanan tombol dan satu durasi interval, tetapi berapa lama itu dalam milidetik? Saya mengukurnya sementara mengetik 100 nama domain cukup cepat dan menemukan bahwa p99 untuk saya adalah 121 ms.