CURLOPT_DNS_CACHE_TIMEOUT.3 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. .\" **************************************************************************
  2. .\" * _ _ ____ _
  3. .\" * Project ___| | | | _ \| |
  4. .\" * / __| | | | |_) | |
  5. .\" * | (__| |_| | _ <| |___
  6. .\" * \___|\___/|_| \_\_____|
  7. .\" *
  8. .\" * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
  9. .\" *
  10. .\" * This software is licensed as described in the file COPYING, which
  11. .\" * you should have received as part of this distribution. The terms
  12. .\" * are also available at https://curl.se/docs/copyright.html.
  13. .\" *
  14. .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15. .\" * copies of the Software, and permit persons to whom the Software is
  16. .\" * furnished to do so, under the terms of the COPYING file.
  17. .\" *
  18. .\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19. .\" * KIND, either express or implied.
  20. .\" *
  21. .\" * SPDX-License-Identifier: curl
  22. .\" *
  23. .\" **************************************************************************
  24. .\"
  25. .TH CURLOPT_DNS_CACHE_TIMEOUT 3 "17 Jun 2014" libcurl libcurl
  26. .SH NAME
  27. CURLOPT_DNS_CACHE_TIMEOUT \- life-time for DNS cache entries
  28. .SH SYNOPSIS
  29. .nf
  30. #include <curl/curl.h>
  31. CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_CACHE_TIMEOUT, long age);
  32. .fi
  33. .SH DESCRIPTION
  34. Pass a long, this sets the timeout in seconds. Name resolves will be kept in
  35. memory and used for this number of seconds. Set to zero to completely disable
  36. caching, or set to -1 to make the cached entries remain forever. By default,
  37. libcurl caches this info for 60 seconds.
  38. We recommend users not to tamper with this option unless strictly necessary.
  39. If you do, be careful of using large values that can make the cache size grow
  40. significantly if many different host names are used within that timeout
  41. period.
  42. The name resolve functions of various libc implementations do not re-read name
  43. server information unless explicitly told so (for example, by calling
  44. \fIres_init(3)\fP). This may cause libcurl to keep using the older server even
  45. if DHCP has updated the server info, and this may look like a DNS cache issue
  46. to the casual libcurl-app user.
  47. DNS entries have a "TTL" property but libcurl does not use that. This DNS
  48. cache timeout is entirely speculative that a name will resolve to the same
  49. address for a certain small amount of time into the future.
  50. Since version 8.1.0, libcurl prunes entries from the DNS cache if it exceeds
  51. 30,000 entries no matter which timeout value is used.
  52. .SH DEFAULT
  53. 60
  54. .SH PROTOCOLS
  55. All
  56. .SH EXAMPLE
  57. .nf
  58. CURL *curl = curl_easy_init();
  59. if(curl) {
  60. curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
  61. /* only reuse addresses for a short time */
  62. curl_easy_setopt(curl, CURLOPT_DNS_CACHE_TIMEOUT, 2L);
  63. ret = curl_easy_perform(curl);
  64. /* in this second request, the cache will not be used if more than
  65. two seconds have passed since the previous name resolve */
  66. ret = curl_easy_perform(curl);
  67. curl_easy_cleanup(curl);
  68. }
  69. .fi
  70. .SH AVAILABILITY
  71. Always
  72. .SH RETURN VALUE
  73. Returns CURLE_OK
  74. .SH "SEE ALSO"
  75. .BR CURLOPT_DNS_USE_GLOBAL_CACHE "(3), " CURLOPT_DNS_SERVERS "(3), "
  76. .BR CURLOPT_RESOLVE "(3), "