简短:我正在尝试找出Chrome和Firefox在macOS上进行DNS查找与Safari如何进行DNS查找之间的根本差异。
详细信息:我有一个HTML页面,该页面对服务器上随机生成的(基于GUID的)主机名进行AJAX请求。在Chrome或Firefox中加载页面时,ResourceTiming对象显示DNS解析比Safari花费了整整一秒的时间(大约1000毫秒)。
更多详细信息:不管是什么原因造成的,它仅在特定的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 }
很明显,其他时间会各自不同,但是ResourceTiming的domainlookup部分通常会相差1000毫秒左右。
感觉内部发生某种超时,但是我不确定,我也不知道该怎么做。
测试HTML页面设置为https://lax-ns8ds.com/wtf.html,尽管您自己运行它可能不会显示任何内容(因为我自己在其他任何计算机或VM实例上都看不到它)。
我可以想到的最后一个细节:我尝试使用dtruss来查看是否可以看到正在进行的系统调用方面的差异,这可以使我对Chrome和Safari之间的差异有所提示,但并没有远。