本文介绍HarmonyOS SDK的一些高级配置。
IP优选配置
当一个域名有多个IP节点时,可以考虑配置IP优选,使SDK根据每个IP的连接速度进行排序,使应用尽量使用最快的IP节点。
示例代码如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { httpdns } from '@aliyun/httpdns';
const ACCOUNT_ID = '这里需要替换为阿里云HTTPDNS控制台的Account ID'
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
httpdns.configService(ACCOUNT_ID, {
context: this.context,
// ************* IP优选配置 begin *************
hostConfigsForIpRanking: [{
host: 'www.aliyun.com',
port: 80
}]
// ************* IP优选配置 end *************
})
}
// 省略其它代码
}
hostConfigsForIpRanking的host字段指定哪个域名的解析结果进行IP优选。
hostConfigsForIpRanking的port字段指定使用哪个端口进行连接测速。
固定IP配置
当网络发生切换时,SDK内部会清除缓存,并根据是否开启网络变化自动解析配置决定是否触发自动解析。
当固定IP配置了域名之后,指定域名的解析结果会被认为是固定的,在网络切换时,不会清除缓存,也不会触发自动解析。
配置代码示例如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { httpdns } from '@aliyun/httpdns';
const ACCOUNT_ID = '这里需要替换为阿里云HTTPDNS控制台的Account ID'
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
httpdns.configService(ACCOUNT_ID, {
context: this.context,
// ************* 固定IP配置 begin *************
hostsWithFixedIp: ['www.aliyun.com']
// ************* 固定IP配置 end *************
})
}
// 省略其它代码
}
自定义TTL配置
默认情况下,SDK缓存的TTL时间,是根据DNS服务器的TTL时间计算的。
在部分场景下,如果应用想要修改SDK缓存的TTL时间,可以通过自定义TTL配置实现。
示例代码如下:
import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { httpdns, ICacheTtlCustomizer, IpType } from '@aliyun/httpdns';
const ACCOUNT_ID = '这里需要替换为阿里云HTTPDNS控制台的Account ID'
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
httpdns.configService(ACCOUNT_ID, {
context: this.context,
// ************* 自定义TTL配置 begin *************
ttlCustomizer: new CustomTtl()
// ************* 自定义TTL配置 end *************
})
}
// 省略其它代码
}
// ************* 自定义TTL实现 begin *************
class CustomTtl implements ICacheTtlCustomizer {
getCacheTtlInSec(host: string, type: IpType, serverTtlInSec: number): number {
if (host === 'www.aliyun.com') {
return 10 * 60;
}
return serverTtlInSec;
}
}
// ************* 自定义TTL实现 end *************
初始化配置中ttlCustomizer字段用于指定自定义TTL的实现。
自定义的TTL实现仅需要一个getCacheTtlInSec方法,用于SDK缓存解析结果时获取自定义的TTL时间。
在这个方法中,可以像示例代码一样,针对需要的域名返回定制的TTL时间。
文档内容是否对您有帮助?