libcurl DNS lookup - PullRequest
       9

libcurl DNS lookup

0 голосов
/ 01 марта 2020

Я использую libcurl с pthreads для выполнения некоторых запросов POST к одному веб-сайту. Этот веб-сайт может меняться со временем. Я хочу, чтобы эта программа была максимально быстрой. Поэтому мне пришла в голову мысль сначала найти IP-адрес веб-сайта, а затем передать этот IP-адрес вместо URL-адресов веб-сайтов темам.

Сначала вы считаете, что это хорошая вещь? Как это устраняет время поиска DNS в каждом соединении (потоке).

И как я могу сделать это в libcurl? Есть ли какая-нибудь функция, чтобы просто найти IP имени хоста? Или есть какой-нибудь другой простой способ сделать это на C языке?

1 Ответ

0 голосов
/ 01 марта 2020

Это проблема, которую система DNS-запросов в вашей ОС должна решить.

Улучшение производительности, которое вы хотите получить, не выполняя дополнительный поиск, противоречит тому факту, что IP-адрес может со временем меняться. Любые запросы должны кэшироваться, предположительно, с соблюдением некоторых правил тайм-аута записи, установленных записью DNS. Насколько я могу судить, Windows и запросы кеша OS X автоматически из коробки. В моем Debian Box я обнаружил, что для этой функции я должен был включить службу systemd-resolved. Не зная ваших потребностей, это, пожалуй, самое разумное общее решение того, что вы описываете.

Делайте это с помощью getaddrinfo () и кешируйте его самостоятельно в течение некоторого периода времени в рамках вашей программы (даже на диск). ) является правильным решением, если вы хотите абсолютного контроля и не хотите где-то жестко его кодировать (в приложении или в чем-то вроде файла hosts).

...