【问题标题】:When DNS resolution is done in QtWebKit?在 QtWebKit 中何时完成 DNS 解析?
【发布时间】:2015-06-28 02:45:53
【问题描述】:

我正在使用 QtWebkit,我想监控在 QtWebKit 中创建的请求。

DNS 名称何时解析为 IP 地址向 Web Server 发出请求?

QtWebKit 还维护(我猜是)解析的 IP 地址的缓存吗?

【问题讨论】:

    标签: web dns webkit ip-address qtwebkit


    【解决方案1】:
    • 读取DNSPrefetchHelper::lookedUp(1) 中的 cmets,我假设除了正常的 DNS 请求情况 (1) 和 (2) 之外,Qt 还像 (3) 一样预取 DNS

      1. 为页面导航请求进行的正常 DNS 查找
      2. 在 html 解析期间(用于内部 JS/CSS/IMG 类资源文件)
      3. 在用户将鼠标悬停在 href 上(预期点击和结果导航)等操作上预获取 DNS
    • 在 Qt 函数DNSPrefetchHelper::lookedUp(2) 中读取 cmets,我假设 Qt 只缓存非常少量的 DNS 结果。它主要依靠操作系统来缓存 DNS 结果。我也觉得这是处理 dns 缓存的最佳方式,即使您碰巧实现了一个。当应用程序尝试维护 dns 缓存时,在何时刷新 dns 缓存与准确结果之间做出性能决定会令人困惑。

      在操作系统无法缓存 dns 结果的不太可能的情况下,Qt 期望 ISP 缓存它。

    void lookedUp(const QHostInfo&)
    {
        // we do not cache the result, we throw it away.
        // we currently rely on the OS to cache the results. If it does not do that
        // then at least the ISP nameserver did it.
        // Since Qt 4.6.3, Qt also has a small DNS cache.
        DNSResolveQueue::shared().decrementRequestCount();
    }
    

    相关文件为(a)(b)(c)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2014-08-12
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      相关资源
      最近更新 更多