TTL (生存時間)
DNS TTL(生存時間)是 DNS 記錄中的一個值,它告訴 DNS 解析器在從權威域名伺服器請求新數據之前,應該快取查詢結果多長時間。TTL 以秒為單位,在獲取最新資訊的需求和快取的效率之間取得平衡。較長的 TTL 可以降低伺服器負載並提高性能,而較短的 TTL 則確保更改能夠更快地傳播。
How it works
當 DNS 解析器向權威域名伺服器查詢一條記錄時,它不僅會收到答案(例如 IP 地址),還會收到一個 TTL 值,指定該答案的有效期為多少秒。解析器會快取這個答案,並在 TTL 過期之前將其重複用於後續查詢。一旦過期,下一次查詢將強制解析器從權威伺服器獲取新數據。
TTL 控制著快取的 DNS 數據的生命週期:
**快取過程:**
1. **初始查詢**: 解析器向權威伺服器查詢
example.com,收到 IP 192.0.2.1,TTL 為 3600 秒(1 小時)
2. **快取**: 解析器將此結果存儲在其快取中 3600 秒
3. **快取命中**: 在接下來的一小時內,對 example.com 的任何查詢都將立即從快取中獲得答案,而無需聯繫權威伺服器
4. **過期**: 3600 秒後,快取的記錄被視為過時
5. **刷新**: 過期後的下一次查詢將強制解析器再次查詢權威伺服器,可能會收到更新的資訊
**權衡:**
**長 TTL(數小時或數天):**
- ✓ 降低權威伺服器的負載
- ✓ 更快的 DNS 解析(更多快取命中)
- ✓ 更低的網路流量
- ✗ 更改需要更長時間才能傳播
- ✗ 過時的數據會被提供更長時間
**短 TTL(數分鐘):**
- ✓ 更改快速傳播
- ✓ 資訊更加及時
- ✗ 伺服器負載更高
- ✗ 需要更多 DNS 查詢
- ✗ 解析時間略慢Key Points
- TTL 始終以秒為單位(例如,300 = 5 分鐘,86400 = 24 小時)
- 較短的 TTL 值可實現更快的 DNS 更改傳播,但會增加伺服器負載
- 較長的 TTL 值可提高性能並減少伺服器查詢,但會延遲更改傳播
- 最佳實踐是為穩定記錄設置 1-5 天(86400-432000 秒)
- 在進行計劃的 DNS 更改之前,將 TTL 降低到 5-15 分鐘(300-900 秒)
Common Use Cases
- 穩定的生產網站: 對於基礎設施很少更改的成熟網站,使用較長的 TTL 值(24-48 小時),以最大限度地減少 DNS 查詢並提高性能
- 遷移前準備: 在伺服器遷移或 DNS 更改前一天將 TTL 降低到 5-15 分鐘,以確保在進行更改時快速傳播
- 開發環境: 對於 DNS 記錄頻繁更改且需要快速傳播的測試和開發環境,使用較短的 TTL 值(5-10 分鐘)
- 負載均衡和故障轉移: 較短的 TTL 值允許在伺服器宕機或需要重定向流量時快速更新 DNS 記錄
code 常見的 TTL 值
| Type | Host / Name | Value / Points to | TTL |
|---|---|---|---|
| Value | 300 秒 | 5 分鐘 | — |
| Value | 3600 秒 | 1 小時 | — |
| Value | 86400 秒 | 24 小時 | — |
| Value | 172800 秒 | 48 小時 | — |
* TTL 值以秒為單位。根據 DNS 記錄的更改頻率以及需要更新傳播的速度來選擇。
Frequently Asked Questions
我的 DNS 記錄應該使用什麼 TTL 值?expand_more
對於大多數穩定的生產環境,推薦使用 1-5 天(86400-432000 秒)的 TTL。這可以提供良好的性能,同時允許合理的更改傳播時間。使用 24 小時(86400)作為安全的預設值。如果經常進行更改,請使用 1 小時(3600)。對於動態環境或開發環境,請使用 5-15 分鐘(300-900)。關鍵是在快速更新的需求與伺服器效率和性能之間取得平衡。
我應該將 TTL 設置為 0 以實現即時更新嗎?expand_more
不,永遠不要將 TTL 設置為 0。零或非常低的 TTL(低於 30 秒)意味著解析器必須為每個請求查詢您的權威伺服器,導致巨大的伺服器負載和較差的性能。許多 DNS 伺服器還會強制執行最小 TTL,並會忽略低於其閾值(通常為 30-60 秒)的值。相反,應該提前計劃,在進行更改之前將 TTL 降低到 5-15 分鐘,然後在之後再提高。
如何以最小的停機時間更改 DNS 記錄?expand_more
按照以下流程操作:(1) 在更改前至少 24-48 小時將 TTL 降低到 300-900 秒(5-15 分鐘),以便舊的快取記錄過期。(2) 等待舊 TTL 完全過期。(3) 進行 DNS 更改。(4) 等待新的低 TTL 過期,以便更改傳播。(5) 將 TTL 提高回正常值(例如 86400 秒)。這確保了更改快速傳播,同時在之後保持良好的性能。
為什麼我的 DNS 更改沒有立即顯示?expand_more
DNS 更改不是即時的,因為基於 TTL 的快取。如果您的記錄的 TTL 為 86400 秒(24 小時),那麼在過去 24 小時內查詢過您域名的任何人都快取了舊值。他們要到快取過期後才能看到新值 - 最多 24 小時後。此外,一些 ISP 會忽略 TTL 值,快取時間超過指定時間。這就是為什麼在進行更改之前降低 TTL 很重要 - 它減少了傳播的最長等待時間。
TTL 會影響我的網站速度嗎?expand_more
間接來說,是的。較長的 TTL 值可以提高 DNS 解析速度,因為查詢是從快取中獲得答案,而不需要往返權威伺服器。然而,差異通常只有幾毫秒。較高 TTL 的主要性能優勢是降低 DNS 伺服器的負載,而不是提高最終用戶的頁面加載速度。一旦 DNS 解析完成,實際的網站加載速度取決於您的 Web 伺服器的性能,而不是 TTL。