perf(storage): add config caching and shared HTTP connection pool

- Implement thread-safe local config caching with a 5s TTL check.
- Reuse backend client singletons in storage.Active and storage.ForDriver.
- Reset in-memory config cache on configuration saves and updates.
- Create internal/httppool package to manage shared HTTP transports.
- Configure WebDAV client and CDN retrieval to reuse the shared pool.
- Add unit tests for httppool and storage caching behaviors.
This commit is contained in:
ryan
2026-06-13 15:15:59 +08:00
parent 9a18bea324
commit bc18800b58
8 changed files with 295 additions and 8 deletions
+4 -1
View File
@@ -10,6 +10,7 @@ import (
"path"
"strings"
"github.com/Rain-kl/Wavelet/internal/httppool"
"github.com/studio-b12/gowebdav"
)
@@ -19,8 +20,10 @@ type webDAVBackend struct {
}
func newWebDAVBackend(cfg WebDAVConfig) (*webDAVBackend, error) {
client := gowebdav.NewClient(strings.TrimRight(cfg.Endpoint, "/"), cfg.Username, cfg.Password)
client.SetTransport(httppool.DefaultTransport())
return &webDAVBackend{
client: gowebdav.NewClient(strings.TrimRight(cfg.Endpoint, "/"), cfg.Username, cfg.Password),
client: client,
basePath: strings.Trim(cfg.BasePath, "/"),
}, nil
}