HeadlinesBriefing favicon HeadlinesBriefing.com

p99 0ms Autocomplete für 240M Domains

Hacker News •
×

Ich betreibe Wirewiki.com, eine Website zur Untersuchung von Internet-Infrastrukturen wie Domain-Namen. Es hilft Menschen, (historische) DNS-Einträge, DNS-Delegierung, E-Mail-Zustellbarkeitskonfiguration usw. zu überprüfen. Es gibt viele Seiten, die dies anbieten (wächst schneller als je zuvor dank vibe coding), also brauche ich eine Möglichkeit, mich abzuheben.

Ich habe mich für Tool-Qualität / Nützlichkeit und UX entschieden. Die Autocomplete ist die Hauptmethode, um Wirewiki zu navigieren, daher sollte sie so vollständig, genau und schnell wie möglich sein. Ich will, dass es instant ist.

Wie, im nächsten Frame instant. Ich habe das größtenteils erreicht. Beim Drücken einer Taste (der Benutzer beginnt, eine Taste zu drücken), prefetchen wir die Vorschläge für das getippte Zeichen + jedes folgende Zeichen.

Und beim Loslassen der Taste (der Benutzer löst die Taste) rendern wir die Vorschläge. Das gibt uns ein Zeitebudget von Tastendruckdauer1 + Lücke zwischen den Tastendrücken + Tastendruckdauer2. Wenn die API vor Ende des zweiten Tastendrucks zurückkehrt, haben wir die Ergebnisse rechtzeitig bereit. (Ein 60-Hz-Bildschirm rendert alle 16,7 ms.

Also haben wir technisch gesehen ein zusätzliches Zeitebudget von 8,33 ms bei p50, aber nahe 0 ms bei p99.) Taste losgelassen Taste gedrückt wik GET /autocomplete?q=wi Rendern von Vervollständigungen für 'wik' Zeitebudget der API API-Roundtrip-Zeit Die Anfrage für q=wi löst sich instant aus, wenn i gedrückt wird; wenn seine Antwort vor dem Loslassen von k eintrifft, rendern die Vervollständigungen für wik mit null wahrgenommener Latenz. Also, zum Zweck dieses Artikels, definieren wir die Latenz als von Taste loslassen bis Ergebnisse für das Rendering bereit. p99 0 ms bedeutet, dass in 99% der Fälle die Ergebnisse bereit sind, bevor der Benutzer die Taste loslässt. Wir brauchen zwei Dinge, um das zu ermöglichen: Clientseitiges Prefetching und Caching der Vorschläge, und eine API, die schnell genug ist.

Wie groß ist das Budget? Wir wissen jetzt, dass wir zwei Tastendruckdauern und eine Lückendauer ausgeben können, aber wie lang ist das in Millisekunden? Ich habe es gemessen, während ich 100 Domain-Namen relativ schnell getippt habe, und festgestellt, dass p99 für mich 121 ms beträgt.