0

Short:我试图弄清楚 Chrome 和 Firefox 如何在 macOS 上进行 DNS 查找与 Safari 进行 DNS 查找的根本区别。

详细信息:我有一个 HTML 页面,它向我的服务器上随机生成的(基于 GUID 的)主机名发出 AJAX 请求。在 Chrome 或 Firefox 中加载页面时,ResourceTiming 对象显示 DNS 解析比在 Safari 中花费的时间长一秒(大约 1000 毫秒)。

更多细节:无论是什么原因造成的,它只发生在这个特定的 macOS 实例上。即使是在同一台笔记本电脑上运行的虚拟机实例也没有问题。

从 Chrome 访问时的输出:

检索: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 访问时:

检索:https://4-7-2ca9fb3f-f43d-4797-8745-cd11d20483af.lax-ns8ds.com

{
    “domainlookupstart_domainlookupend”:216,
    “连接开始连接结束”: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 之间差异的提示,但这并没有走得太远。

4

0 回答 0