一. 名称
CURLOPT_DNS_CACHE_TIMEOUT - 设置DNS缓存条目的生存时间
二. 摘要
1#include <curl/curl.h>
2
3CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
三. 描述
传递一个long类型参数,这会设置超时时间(以秒为单位)。名称解析将保存在内存中,并使用此秒数。设置为0将完全禁用缓存,或设置为-1使缓存的条目永远保持不变。默认情况下,libcurl缓存该信息60秒。
除非明确告知(例如,通过调用res_init(3)),否则各种libc实现的名称解析功能都不会重新读取名称服务器信息。这可能会导致libcurl继续使用旧的服务器,即使DHCP已经更新了服务器信息,对于一般的libcurl-app用户来说,这可能是一个DNS缓存问题。
请注意,DNS条目具有“ TTL”属性,但libcurl不使用该属性。 DNS缓存超时完全是推测性的,一个名称将在未来的一小段时间内解析为相同的地址。
默认值
60
协议
ALL
样例
1CURL *curl = curl_easy_init();
2if(curl) {
3 curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/foo.bin");
4
5 /* only reuse addresses for a very short time */
6 curl_easy_setopt(curl, CURLOPT_DNS_CACHE_TIMEOUT, 2L);
7
8 ret = curl_easy_perform(curl);
9
10 /* in this second request, the cache will not be used if more than
11 two seconds have passed since the previous name resolve */
12 ret = curl_easy_perform(curl);
13
14 curl_easy_cleanup(curl);
15}
可用性
Always
返回值
Returns CURLE_OK
另请参阅
CURLOPT_DNS_USE_GLOBAL_CACHE(3), CURLOPT_DNS_SERVERS(3), CURLOPT_RESOLVE(3)
原文链接:https://curl.haxx.se/libcurl/c/CURLOPT_DNS_CACHE_TIMEOUT.html