2015年6月2日 星期二

DNS 快取記錄清空

引用

注意:此問題只會發生在使用 IE 瀏覽器的時候,其他版本瀏覽器無此問題。
如果只是本機的 DNS 快取問題,我們可以透過以下指令就能將快取住的 DNS 清空:
ipconfig /flushdns
指令執行完後,本機的 DNS 快取記錄就會被清空,這時任何應用程式要查詢 DNS 時就會重新向本機網路設定指定的 Name Server 進行查詢。不過,一個鮮為人知的秘密就是 IE 其實自己還內建一個 DNS 快取機制,所以就算你將本機系統的 DNS 快取清除,其實在 IE 內還有一份快取,而這份快取幾乎是無法透過任何指令操作的,此問題困擾我多年,直到最近透過微軟技術支援中心的協助才得以解決。
為了解決在開發時期 IE 會對所有 DNS 快取的問題,必須新增三個特殊的機碼值如下:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"DnsCacheEnabled"=dword:00000000
"DnsCacheTimeout"=dword:00000000
"ServerInfoTimeOut"=dword:00000000
另外我再提供透過 reg.exe 設定的指令如下:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "DnsCacheEnabled" /t REG_DWORD /d 0 /f 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "DnsCacheTimeout" /t REG_DWORD /d 0 /f 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ServerInfoTimeOut" /t REG_DWORD /d 0 /f
如果你想要回覆預設值,只要將這三個機碼移除即可:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"DnsCacheEnabled"=-
"DnsCacheTimeout"=-
"ServerInfoTimeOut"=-
以下是透過 reg.exe 指令的語法:
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "DnsCacheEnabled" /f 
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "DnsCacheTimeout" /f 
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ServerInfoTimeOut" /f
這三個機碼 ( DnsCacheEnabled, DnsCacheTimeout, ServerInfoTimeOut ) 你用 regedit 是找不到的,所以必須手動新增這三個機碼才行,加入後設定立即生效,且 IE 也就不會再對任何 DNS 進行快取了。

沒有留言:

張貼留言