如何将CURLOPT_DNS_CACHE_TIMEOUT与共享DNS缓存一起使用

时间:2014-07-23 09:22:12

标签: c++ c linux curl dns

我使用自己的CURL简易句柄池在多线程应用程序中重用 - 目标是重用TCP连接和DNS查找。每次将句柄返回到池curl_easy_reset时,都会在该句柄上调用。

目前,我的实现为每个CURL简易句柄使用单独的本地DNS缓存。我正在玩CURL共享界面和共享DNS缓存,它似乎工作得很好,但我不明白设置DNS缓存超时的正确方法是什么?

DNS缓存超时在CURL easy handle上设置,但缓存是共享的。我是否需要在每次从池中获取句柄时设置超时(因为先前调用了重置)或者是否只设置了一次缓存超时并记住,直到我更改它为止?

1 个答案:

答案 0 :(得分:2)

实际存储并使用每个简易句柄的超时值。因此,每个简易句柄都有自己的超时值,即使共享DNS缓存也是如此。因此,每个简单句柄都会逐出旧条目,并根据自己的价值再次重新解析名称。

当您为一个简单的句柄设置超时值时,该超时值将“粘住”并被使用,直到您再次将其设置为其他值。 (像所有其他选项一样。)

在句柄上调用curl_easy_reset()当然会将句柄的超时值重置为其内部默认值。