NSURLSessionTaskTransactionMetrics 相关
封装在执行会话任务期间收集的性能指标的对象。
每个NSURLSessionTaskTransactionMetrics对象由一个请求和响应属性组成,对应于相应任务的请求和响应。
它还包含时间度量,从fetchStartDate开始,以responseEndDate结束,以及其他特征,如networkProtocolName和resourceFetchType。
该类定义在任务执行期间为请求/响应事务收集的性能指标。
typedef NS_ENUM(NSInteger, NSURLSessionTaskMetricsResourceFetchType) {
NSURLSessionTaskMetricsResourceFetchTypeUnknown, 无法确定获取资源的方式。
NSURLSessionTaskMetricsResourceFetchTypeNetworkLoad, 资源是通过网络加载的。
NSURLSessionTaskMetricsResourceFetchTypeServerPush, 资源由服务器推送到客户机。
NSURLSessionTaskMetricsResourceFetchTypeLocalCache, 从本地存储中检索资源。
} API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));
NSURLSessionTaskTransactionMetrics 相关属性方法
@property (copy, readonly) NSURLRequest *request;
事务请求。
表示事务请求。
@property (nullable, copy, readonly) NSURLResponse *response;
事务响应。
如果发生错误而没有生成响应,则此属性为nil。
表示事务响应。如果发生错误且没有生成响应,则可以为nil。
@property (nullable, copy, readonly) NSDate *fetchStartDate;
任务开始从服务器或本地获取资源的时间。
@property (nullable, copy, readonly) NSDate *domainLookupStartDate;
任务开始查找资源名称之前的时间。
如果使用持久连接,或者从本地资源检索资源,则此值为nil。
@property (nullable, copy, readonly) NSDate *domainLookupEndDate;
名称查找完成后的时间。
如果使用持久连接,或者从本地资源检索资源,则此值为nil。
@property (nullable, copy, readonly) NSDate *connectStartDate;
任务开始建立到服务器的TCP连接之前的时间。
如果使用持久连接,或者从本地资源检索资源,则此值为nil。
connectStartDate是用户代理开始建立到服务器的连接之前的时间。
例如,这将对应于用户代理开始尝试建立TCP连接之前的时间。
@property (nullable, copy, readonly) NSDate *secureConnectionStartDate;
任务启动TLS安全握手以保护当前连接之前的时间。
如果未使用加密连接、使用持久连接或从本地资源检索资源,则此值为nil。
如果使用加密连接,secureConnectionStartDate是用户代理启动安全握手以保护当前连接之前的时间。
例如,这将对应于用户代理开始TLS握手之前的时间。
如果未使用加密连接,则将此属性设置为nil。
@property (nullable, copy, readonly) NSDate *secureConnectionEndDate;
安全握手完成后立即发生的时间。
如果未使用加密连接、使用持久连接或从本地资源检索资源,则此值为nil。
如果使用加密连接,secureConnectionEndDate是安全握手完成后的立即时间。
如果未使用加密连接,则将此属性设置为nil。
@property (nullable, copy, readonly) NSDate *connectEndDate;
任务完成后立即建立到服务器的连接的时间。
此值用于完成与安全性相关的握手和其他握手。如果使用持久连接,或者从本地资源检索资源,则该值为nil。
connectEndDate是用户代理完成与服务器的连接后的立即时间,包括完成与安全性相关的握手和其他握手。
@property (nullable, copy, readonly) NSDate *requestStartDate;
任务开始请求资源之前的时间,无论从服务器还是本地资源检索资源。
例如,这将对应于用户代理发送HTTP GET请求之前的时间。
@property (nullable, copy, readonly) NSDate *requestEndDate;
任务完成后立即请求资源的时间,无论它是从服务器或本地资源检索到的。
requestEndDate是用户代理完成对源的请求后立即出现的时间,不管是从服务器检索到的资源还是本地资源。
例如,这将对应于用户代理完成发送请求的最后一个字节后的立即时间。
@property (nullable, copy, readonly) NSDate *responseStartDate;
任务从服务器或本地资源接收到响应的第一个字节后的立即时间。
例如,这将对应于用户代理收到HTTP响应的第一个字节后的立即时间。
@property (nullable, copy, readonly) NSDate *responseEndDate;
任务接收到资源的最后一个字节后的立即时间。
responseEndDate是用户代理收到资源的最后一个字节后的立即时间。
@property (nullable, copy, readonly) NSString *networkProtocolName;
用于获取资源的网络协议。
当配置代理并建立隧道连接时,该属性返回隧道协议的值,该值由ALPN协议ID标识序列标识,如RFC 7310所示。例如:
如果没有使用代理,并且协商了HTTP/2,则返回h2。
如果代理使用HTTP/1.1,并且隧道连接是HTTP/2,则返回h2。
如果代理使用HTTP/1.1,并且没有通道,则返回HTTP/1.1。
@property (assign, readonly, getter=isProxyConnection) BOOL proxyConnection;
一个布尔值,指示是否使用代理连接来获取资源。
如果使用代理连接获取资源,则将此属性设置为YES。
@property (assign, readonly, getter=isReusedConnection) BOOL reusedConnection;
一个布尔值,指示是否使用持久连接来获取资源。
如果使用持久连接获取资源,则将此属性设置为YES。
@property (assign, readonly) NSURLSessionTaskMetricsResourceFetchType resourceFetchType;
一个值,指示是否从本地缓存加载、推送或检索资源。
指示是否从本地缓存加载、推送或检索资源。
网友评论