fix: egress cache TTL independent from fetcher cache (24h default)
Egress probe results (IP/country/region/city/isp) were cached using the fetcher's cache_ttl (300s / 5min). After 5 minutes the cache expired and the node list showed empty Egress IP/Country/Region fields again. Add a dedicated egress_cache_ttl config (default 24h) so egress data persists long enough to be useful when re-expanding the node list.
This commit is contained in:
@@ -47,6 +47,7 @@ type FetcherConfig struct {
|
||||
MaxResponseBytes int `mapstructure:"max_response_bytes"`
|
||||
MaxTotalBytes int `mapstructure:"max_total_bytes"`
|
||||
ProxyURL string `mapstructure:"proxy_url"`
|
||||
EgressCacheTTL time.Duration `mapstructure:"egress_cache_ttl"`
|
||||
}
|
||||
|
||||
type RecycleConfig struct {
|
||||
@@ -80,6 +81,7 @@ func defaults() {
|
||||
viper.SetDefault("fetcher.max_response_bytes", 2*1024*1024)
|
||||
viper.SetDefault("fetcher.max_total_bytes", 12*1024*1024)
|
||||
viper.SetDefault("fetcher.proxy_url", "")
|
||||
viper.SetDefault("fetcher.egress_cache_ttl", 24*time.Hour)
|
||||
viper.SetDefault("recycle.max_entries", 50)
|
||||
viper.SetDefault("app.name", "Sub-Store")
|
||||
viper.SetDefault("app.version", "1.0.0")
|
||||
|
||||
@@ -66,9 +66,9 @@ func (d *Deps) HandleEgressInfo(c fiber.Ctx) error {
|
||||
}
|
||||
info["cached"] = false
|
||||
if data, err := json.Marshal(info); err == nil {
|
||||
ttl := int(d.Cfg.Fetcher.CacheTTL.Seconds())
|
||||
ttl := int(d.Cfg.Fetcher.EgressCacheTTL.Seconds())
|
||||
if ttl <= 0 {
|
||||
ttl = 300
|
||||
ttl = 86400 // 24h default
|
||||
}
|
||||
d.CacheRepo.SafePut(cacheKey, string(data), nil, ttl)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user