问题描述:
HTTPDNS可以自定义客户端缓存时间吗?
解决方案:
HTTPDNS客户端SDK默认使用域名解析结果中携带的TTL值作为缓存时间。SDK同时也提供了自定义TTL接口,使用时,可以根据不同域名指定TTL,从而可以改变SDK对解析结果的缓存时间。
具体操作,是通过调用如下接口,在初始化HTTPDNS时,强制指定对应域名的TTL。SDK在缓存该域名解析结果时,将使用这个TTL值作为缓存时间。
Android接口:
(2.3.0)及以上版本的SDK可以更新TTL时间
/**
* 修改ttl时长的接口
* 用于用户定制ttl,以控制缓存的时长
*/
public interface CacheTtlChanger {
/**
* 根据域名、ip类型和服务的ttl返回定制的ttl
* @param host 域名
* @param type ip类型
* @param ttl 服务下发的ttl 单位秒
* @return 定制的ttl 单位秒
*/
int changeCacheTtl(String host, RequestIpType type, int ttl);
}
iOS接口:
@protocol HttpdnsTTLDelegate <NSObject>
/// 自定义HOST的TTL时长
/// @return 返回需要自定义的TTL时长
/// @param host 域名
/// @param ipType 当前查询的IP类型
/// @param ttl 当次域名解析返回的TTL
- (int64_t)httpdnsHost:(NSString *)host ipType:(AlicloudHttpDNS_IPType)ipType ttl:(int64_t)ttl;
@end
Harmony接口:
/**
* 自定义ttl的回调接口
*/
export interface ICacheTtlCustomizer {
/**
* 返回 自定义的ttl
* @param host
* @param type
* @param serverTtlInSec httpdns服务返回的ttl
* @returns
*/
getCacheTtlInSec(host: string, type: IpType, serverTtlInSec: number): number;
}
上一篇:无下一篇:移动研发平台
该文章对您有帮助吗?