更快的請求回應

更快的請求回應:合理設置緩存 TTL、上游模式與區域選擇,降低首包時延與重試率,顯著提升主觀速度。

付費用戶使用AdGuard私有服務,DNS請求路徑如下:

DNS請求路徑

根據路徑可以分析最快回應方案。

本地緩存命中

最快的回應是本地緩存命中,由於本地緩存是記憶體級別的,因此速度非常快,只需要幾微秒。

這由DNS回應的TTL(time to live)值控制,通常是幾分鐘到幾小時,表示查詢結果在這段時間內有效,不需要再次查詢。

您可以在控制面板 -> 設定 -> DNS 設定 -> DNS 緩存配置 -> 覆蓋最小 TTL 值中設置最小TTL值,增大該值以延長緩存時間,使得系統更多的使用本地緩存,通常的TTL值是600秒。

但是,由於本站同時有過濾能力,如果您需要的服務被廣告規則誤攔截,那麼即使您暫時關閉了加密DNS,也無法立刻訪問到您需要的服務,因為本地緩存的結果是被過濾規則修改過的。因此,設置為60秒是一個比較安全的值,保證少數情況下用戶不會因為誤攔截,在關閉加密DNS後等待過長時間。

AdGuard DNS伺服器

本站目前使用位於杭州的阿里雲伺服器,可以滿足絕大部分東部地區用戶的低延遲需求,隨著業務增長,未來會在全國範圍內增加伺服器。

伺服器緩存命中

默認為每個用戶設置了4MB的DNS緩存,根據經驗,這已經足夠一個家庭的使用。該設置的自由修改可能導致用戶服務被強制中止,本站已屏蔽了該設置的修改入口。

上游DNS伺服器

由於使用的阿里雲服務,上游DNS服務也選用了阿里雲的DNS服務,速度非常快,通常在幾毫秒內返回結果。

用戶會有三個請求上游DNS伺服器的方式:

  1. 負載均衡:本站默認使用了負載均衡,會自動選擇最快的伺服器返回結果。
  2. 並行請求:本站暫時不會限制並行請求的使用。
  3. 最快的IP地址:當前沒有意義的設置,本站已屏蔽了該設置的修改入口。

說明一下為什麼最快的IP地址沒有意義,最快IP需要由真正訪問服務的設備本身來選擇。當AdGuard服務運行在杭州,而用戶在北京,AdGuard會認為杭州的IP地址最快,但是實際上用戶訪問北京的服務速度最快,選擇杭州的IP地址反而會增加延遲。因此,本站已屏蔽了該設置的修改入口。此設置在用戶的家庭網絡中可能有用,但是在公共服務中沒有意義。

影響網絡體驗的因素有很多,例如服務端頻寬、網絡擁塞、伺服器負載、網絡質量等,選擇最快的IP地址並不能保證最快的回應速度,延遲只是其中的一個因素,不是唯一的因素。為避免用戶設置錯誤導致服務質量下降,本站已屏蔽了該設置的修改入口。

規則過濾

最常用的模式是黑名單列表,用戶可以從預置的黑名單列表中選擇。黑名單的命中使用hash算法,無論規則量多少,命中時間都是O(1),用戶不必擔心規則量過大導致命中時間過長。

但是,規則計算後存儲在記憶體,每個用戶的服務記憶體使用限制在300MB以內,這可以滿足絕大部分用戶的需求,如果用戶的規則量過大,可能會導致記憶體不足,服務被反覆重啟,造成服務中斷。

本站暫時屏蔽了第三方規則的使用,以避免用戶引入過大的規則。未來有更好的限制手段後,會重新開放第三方規則的使用。

總結

希望獲得更快的請求回應,用戶可以:

  1. 適當增大最小TTL值,增大本地緩存命中率。
  2. 設置合適的DNS緩存大小(已預設值)。
  3. 選擇地理位置最接近的城市創建服務(待企業發展)。
  4. 無出海需求,選擇負載均衡;有出海需求,選擇並行請求。
  5. 使用合適自己的黑名單規則,避免引入過大的規則。