Tumbleweed 0.1

Tumbleweed 0.1

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2017 年 4 月
SwiftSwift 版本3.1
SPM支持 SPM

Johan Sørensen 维护。



  • 作者:
  • Johan Sørensen

将 URLSession 任务的详细指标记录到控制台,例如 DNS 查询持续时间、请求和响应时间等。Tumbleweed 通过解析 iOS 10.0 中引入的 URLSessionTaskMetrics 收集的指标来工作。

示例输出

Task ID: 1 lifetime: 594.9ms redirects: 0
GET https://github.com/ -> 200 text/html, through network-load
protocol: http/1.1 proxy: false reusedconn: false
domain lookup     |#                                                                               |   3.0ms
connect           |###############################################                                 | 330.0ms
secure connection |               ################################                                 | 223.0ms
request           |                                               #                                |   0.2ms
server            |                                               ###################              | 130.9ms
response          |                                                                 ###############| 105.8ms
                                                                                             total   575.0ms

关于数据的几点注意

  • 任务生命周期是从 URLSessionTask 创建到响应被送出到的时间。
  • 第二行的 "through" 键会告诉你响应是从缓存中取出的,还是通过服务器推送或在网络上加载的。
  • "服务器" 是服务器处理请求所花费的时间

注意 并非所有响应都会提供完整的指标,例如本地缓存获取和其他非网络加载响应。

用法

在您的 URLSessionDelegate

func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
    let stats = SessionMetrics(source: metrics, task: task)
    let renderer = ConsoleRenderer()
    renderer.render(with: stats)
}

为了方便,Tumbleweed 提供了 SessionMetricsLogger,可以将它设置为 URLSessionURLSessionDelegate,如果您没有使用其他任何委托。

let sessionDelegate: URLSessionDelegate?
if #available(iOS 10.0, *) {
sessionDelegate = SessionMetricsLogger()
} else {
    sessionDelegate = nil
}
let session = URLSession(configuration: .default, delegate: sessionDelegate, delegateQueue: nil)

安装

Tumbleweed 以 CocoaPod(《pod 'Tumbleweed'》)和 Swift Package Manager 的形式提供。框架安装也可以通过将 Tumbleweed.xcodeproj 拖入您的项目或通过 Carthage 完成。

Tumbleweed 除了 Foundation 外没有其他依赖。

许可

见 LICENSE 文件