feat(images): cache lifetime in config
/ publish (push) Successful in 3m43s

This commit is contained in:
2026-03-19 22:10:20 +01:00
parent b384c70c39
commit ee3eba3cd9
4 changed files with 12 additions and 7 deletions
+1 -2
View File
@@ -13,7 +13,6 @@ import (
_ "image/png"
"io"
"strings"
"time"
_ "golang.org/x/image/webp"
@@ -98,7 +97,7 @@ func (s *Service) GetImage(ctx context.Context, uid string, options Options) (im
if err != nil {
return
}
if err = s.cache.Do(ctx, s.cache.B().Set().Key("img:"+hash).Value(valkey.BinaryString(outBuff.Bytes())).Ex(time.Hour*48).Build()).Error(); err == nil {
if err = s.cache.Do(ctx, s.cache.B().Set().Key("img:"+hash).Value(valkey.BinaryString(outBuff.Bytes())).Ex(s.cfg.CacheLifetime).Build()).Error(); err == nil {
return outBuff, "image/jpeg", err
}
+3
View File
@@ -1,10 +1,13 @@
package config
import "time"
func Default() Cfg {
return Cfg{
Image: &ImageConfig{
Concurency: 10,
Quality: 80,
CacheLifetime: time.Hour * 24 * 31,
},
Tracking: &UmamiConfig{
ScriptSrc: "https://umami.schreifuchs.ch/script.js",
+3
View File
@@ -3,6 +3,7 @@ package config
import (
"context"
"log/slog"
"time"
"github.com/sethvargo/go-envconfig"
)
@@ -38,6 +39,7 @@ type ValkeyConfig struct {
type ImageConfig struct {
Concurency int64 `env:"CONCURENCY"`
Quality int `env:"QUALITY"`
CacheLifetime time.Duration `env:"CACHE_LIFETIME"`
}
type UmamiConfig struct {
@@ -54,6 +56,7 @@ func Read(ctx context.Context) (cfg Cfg, err error) {
// overridden.
DefaultDelimiter: ";",
DefaultSeparator: "@",
DefaultOverwrite: true,
Lookuper: envconfig.MultiLookuper(secretLookuper(), envconfig.OsLookuper()),
})
File diff suppressed because one or more lines are too long