Коротко: я пытаюсь выяснить основную разницу в том, как Chrome и Firefox выполняют поиск DNS в macOS по сравнению с Safari.
Подробно: у меня есть HTML-страница, которая выполняет AJAX-запрос к случайно сгенерированному (на основе GUID) имени хоста на моем сервере. При загрузке страницы в Chrome или Firefox объект ResourceTiming показывает, что разрешение DNS занимает на целую секунду дольше (примерно 1000 мс), чем в Safari.
Более подробно: что бы это ни вызывало, это происходит только на этом конкретном экземпляре macOS. Даже экземпляр виртуальной машины, работающий на этом же ноутбуке, не имеет проблемы.
Вывод при доступе из Chrome:
Retrieved: https://4-7-8a0e8a44-5a51-461f-8f89-36ca7130c503.lax-ns8ds.com
{
"domainlookupstart_domainlookupend": 1234.699999971781,
"connectstart_connectend": 48.79999998956919,
"sslstart_connectend": 29.700000013690442,
"responsestart_responseend": 0.7999999797903001,
"fetchstart_responseend": 1308.000000019092,
"requeststart_responseend": 22.200000006705523,
"starttime_responseend": 1308.000000019092
}
и при доступе из Safari:
Retrieved: https://4-7-2ca9fb3f-f43d-4797-8745-cd11d20483af.lax-ns8ds.com
{
"domainlookupstart_domainlookupend": 216,
"connectstart_connectend": 113,
"sslstart_connectend": 69.99999999999994,
"responsestart_responseend": 1,
"fetchstart_responseend": 358.0000000000001,
"requeststart_responseend": 28.000000000000114,
"starttime_responseend": 358.0000000000001
}
Очевидно, что другие временные параметры различаются сами по себе, но часть domainlookup ResourceTiming - это то, что постоянно отключается на ~ 1000 мс.
Такое чувство, что внутри происходит какой-то тайм-аут, но я не уверен и не знаю, как копать глубже.
Тестовая HTML-страница настроена на https://lax -ns8ds.com / wtf.html , хотя ее запуск сам по себе, скорее всего, ничего не даст (поскольку я сам ее не вижу на любом другая моя машина или экземпляр моей виртуальной машины).
Последняя деталь, о которой я могу подумать: я пытался использовать dtruss, чтобы увидеть, вижу ли я разницу в выполняемых системных вызовах, которая бы подсказала мне разницу между Chrome и Safari, но это не очень далеко.