LibCurl-DNS超时参数解析

Posted by LB on Fri, Feb 14, 2020

一. 名称

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