diff --git a/server/cache.go b/server/cache.go index ca2fab5..491cdc8 100644 --- a/server/cache.go +++ b/server/cache.go @@ -3,6 +3,7 @@ package server import ( "time" + "github.com/gofiber/fiber/v2" "github.com/gofiber/storage/memory/v2" ) @@ -17,5 +18,10 @@ const ( func NewCache() Cache { return Cache{memory.New(memory.Config{ GCInterval: CACHE_GC_INTERVAL, - })} + }), + } +} + +func KeyGenerator(c *fiber.Ctx) string { + return c.Path() + c.Context().QueryArgs().String() } diff --git a/server/server.go b/server/server.go index d216205..d1b4c7d 100644 --- a/server/server.go +++ b/server/server.go @@ -53,6 +53,7 @@ func New(engine *templating.Engine, storage fiber.Storage, debug bool) Server { Expiration: CACHE_TIME, CacheControl: false, Storage: storage, + KeyGenerator: KeyGenerator, })) server.Use(logger.New()) } diff --git a/templating/engine.go b/templating/engine.go index 979c2ed..4c1d1d9 100644 --- a/templating/engine.go +++ b/templating/engine.go @@ -189,7 +189,7 @@ func (e *Engine) AddFuncs(funcs template.FuncMap) { } func (e *Engine) Render(out io.Writer, path string, data any, layout ...string) error { - slog.Debug("Rendering", "path", path, "layout", layout, "data", data) + // slog.Debug("Rendering", "path", path, "layout", layout, "data", data) e.mu.RLock() ld := data.(fiber.Map) if e.GlobalData != nil { diff --git a/xml/parser.go b/xml/parser.go index 930d8bf..0bcd79c 100644 --- a/xml/parser.go +++ b/xml/parser.go @@ -74,9 +74,11 @@ func Iterate[T any](xmlData string, initialState T) iter.Seq2[*TokenResult[T], e } customToken = Token{Name: t.Name.Local, Inner: t, Type: EndElement} case xml.CharData: - text := strings.TrimSpace(string(t)) + text := string(t) if text != "" && len(stack) > 0 { - stack[len(stack)-1].CharData += text + " " + for i := range stack { + stack[i].CharData += text + } } customToken = Token{ Name: "CharData", @@ -110,7 +112,7 @@ func Iterate[T any](xmlData string, initialState T) iter.Seq2[*TokenResult[T], e result := &TokenResult[T]{ State: state, Token: customToken, - Stack: append([]Element{}, stack...), + Stack: stack, } if !yield(result, nil) {