Browse Source

Add `dns.cache_capacity`

世界 11 months ago
parent
commit
effcf39469
4 changed files with 38 additions and 1 deletions
  1. 18 0
      docs/configuration/dns/index.md
  2. 18 1
      docs/configuration/dns/index.zh.md
  3. 1 0
      option/dns.go
  4. 1 0
      route/router.go

+ 18 - 0
docs/configuration/dns/index.md

@@ -1,3 +1,12 @@
+---
+icon: material/new
+---
+
+
+!!! quote "Changes in sing-box 1.11.0"
+
+    :material-plus: [cache_capacity](#cache_capacity)
+
 !!! quote "Changes in sing-box 1.9.0"
 !!! quote "Changes in sing-box 1.9.0"
 
 
     :material-plus: [client_subnet](#client_subnet)
     :material-plus: [client_subnet](#client_subnet)
@@ -16,6 +25,7 @@
     "disable_cache": false,
     "disable_cache": false,
     "disable_expire": false,
     "disable_expire": false,
     "independent_cache": false,
     "independent_cache": false,
+    "cache_capacity": 0,
     "reverse_mapping": false,
     "reverse_mapping": false,
     "client_subnet": "",
     "client_subnet": "",
     "fakeip": {}
     "fakeip": {}
@@ -58,6 +68,14 @@ Disable dns cache expire.
 
 
 Make each DNS server's cache independent for special purposes. If enabled, will slightly degrade performance.
 Make each DNS server's cache independent for special purposes. If enabled, will slightly degrade performance.
 
 
+#### cache_capacity
+
+!!! quote "Since sing-box 1.11.0"
+
+LRU cache capacity.
+
+Value less than 1024 will be ignored.
+
 #### reverse_mapping
 #### reverse_mapping
 
 
 Stores a reverse mapping of IP addresses after responding to a DNS query in order to provide domain names when routing.
 Stores a reverse mapping of IP addresses after responding to a DNS query in order to provide domain names when routing.

+ 18 - 1
docs/configuration/dns/index.zh.md

@@ -1,4 +1,12 @@
-!!! quote "sing-box 1.9.0 中的更改"
+---
+icon: material/new
+---
+
+!!! quote "自 sing-box 1.11.0 起"
+
+    :material-plus: [cache_capacity](#cache_capacity)
+
+!!! quote "自 sing-box 1.9.0 起"
 
 
     :material-plus: [client_subnet](#client_subnet)
     :material-plus: [client_subnet](#client_subnet)
 
 
@@ -16,6 +24,7 @@
     "disable_cache": false,
     "disable_cache": false,
     "disable_expire": false,
     "disable_expire": false,
     "independent_cache": false,
     "independent_cache": false,
+    "cache_capacity": 0,
     "reverse_mapping": false,
     "reverse_mapping": false,
     "client_subnet": "",
     "client_subnet": "",
     "fakeip": {}
     "fakeip": {}
@@ -57,6 +66,14 @@
 
 
 使每个 DNS 服务器的缓存独立,以满足特殊目的。如果启用,将轻微降低性能。
 使每个 DNS 服务器的缓存独立,以满足特殊目的。如果启用,将轻微降低性能。
 
 
+#### cache_capacity
+
+!!! quote "自 sing-box 1.11.0 起"
+
+LRU 缓存容量。
+
+小于 1024 的值将被忽略。
+
 #### reverse_mapping
 #### reverse_mapping
 
 
 在响应 DNS 查询后存储 IP 地址的反向映射以为路由目的提供域名。
 在响应 DNS 查询后存储 IP 地址的反向映射以为路由目的提供域名。

+ 1 - 0
option/dns.go

@@ -31,6 +31,7 @@ type DNSClientOptions struct {
 	DisableCache     bool                  `json:"disable_cache,omitempty"`
 	DisableCache     bool                  `json:"disable_cache,omitempty"`
 	DisableExpire    bool                  `json:"disable_expire,omitempty"`
 	DisableExpire    bool                  `json:"disable_expire,omitempty"`
 	IndependentCache bool                  `json:"independent_cache,omitempty"`
 	IndependentCache bool                  `json:"independent_cache,omitempty"`
+	CacheCapacity    uint32                `json:"cache_capacity,omitempty"`
 	ClientSubnet     *badoption.Prefixable `json:"client_subnet,omitempty"`
 	ClientSubnet     *badoption.Prefixable `json:"client_subnet,omitempty"`
 }
 }
 
 

+ 1 - 0
route/router.go

@@ -96,6 +96,7 @@ func NewRouter(ctx context.Context, logFactory log.Factory, options option.Route
 		DisableCache:     dnsOptions.DNSClientOptions.DisableCache,
 		DisableCache:     dnsOptions.DNSClientOptions.DisableCache,
 		DisableExpire:    dnsOptions.DNSClientOptions.DisableExpire,
 		DisableExpire:    dnsOptions.DNSClientOptions.DisableExpire,
 		IndependentCache: dnsOptions.DNSClientOptions.IndependentCache,
 		IndependentCache: dnsOptions.DNSClientOptions.IndependentCache,
+		CacheCapacity:    dnsOptions.DNSClientOptions.CacheCapacity,
 		RDRC: func() dns.RDRCStore {
 		RDRC: func() dns.RDRCStore {
 			cacheFile := service.FromContext[adapter.CacheFile](ctx)
 			cacheFile := service.FromContext[adapter.CacheFile](ctx)
 			if cacheFile == nil {
 			if cacheFile == nil {