
改了 DNS 要多久才生效?TTL 與快取完整說明
簡短的答案
一般數分鐘到數小時,多數情況一小時內完成,最長可能需要 24 到 48 小時。實際時間取決於三件事:您設定的 TTL 值、各地解析器的快取狀態,以及您自己電腦與瀏覽器的快取。
「改了設定但網站還是舊的」幾乎都不是設定失敗,而是快取還沒過期。以下說明機制與加速方法。
TTL 是什麼
TTL(Time To Live)是每一筆 DNS 記錄附帶的數值,單位是秒,意思是「這個答案可以被快取多久」。
| TTL 值 | 換算 | 適合情況 |
|---|---|---|
| 300 | 5 分鐘 | 即將要變更設定的期間 |
| 3600 | 1 小時 | 常見的預設值,日常使用 |
| 14400 | 4 小時 | 設定穩定、不常變動 |
| 86400 | 24 小時 | 幾乎不會變動的記錄 |
當某個解析器來查詢,取得答案後就會照 TTL 記住這段時間。在快取到期前,它不會再來問,所以您改了也沒用。
取捨
- TTL 短——變更生效快,但查詢次數多,理論上多耗費一點解析時間
- TTL 長——效率好,但要變更時得等很久
日常維持 3600 是合理的,這一點的實際效能差異對一般企業網站可以忽略。
正確的變更節奏
這是專業做法與臨時抱佛腳的分界:
- 預計變更的一到兩天前,先把該筆記錄的 TTL 調低到 300
- 等待原本的 TTL 時間過去,確保各地快取都已換成新的短 TTL
- 正式變更記錄內容——此時擴散只需要幾分鐘
- 確認一切正常後,把 TTL 調回 3600
換句話說,擴散時間長短是可以事先控制的。臨時要切換卻發現 TTL 是 86400,那就只能等一天,這是規劃問題不是技術問題。
為什麼有人看得到、有人看不到
因為每個解析器的快取到期時間各自獨立。中華電信的解析器可能十分鐘前才查過,遠傳的可能一小時前查過,兩邊到期時間不同,就會出現同一時間不同人看到不同版本。
這在切換期間是正常且無法避免的現象。若切換的是網站主機,切換期間新舊主機都還開著,使用者不論被導到哪一邊都能看到網站,這也是為什麼換主機時新舊主機要並存一段時間。
怎麼確認實際生效狀況
先排除自己電腦的快取
最常見的情況是:全世界都好了,只有您自己還看到舊的。依序處理:
- 清除瀏覽器快取,或用無痕視窗測試
- 清除作業系統的 DNS 快取——Windows 在命令提示字元執行
ipconfig /flushdns;macOS 需執行對應的清除指令 - 檢查 hosts 檔——如果之前為了測試而在 hosts 檔指定過這個網域,它的優先權高於一切,會蓋掉正常的 DNS 查詢結果。這是測試期間最容易忘記還原的設定
- 換一個網路測試——用手機行動網路開一次,最快排除本機問題
用工具查詢實際回傳值
Windows 可用 nslookup 網域名稱,Linux 與 macOS 可用 dig 網域名稱。若要指定用某個解析器查詢,可在指令後方加上該解析器位址,藉此比對不同解析器目前拿到的答案是否一致。
另外也有線上的多地點 DNS 查詢服務,可以一次看到世界各地的解析結果,適合用來確認擴散進度。
常見誤解
「重新整理頁面就會更新」
不會。瀏覽器重新整理的是網頁內容,不是 DNS 查詢結果。要清的是 DNS 快取。
「重開機就好了」
重開機會清掉本機快取,對自己有效,但對其他人沒有幫助。
「一定要等 48 小時」
48 小時是最保守的上限值,源自早年 TTL 普遍設得很長的時代。現在多數情況遠快於此,如果事前降過 TTL,通常十分鐘內就完成。
「改了但完全沒動靜,一定是還在擴散」
如果超過原 TTL 兩倍的時間仍毫無變化,比較可能是改錯地方了——例如 NS 早已指向主機商,您卻在註冊商後台修改。請先確認網域的 NS 指向哪裡,那裡才是實際生效的管理位置。