HeadlinesBriefing favicon HeadlinesBriefing.com

Автодополнение p99 0ms для 240M доменов

Hacker News •
×

Я управляю Wirewiki.com, сайтом для проверки интернет-инфраструктуры, такой как доменные имена. Он помогает людям проверять (исторические) DNS-записи, делегирование DNS, настройку доставки электронной почты и т.д. Существует множество сайтов, предлагающих это (растущих быстрее, чем когда-либо, благодаря vibe coding), поэтому мне нужно найти способ выделиться. Я выбрал качество / полезность инструмента и UX. Автодополнение — это основной способ навигации по Wirewiki, поэтому оно должно быть максимально полным, точным и быстрым. Я хочу, чтобы оно было мгновенным. Как, мгновенным на следующем кадре. Я в основном достиг этого. При нажатии клавиши (пользователь начинает нажимать клавишу), мы предварительно загружаем предложения для введенного символа + любого следующего символа. И при отпускании клавиши (пользователь отпускает клавишу), мы отображаем предложения. Это дает нам временной бюджет: длительность нажатия1 + промежуток между нажатиями + длительность нажатия2. Если API вернется до конца второго нажатия, у нас будут результаты готовы вовремя. (Дисплей с частотой 60 Гц отображает каждые 16.7 мс. Итак, у нас теоретически есть дополнительный временной бюджет в 8.33 мс на p50, но около 0 мс на p99.) Клавиша отпущена Клавиша нажата wik GET /autocomplete?q=wi Отображение дополнений для 'wik' Временной бюджет API Время запроса-ответа API Запрос для q=wi запускается в момент нажатия i; если его ответ достигнет до того, как k будет отпущен, дополнения для wik будут отображены с нулевой воспринимаемой задержкой. Таким образом, в целях этой статьи, мы определим задержку как от момента отпускания клавиши до результатов, готовых к отображению. p99 0 мс означает, что 99% времени результаты будут готовы, прежде чем пользователь отпустит клавишу. Нам нужно две вещи, чтобы это произошло: клиентская предзагрузка и кэширование предложений, и API, достаточно быстрый. Каков размер бюджета? Теперь мы знаем, что можем потратить две длительности нажатия клавиши и одну длительность интервала, но сколько это в миллисекундах? Я измерил это, пока печатал 100 доменных имен довольно быстро, и обнаружил, что p99 для меня составляет 121 мс.