DNS - BunDocumentation Index Search...⌘KInstall Bun Search...Navigation Networking DNSRuntimePackage ManagerBundlerTest RunnerGuidesReferenceBlogFeedback:first-child]:!hidden peer-[.is-custom]:[&>:first-child]:sm:!hidden peer-[.is-custom]:[&>:first-child]:md:!hidden peer-[.is-custom]:[&>:first-child]:lg:!hidden peer-[.is-custom]:[&>:first-child]:xl:!hidden">Get StartedWelcome to BunInstallationQuickstartTypeScriptTypeScript 6 and 7bun initbun createCore RuntimeBun RuntimeWatch ModeDebuggingREPLbunfig.tomlFile & Module SystemFile TypesModule ResolutionJSXAuto-installPluginsFile System RouterHTTP serverServerRoutingCookiesTLSError HandlingMetricsNetworkingFetchWebSocketsTCPUDPDNSData & StorageCookiesFile I/OStreamsBinary DataArchiveSQLSQLiteS3RedisConcurrencyWorkersProcess & SystemEnvironment VariablesShellSpawnWebViewCronInterop & ToolingNode-APIFFIC CompilerTranspilerUtilitiesCSRF ProtectionSecretsConsoleTOMLYAMLMarkdownJSON5JSONLHTMLRewriterImageHashingGlobSemverColorUtilsStandards & CompatibilityGlobalsBun APIsWeb APIsNode.js CompatibilityContributingRoadmapBenchmarkingContributingBuilding WindowsBindgenLicense On this pageDNS caching in BunWhen should I prefetch a DNS entry?dns.prefetchdns.getCacheStats()Configuring DNS cache TTLWhy is 30 seconds the default?NetworkingDNS Copy pagespan]:line-clamp-1 overflow-hidden group flex items-center py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border px-3 border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5" aria-label="More actions" type="button" id="radix-_R_n4ctdbsnlht5lebsnpfdb_" aria-haspopup="menu" aria-expanded="false" data-state="closed"> *]:[overflow-wrap:anywhere]"> Copy pagespan]:line-clamp-1 overflow-hidden group flex items-center py-0.5 gap-1 text-sm text-gray-950/50 dark:text-white/50 group-hover:text-gray-950/70 dark:group-hover:text-white/70 rounded-none rounded-r-xl border px-3 border-gray-200 aspect-square dark:border-white/[0.07] bg-background-light dark:bg-background-dark hover:bg-gray-600/5 dark:hover:bg-gray-200/5" aria-label="More actions" type="button" id="radix-_R_1cctdbsnlht5lebsnpfdb_" aria-haspopup="menu" aria-expanded="false" data-state="closed"> Bun implements it’s own dns module, and the node:dns module.
This API is experimental and may change in the future.
To prefetch a DNS entry, you can use the dns.prefetch API. This API is useful when you know you’ll need to connect to a host soon and want to avoid the initial DNS lookup.
This API is experimental and may change in the future.
To get the current cache stats, you can use the dns.getCacheStats API. This API returns an object with the following properties:
Yes NoSuggest editsRaise issueUDPPreviousCookiesNext⌘I xgithubdiscordyoutubePowered byThis documentation is built and hosted on Mintlify, a developer documentation platform
Fetch the complete documentation index at: /docs/llms.txt
Use this file to discover all available pages before exploring further.
Skip to main contentBun home pageUse Bun’s DNS module to resolve DNS records
import * as dns from "node:dns";
const addrs = await dns.promises.resolve4("bun.com", { ttl: true });
console.log(addrs);
// => [{ address: "172.67.161.226", family: 4, ttl: 0 }, ...]
import { dns } from "bun";
dns.prefetch("bun.com", 443);
DNS caching in Bun
Bun supports DNS caching. This cache makes repeated connections to the same hosts faster.
At the time of writing, we cache up to 255 entries for a maximum of 30 seconds (each). If any connections to a host fail, we remove the entry from the cache. When multiple connections are made to the same host simultaneously, DNS lookups are deduplicated to avoid making multiple requests for the same host.
This cache is automatically used by:
bun install
fetch()
node:http (client)
Bun.connect
node:net
node:tls
When should I prefetch a DNS entry?
Web browsers expose to allow developers to prefetch DNS entries. This is useful when you know you’ll need to connect to a host in the near future and want to avoid the initial DNS lookup.
In Bun, you can use the dns.prefetch API to achieve the same effect.
import { dns } from "bun";
dns.prefetch("my.database-host.com", 5432);
An example where you might want to use this is a database driver. When your application first starts up, you can prefetch the DNS entry for the database host so that by the time it finishes loading everything, the DNS query to resolve the database host may already be completed.
dns.prefetch
dns.prefetch(hostname: string, port: number): void;Here’s an example:
import { dns } from "bun";
dns.prefetch("bun.com", 443);
http://
// ... sometime later ...
await fetch("https://bun.com");
dns.getCacheStats()
{
cacheHitsCompleted: number; // Cache hits completed
cacheHitsInflight: number; // Cache hits in flight
cacheMisses: number; // Cache misses
size: number; // Number of items in the DNS cache
errors: number; // Number of times a connection failed
totalCount: number; // Number of times a connection was requested at all (including cache hits and misses)
}
Example:
import { dns } from "bun";
const stats = dns.getCacheStats();
console.log(stats);
// => { cacheHitsCompleted: 0, cacheHitsInflight: 0, cacheMisses: 0, size: 0, errors: 0, totalCount: 0 }
Configuring DNS cache TTL
Bun defaults to 30 seconds for the TTL of DNS cache entries. To change this, you can set the environment variable $BUN_CONFIG_DNS_TIME_TO_LIVE_SECONDS. For example, to set the TTL to 5 seconds:
BUN_CONFIG_DNS_TIME_TO_LIVE_SECONDS=5 bun run my-script.tsWhy is 30 seconds the default? Unfortunately, the system API underneath (getaddrinfo) does not provide a way to get the TTL of a DNS entry. This means we have to pick a number arbitrarily. We chose 30 seconds because it’s long enough to see the benefits of caching, and short enough to be unlikely to cause issues if a DNS entry changes. Amazon Web Services recommends 5 seconds for the Java Virtual Machine, however the JVM defaults to cache indefinitely.
Was this page helpful?
DNS - Bun,AI智能索引,全网链接索引,智能导航,网页索引
- Use Bun