Topik ini menjelaskan operasi yang terkait dengan resolusi nama domain.
Lakukan pra-resolusi
Setelah aplikasi dimulai dan SDK diinisialisasi, Anda dapat segera memanggil operasi ini untuk menentukan nama domain yang sering diakses yang mungkin akan digunakan nanti. Ini memungkinkan SDK untuk menyelesaikan nama domain tersebut terlebih dahulu, mengurangi latensi permintaan resolusi nama domain berikutnya.
Jika Anda memanggil operasi ini selama waktu proses, SDK segera menyelesaikan nama domain dalam daftar yang ditentukan dan memperbarui hasil resolusi di cache. Ini setara dengan pemaksaan pembaruan. Operasi ini biasanya digunakan setelah tindakan bisnis tertentu terjadi ketika Anda ingin menyegarkan resolusi nama domain saat ini dan memaksa penjadwalan ulang nama domain.
Definisi operasi
- (void)setPreResolveHosts:(NSArray *)hosts;
Kelas
HttpDnsService
Deskripsi parameter
Parameter | Tipe | Diperlukan atau tidak | Catatan |
hosts | NSArray * | Ya | Nama domain yang ingin Anda pra-resolve. Penting
|
Resolusi nama domain sinkron non-blokir operasi
Jika Anda menggunakan operasi sinkron non-blokir untuk menyelesaikan nama domain, thread saat ini tidak diblokir, tetapi hasil kosong mungkin dikembalikan.
Operasi ini hanya memeriksa cache dan mengembalikan hasil resolusi dari cache. Jika tidak ada hasil resolusi di cache atau hasil resolusi yang tersimpan memiliki TTL kedaluwarsa, resolusi nama domain dilakukan di thread pekerja. Setelah resolusi berhasil, cache diperbarui untuk digunakan dalam resolusi nama domain berikutnya.
Definisi operasi
- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType;
- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey;
- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(HttpdnsRequest *)request;
Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.
Kelas
HttpDnsService
Definisi parameter
Parameter | Tipe | Diperlukan atau tidak | Catatan |
host | NSString * | Ya | Nama domain yang ingin Anda resolve |
queryIpType | HttpdnsQueryIPType | Ya | Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan Nilai valid:
|
sdnsParams | NSDictionary<NSString *, NSString *> * | Tidak | Parameter resolusi yang ditentukan perangkat lunak. |
cacheKey | NSString * | Tidak | Kunci cache yang ditentukan perangkat lunak. |
request | HttpdnsRequest * | Ya | Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Deskripsi pengembalian
Tipe | Deskripsi |
HttpdnsResult * | Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Operasi resolusi nama domain sinkron
Jika Anda menggunakan operasi resolusi sinkron untuk menyelesaikan nama domain, thread saat ini diblokir hingga hasil resolusi yang valid diperoleh dan dikembalikan.
Operasi ini pertama-tama memeriksa cache. Jika hasil resolusi yang valid ada di cache, hasil resolusi yang tersimpan segera dikembalikan. Jika tidak ada hasil resolusi yang valid ditemukan, operasi memblokir thread saat ini yang membuat panggilan resolusi dan melakukan resolusi nama domain di thread pekerja. Setelah resolusi nama domain selesai, hasil resolusi dikembalikan. Jika batas waktu tercapai, nilai null dikembalikan.
Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.
Untuk mencegah tersendatnya aplikasi akibat kesalahan penggunaan operasi ini di thread utama, operasi ini melakukan deteksi. Jika operasi mendeteksi bahwa thread pemanggil adalah thread utama, ia secara otomatis menurunkan spesifikasi ke logika implementasi operasi
resolveHostSyncNonBlocking.Batas waktu default untuk operasi ini adalah 2 detik. Jika tidak ada hasil yang valid diperoleh dalam periode timeout, nil dikembalikan. Anda dapat menggunakan objek permintaan untuk menentukan periode timeout kustom.
Definisi operasi
- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType;
- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey;
- (nullable HttpdnsResult *)resolveHostSync:(HttpdnsRequest *)request;
Kelas
HttpDnsService
Definisi parameter
Parameter | Tipe | Diperlukan atau tidak | Catatan |
host | NSString * | Ya | Nama domain yang ingin Anda resolve |
queryIpType | HttpdnsQueryIPType | Ya | Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan Nilai valid:
|
sdnsParams | NSDictionary<NSString *, NSString *> * | Tidak | Parameter resolusi yang ditentukan perangkat lunak. |
cacheKey | NSString * | Tidak | Kunci cache yang ditentukan perangkat lunak. |
request | HttpdnsRequest * | Ya | Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Deskripsi pengembalian
Tipe | Deskripsi |
HttpdnsResult * | Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Operasi resolusi nama domain asinkron
Jika Anda menggunakan operasi resolusi asinkron untuk menyelesaikan nama domain, thread saat ini tidak diblokir, dan hasil resolusi dikembalikan melalui callback.
Operasi ini pertama-tama memeriksa cache. Jika hasil resolusi yang valid ada di cache, hasil resolusi yang tersimpan segera dikembalikan melalui callback. Jika tidak ada hasil resolusi yang valid ditemukan, operasi melakukan resolusi nama domain di thread pekerja. Setelah resolusi nama domain selesai atau batas waktu tercapai, hasil resolusi dikembalikan melalui callback.
Definisi operasi
- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType completionHandler:(void (^)(HttpdnsResult * nullable))handler;
- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey completionHandler:(void (^)(HttpdnsResult * nullable))handler;
- (void)resolveHostAsync:(HttpdnsRequest *)request completionHandler:(void (^)(HttpdnsResult * nullable))handler;
Operasi ini ditambahkan di HTTPDNS SDK V3.0.0.
Batas waktu default untuk operasi ini adalah 2 detik. Jika tidak ada hasil yang valid diperoleh dalam periode timeout, nil dikembalikan. Anda dapat menggunakan objek permintaan untuk menentukan periode timeout kustom.
Kelas
HttpDnsService
Definisi parameter
Parameter | Tipe | Diperlukan atau tidak | Catatan |
host | NSString * | Ya | Nama domain yang ingin Anda resolve |
queryIpType | HttpdnsQueryIPType | Ya | Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan Nilai valid:
|
handler | (void (^)(HttpdnsResult * nullable)) | Ya | Callback. |
sdnsParams | NSDictionary<NSString *, NSString *> * | Tidak | Parameter resolusi yang ditentukan perangkat lunak. |
cacheKey | NSString * | Tidak | Kunci cache yang ditentukan perangkat lunak. |
request | HttpdnsRequest * | Ya | Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Deskripsi hasil callback
Tipe | Deskripsi |
HttpdnsResult * | Hasil resolusi. Untuk informasi lebih lanjut, lihat Struktur data terkait resolusi. |
Operasi untuk pembersihan cache nama domain
Jika Anda menggunakan HTTPDNS, Anda dapat memanggil operasi ini untuk membersihkan catatan DNS nama domain yang disimpan di cache. Dengan cara ini, hasil resolusi dapat diperbarui dalam hitungan detik. Sebagai contoh, jika nama domain xxx.com diselesaikan ke alamat IP ip1 dan serangan terjadi pada ip1, Anda dapat melakukan langkah-langkah berikut untuk memigrasikan lalu lintas dari ip1 ke ip2:
Pertama, ubah alamat IP nama domain menjadi ip2 di Konsol Cloud DNS.
Kemudian, buka Konsol HTTPDNS dan ajukan aksi penyegaran manual untuk nama domain ini untuk memicu penyegaran di sisi server.
Secara manual panggil operasi ini untuk membersihkan cache lokal dari nama domain xxx.com.
Jika permintaan diinisiasi setelah cache dibersihkan dari aplikasi, server mengirimkan permintaan baru ke server otoritatif untuk mendapatkan ip2 dalam catatan DNS terbaru. Dengan cara ini, ip2 segera digunakan sebagai alamat IP aktual untuk resolusi.
Anda dapat memanggil operasi ini untuk membersihkan cache nama domain tertentu atau semua nama domain.
Operasi ini hanya didukung di HTTPDNS SDK V2.0.4 dan versi lebih baru. Operasi
cleanAllHostCacheyang baru ditambahkan didukung di V3.1.0 dan versi lebih baru.Operasi ini membersihkan cache memori dan cache sandbox persisten lokal.
Definisi operasi
- (void)cleanHostCache:(NSArray <NSString *>*)hostArray;
- (void)cleanAllHostCache;
Deskripsi parameter
Parameter | Tipe | Diperlukan atau tidak | Catatan |
hostArray | NSArray <NSString *> * | Ya | Sebuah array yang terdiri dari nama domain yang catatan DNS-nya ingin Anda hapus dari cache lokal. Jika Anda ingin membersihkan semua data, atur parameter ini ke nil atau array kosong. |
Struktur data terkait resolusi
Operasi resolusi nama domain yang disediakan oleh HTTPDNS iOS SDK terutama melibatkan dua struktur kustom: HttpdnsRequest dan HttpdnsResult.
HttpdnsRequest
Kelas permintaan resolusi yang membungkus parameter permintaan terkait dengan resolusi nama domain.
Parameter | Tipe | Diperlukan atau tidak | Catatan |
host | NSString * | Ya | Nama domain yang ingin Anda resolve. |
queryIpType | HttpdnsQueryIPType | Ya | Tipe alamat IP ke mana Anda ingin menyelesaikan nama domain. Gunakan Nilai valid:
|
resolveTimeoutInSecond | double | Tidak | Periode timeout untuk resolusi. Untuk operasi sinkron, parameter ini menentukan waktu tunggu maksimum. Untuk operasi asinkron, parameter ini menentukan waktu tunggu maksimum untuk callback. Nilai default: 2. Nilai valid: 0.5 hingga 5. Satuan: detik |
sdnsParams | NSDictionary<NSString *, NSString *> * | Tidak | Parameter resolusi yang ditentukan perangkat lunak. |
cacheKey | NSString * | Tidak | Kunci cache yang ditentukan perangkat lunak. |
HttpdnsResult
Kelas hasil resolusi yang membungkus hasil yang dikembalikan setelah nama domain berhasil diselesaikan. Daftar berikut menjelaskan skenario di mana nilai kosong dikembalikan:
Nama domain tidak dapat diselesaikan ke alamat IP. Sebagai contoh, tidak ada alamat IP yang dikembalikan untuk resolusi rekursif.
Nama domain tidak ditambahkan di Konsol HTTPDNS, dan server tidak dapat menyelesaikan nama domain.
Resolusi gagal karena alasan seperti pengecualian jaringan.
Ketika Anda menggunakan operasi sinkron non-blokir, sistem pertama-tama mengembalikan nilai kosong jika tidak ada catatan yang segera ditemukan di cache lokal.
Parameter | Tipe | Deskripsi |
host | NSString * | Nama domain yang diselesaikan |
ips | NSArray<NSString *> * | Alamat IPv4 yang dikembalikan. |
ipv6s | NSArray<NSString *> * | Alamat IPv6 yang dikembalikan. |
lastUpdatedTimeInterval | NSTimeInterval | Waktu ketika alamat IPv4 terakhir diperbarui. Timestamp Unix. Satuan: detik |
ttl | NSTimeInterval | TTL alamat IPv4. Satuan: detik |