I asked this question on Stack Overflow several months ago and didn't get any useful answers. Perhaps somebody here has better info.
Note that I'm talking about the client DNS resolver cache. This message is not concerned with the Windows DNS Server.
I have a C# program that does a lot of DNS resolutions. Because the
HTTPWebRequest component won't let me change the Host header, I can't create my own internal DNS cache. So I have to depend on the Windows DNS cache, which doesn't appear amenable to change.
There's a reasonably good TechNet article about the DNS cache Registry settings in Windows Server 2003, but I haven't been able to prove that setting them does anything in XP, Server 2003, Vista, or Server 2008. All the other pages I found through a Google search either reference that page or paraphrase it, sometimes incorrectly.
ipconfig command has a
/displaydns switch that will output the contents of the cache. To my knowledge, that's the only way to determine the size of the DNS cache. In my experiments on a 32 bit Windows XP box with 2 GB of memory, no matter what I set the DNS cache registry values to, I always end up with between 30 and 40 items in the cache--even after doing thousands of DNS resolutions. On my 64-bit Windows 2008 machine with 16 GB of memory, I always get between 270 and 300 items in the cache.
I'm stumped. I don't know what the answer is, but I figure one of the following is the case:
- It's not possible to change the size of the DNS resolver cache.
- It is possible, but the documentation is wrong.
- The documentation is correct as far as it goes, but it’s incomplete.
- The documentation is correct and complete, but I’m too dumb to make sense of it.
- The documented registry entries actually changed the size of the cache, but
ipconfigisn’t showing me all the entries that are in the cache.
Can anybody tell me if it's possible to configure the size of the DNS resolver cache in Windows XP, Vista, or Server 2008?