HTTPDNS可以自定义客户端缓存时间吗?

更新时间:2025-04-14 11:12:00

问题描述:

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;
}

    AI助理

    点击开启售前

    在线咨询服务

    你好,我是AI助理

    可以解答问题、推荐解决方案等