DnsOptions

public final class DnsOptions


這個類別會設定 Cronet 的主機解析度功能。請注意,為簡潔起見,我們將 DNS 稱為最常用的機制,但設定適用於其他主機名稱解析方式,例如主機檔案解析。

Cronet 會透過兩種方式解析主機名稱:使用系統解析器 (使用系統程式庫提供的 getaddrinfo),或使用內建於 Cronet 所用網路堆疊的自訂解析器。

相較於使用系統解析器,內建堆疊具有下列幾項優點:

  • 這項功能專為網路堆疊需求量身打造,特別是速度和穩定性。
  • getaddrinfo 是封鎖呼叫,需要專用工作執行緒,且無法取消 (我們需要放棄執行緒,直到呼叫完成為止)
  • getaddrinfo 介面無法深入瞭解失敗的根本原因
  • struct addrinfo 不會提供傳回位址的 TTL (存留時間)。這會限制處理快取的彈性 (例如允許使用過時的 DNS 記錄),並要求我們依賴 OS DNS 快取,或極度保守地使用 TTL。
  • getaddrinfo是 OS 的一部分,因此演進速度較慢。使用自訂堆疊可讓 Cronet 更快推出加密 DNS 等功能。

這個類別中的大部分設定僅適用於使用內建 DNS 解析器時。

摘要

巢狀型別

public final class DnsOptions.Builder

DnsOptions 的建構工具。

API 的註解,表示 API 尚未穩定。

設定 Cronet 過時 DNS 功能的類別。

StaleDnsOptions 的建構工具。

公用方法

builder

public static DnsOptions.Builder builder()

getEnableStaleDns

public @Nullable Boolean getEnableStaleDns()

getPersistHostCache

public @Nullable Boolean getPersistHostCache()

getPersistHostCachePeriodMillis

public @Nullable Long getPersistHostCachePeriodMillis()

getPreestablishConnectionsToStaleDnsResults

public @Nullable Boolean getPreestablishConnectionsToStaleDnsResults()

getStaleDnsOptions

public @Nullable DnsOptions.StaleDnsOptions getStaleDnsOptions()

getUseBuiltInDnsResolver

public @Nullable Boolean getUseBuiltInDnsResolver()