TTL 的全名叫做 Time to Live,是 DNS 解析的時候在使用的,主要的作用是設定每一筆紀錄在 DNS 快取伺服器所保留的時間我們常常在設定 DNS 紀錄的時候會有一個欄位叫做 TTL,到底要設定多少呢?這個值,如果你常常在變動 DNS 紀錄的話,有多小就調多小 (要看你的代管商最小能設定多少),反之,如果你沒有常常變動,可以調大一點,單位是秒,若你設定 1800,表示 1800 秒。所以當你變更這筆 DNS 紀錄的時候,要 1800 秒後才會全球生效!
要了解 TTL,就必須先了了解整個 DNS 的運作模式,在 DNS 的角色中,有權威伺服器、DNS 快取 (Cache) 伺服器與用戶端。由用戶端發起查詢後,經由快取伺服器查詢,最後由權威伺服器回答域名的 IP 位址,快取伺服器就會回應用戶端正確的解析位址。舉例來說,當您在網址列輸入一個網址 (例如 www.gandi.net) 的時候,這時候你的瀏覽器就會根據電腦的設定,去找到 DNS 快取伺服器的位址,然後將這個 “Question: www.gandi.net” 丟給快取伺服器,快取伺服器會代替你去做 DNS 查詢。常見的快取伺服器就是中華電信 168.95.1.1 與現在很多人用的 Google 8.8.8.8、8.8.4.4,CloudFlare 的 1.1.1.1 ,TWNIC 提供的 101.101.101.101。
因為 DNS 是屬於階層式架構,所以在網域的部份其實是一個很大的分散式資料,利用網址的 “.” 來做區分,也就是說 www.gandi.net 是三層階層式架構,分別是 .(root) 層、net 層與 gandi 層 (用 . 分隔每一層),(root) 層只有一個 . 代表,平常在輸入網址時可以省略,但是其實全網址 (FQDN) 是:www.gandi.net. (最後有一個點,差別就在這邊)。每一層都各自擁有自己的資料,譬如 (root) 有者全部的國家代碼 (tw / jp / cn / kr…) 與通用頂級域名 (com / net / org / taipei…) 的權威主機資料。而 net 層有全部 *.net 的權威主機資料,透過這樣的方式達到階層式的架構。
前面我們提到當用戶端發出查詢時,會將查詢交給 DNS 快取 (Cache) 伺服器來查詢,快取伺服器就會透過階層式的方式逐一由 (root) 開始往下查到 gandi 的主機,並由權威主機回應 www.gandi.net 的正確 IP 位址。
所以當 DNS 快取伺服器拿到 151.101.121.103 這個 IP 位址的時候,會一同取得這筆資料的 TTL,假設是 3600,單位是秒,所以是 3600 秒。
在 DNS 快取回應給用戶之後,這筆 151.101.121.103 就會存留在快取伺服器存留 3600 秒,在這 3600 秒之內,若有其他人來詢問 www.gandi.net,快取伺服器會直接回應 151.101.121.103 這個 IP 位址,而不會再次執行右側的查詢。
如果說你在這 3600 秒之內,將 www.gandi.net 變更成別的 IP 位址,則會發生什麼事呢?答案就是快取伺服器依舊會回覆舊的答案,要等待 3600 秒之後,才會更新,所以 TTL 稱為 DNS 紀錄在快取伺服器的存活時間。
如果你需要時常變更 DNS 紀錄,則建議你 TTL 的時間可以設定 0 ~ 600 秒。如果是不常變更的話,則建議設定 1800 ~ 3600 秒。