chore: refine config error messages and adjust internal config structures

This commit is contained in:
ExplodingDragon
2026-01-31 23:50:32 +08:00
parent 662370e018
commit b580741a4e
7 changed files with 72 additions and 40 deletions

View File

@@ -41,15 +41,16 @@ type Server struct {
}
type serverConfig struct {
client *http.Client
event subscribe.Subscriber
cacheMeta kv.KV
cacheMetaTTL time.Duration
cacheMetaRefresh time.Duration
cacheBlob cache.Cache
cacheBlobTTL time.Duration
errorHandler func(w http.ResponseWriter, r *http.Request, err error)
filterConfig map[string]map[string]any
client *http.Client
event subscribe.Subscriber
cacheMeta kv.KV
cacheMetaTTL time.Duration
cacheMetaRefresh time.Duration
cacheMetaRefreshConcurrent int
cacheBlob cache.Cache
cacheBlobTTL time.Duration
errorHandler func(w http.ResponseWriter, r *http.Request, err error)
filterConfig map[string]map[string]any
}
type ServerOption func(*serverConfig)
@@ -66,11 +67,12 @@ func WithEvent(event subscribe.Subscriber) ServerOption {
}
}
func WithMetaCache(cache kv.KV, ttl time.Duration, refresh time.Duration) ServerOption {
func WithMetaCache(cache kv.KV, ttl time.Duration, refresh time.Duration, refreshConcurrent int) ServerOption {
return func(c *serverConfig) {
c.cacheMeta = cache
c.cacheMetaTTL = ttl
c.cacheMetaRefresh = refresh
c.cacheMetaRefreshConcurrent = refreshConcurrent
}
}
@@ -123,6 +125,10 @@ func NewPageServer(
cfg.cacheMetaRefresh = cfg.cacheMetaTTL / 2
}
if cfg.cacheMetaRefreshConcurrent == 0 {
cfg.cacheMetaRefreshConcurrent = 16
}
if cfg.cacheBlob == nil {
var err error
cfg.cacheBlob, err = cache.NewMemoryCache(cache.MemoryCacheConfig{
@@ -141,7 +147,7 @@ func NewPageServer(
}
alias := core.NewDomainAlias(db.Child("config", "alias"))
svcMeta := core.NewServerMeta(cfg.client, backend, domain, alias, cfg.cacheMeta, cfg.cacheMetaTTL, cfg.cacheMetaRefresh)
svcMeta := core.NewServerMeta(cfg.client, backend, domain, alias, cfg.cacheMeta, cfg.cacheMetaTTL, cfg.cacheMetaRefresh, cfg.cacheMetaRefreshConcurrent)
pageMeta := core.NewPageDomain(svcMeta, domain)
globCache, err := lru.New[string, glob.Glob](512)
if err != nil {