更快的請求回應

付費用戶使用AdGuard私有服務, 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. 使用適合自己的黑名單規則, 避免引入過大的規則.