DNS 快取

DNS 快取是一種通過在設定時間內儲存先前檢索的 DNS 查詢結果來提高域名解析速度和效率的機制。當 DNS 記錄被快取後,對同一域名的後續請求可以立即解析,無需查詢權威 DNS 伺服器,從而實現更快的加載時間並減少網路流量。

How it works

當用戶首次訪問網站時,他們的計算機或 DNS 解析器必須從權威 DNS 伺服器檢索 IP 地址。一旦解析完成,結果將與其生存時間(TTL)值一起儲存在快取中。如果在 TTL 過期之前再次請求同一域名,解析器可以立即從快取中提供答案,而無需查詢其他伺服器。

DNS 快取發生在多個層級,形成了優化性能的分層結構: **瀏覽器級快取**:現代網頁瀏覽器維護自己的 DNS 快取,使其能夠快速解析域名,而無需查詢操作系統或外部 DNS 伺服器。 **操作系統(OS)級快取**:操作系統維護 DNS 快取,如果瀏覽器快取中沒有所需的 DNS 記錄,它將作為下一層解析。 **路由器級快取**:網路路由器可以快取 DNS 查詢,使其能夠為網路上所有連接的設備本地提供 DNS 查詢服務。 **DNS 解析器快取**:遞迴 DNS 解析器(通常由 ISP 或第三方提供商如 Google DNS 或 Cloudflare 運營)維護大型快取,為其整個用戶群提供服務,顯著減少重複查詢權威 DNS 伺服器的需求。 每個快取記錄都包含一個生存時間(TTL)值,該值決定了 DNS 記錄在過期並必須刷新之前應儲存多長時間。TTL 以秒為單位。例如,如果 DNS 記錄的 TTL 為 3600 秒(1 小時),任何快取該記錄的 DNS 解析器都只會在該持續時間內儲存它。

Key Points

  • DNS 快取發生在多個層級:瀏覽器、操作系統、路由器和 DNS 解析器
  • 每個快取記錄都有一個 TTL(生存時間)值,決定其有效期
  • 短 TTL 值(30-300 秒)允許快速更改,但會增加伺服器負載
  • 長 TTL 值(數小時或數天)可減少伺服器負載並提高穩定域名的性能
  • 快取記錄在 TTL 過期時會自動丟棄並刷新

Common Use Cases

  • 性能優化: 快取大幅減少了頻繁訪問網站的 DNS 查找時間,將頁面加載速度從幾秒提升到幾毫秒
  • 網路負載減少: 通過從快取中提供查詢,DNS 解析器減少了權威名稱伺服器的負載並降低了整體網路流量
  • 高流量網站: 具有穩定基礎設施的熱門網站受益於高 TTL 值(24 小時或更長),每天可減少數十億次冗餘 DNS 查詢
  • DNS 遷移管理: 管理員在計劃的 DNS 更改(如伺服器遷移)之前降低 TTL 值,以確保新記錄快速傳播

code DNS 快取生命週期示例

TypeHost / NameValue / Points toTTL
Query初始請求example.com
Cache解析器快取192.0.2.13600
Query第二次請求(30 分鐘後)example.com1800
Query第三次請求(65 分鐘後)example.com

* 此示例展示了具有 1 小時 TTL 的 DNS 記錄如何在不同層級被快取和刷新。

Frequently Asked Questions

DNS 快取和瀏覽器快取有什麼區別?expand_more
DNS 快取專門儲存域名的 IP 地址映射,而瀏覽器快取儲存網站內容,如圖像、CSS 和 JavaScript 文件。DNS 快取在網路層級運行,由 DNS 解析器和操作系統維護,而瀏覽器快取是應用層級的,由您的網頁瀏覽器管理。兩者都能提高性能,但它們快取的數據類型完全不同。
如何清除我的 DNS 快取?expand_more
方法因操作系統而異。在 Windows 上,在命令提示符中運行 ipconfig /flushdns。在 macOS 上,在終端中使用 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。在 Linux 上,命令取決於您的 DNS 服務(例如 sudo systemd-resolve --flush-caches)。瀏覽器還維護單獨的 DNS 快取,可能需要清除瀏覽器數據。
DNS 記錄的理想 TTL 值是多少?expand_more
這取決於您的用例。對於很少更改的穩定生產域名,通常使用 24-48 小時(86400-172800 秒)的 TTL,這可以減少伺服器負載。對於頻繁更改或遷移的域名,使用 5-30 分鐘(300-1800 秒)的較短 TTL。一般規則是,使用不會干擾您運營需求的最長 TTL。在計劃的 DNS 更改之前,提前一兩天暫時降低您的 TTL。
DNS 快取會導致問題嗎?expand_more
是的,當 DNS 記錄更改時,DNS 快取可能會導致問題。如果您更新了 DNS 記錄,但客戶端仍然快取了舊值,他們將繼續使用過時的信息,直到 TTL 過期。這就是為什麼建議在進行更改之前降低 TTL 值。此外,一些 ISP 會忽略 TTL 值,快取記錄的時間比指定的時間更長,這可能會延遲傳播。
DNS 快取能提高安全性嗎?expand_more
DNS 快取本身主要是一個性能功能,而不是安全功能。然而,它可以通過減少某些基於 DNS 的攻擊的暴露來間接提高安全性。當記錄從快取中提供時,網路路徑上的 DNS 欺騙機會就會減少。話雖如此,如果快取被投毒,快取記錄也可能傳播不正確或惡意的 DNS 數據。為了安全起見,請結合快取使用 DNSSEC。