NSURLSessionTaskTransactionMetrics 相關
封裝在執(zhí)行會話任務期間收集的性能指標的對象。
每個NSURLSessionTaskTransactionMetrics對象由一個請求和響應屬性組成,對應于相應任務的請求和響應。
它還包含時間度量,從fetchStartDate開始,以responseEndDate結束,以及其他特征,如networkProtocolName和resourceFetchType。
該類定義在任務執(zhí)行期間為請求/響應事務收集的性能指標。
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;
事務響應。
如果發(fā)生錯誤而沒有生成響應,則此屬性為nil。
表示事務響應。如果發(fā)生錯誤且沒有生成響應,則可以為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;
安全握手完成后立即發(fā)生的時間。
如果未使用加密連接、使用持久連接或從本地資源檢索資源,則此值為nil。
如果使用加密連接,secureConnectionEndDate是安全握手完成后的立即時間。
如果未使用加密連接,則將此屬性設置為nil。
@property (nullable, copy, readonly) NSDate *connectEndDate;
任務完成后立即建立到服務器的連接的時間。
此值用于完成與安全性相關的握手和其他握手。如果使用持久連接,或者從本地資源檢索資源,則該值為nil。
connectEndDate是用戶代理完成與服務器的連接后的立即時間,包括完成與安全性相關的握手和其他握手。
@property (nullable, copy, readonly) NSDate *requestStartDate;
任務開始請求資源之前的時間,無論從服務器還是本地資源檢索資源。
例如,這將對應于用戶代理發(fā)送HTTP GET請求之前的時間。
@property (nullable, copy, readonly) NSDate *requestEndDate;
任務完成后立即請求資源的時間,無論它是從服務器或本地資源檢索到的。
requestEndDate是用戶代理完成對源的請求后立即出現的時間,不管是從服務器檢索到的資源還是本地資源。
例如,這將對應于用戶代理完成發(fā)送請求的最后一個字節(jié)后的立即時間。
@property (nullable, copy, readonly) NSDate *responseStartDate;
任務從服務器或本地資源接收到響應的第一個字節(jié)后的立即時間。
例如,這將對應于用戶代理收到HTTP響應的第一個字節(jié)后的立即時間。
@property (nullable, copy, readonly) NSDate *responseEndDate;
任務接收到資源的最后一個字節(jié)后的立即時間。
responseEndDate是用戶代理收到資源的最后一個字節(jié)后的立即時間。
@property (nullable, copy, readonly) NSString *networkProtocolName;
用于獲取資源的網絡協(xié)議。
當配置代理并建立隧道連接時,該屬性返回隧道協(xié)議的值,該值由ALPN協(xié)議ID標識序列標識,如RFC 7310所示。例如:
如果沒有使用代理,并且協(xié)商了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;
一個值,指示是否從本地緩存加載、推送或檢索資源。
指示是否從本地緩存加載、推送或檢索資源。