refactor template cache, integrate responseWriterWrapper and integrate timeout

This commit is contained in:
2024-11-21 21:29:59 +01:00
parent 4c8c6121b1
commit 89afb56836
4 changed files with 98 additions and 27 deletions
+21 -11
View File
@@ -5,6 +5,7 @@ import (
"errors"
"html/template"
"io/fs"
"log/slog"
"net/http"
"path/filepath"
"reflect"
@@ -63,13 +64,9 @@ func (re *Render) Template(w http.ResponseWriter, tmpl string, td *TemplateData)
td = &TemplateData{}
}
if re.EnableCache {
tc = re.templateCache
} else {
tc, err = re.createTemplateCache()
if err != nil {
return err
}
tc, err = re.getTemplateCache()
if err != nil {
return err
}
t, ok := tc[tmpl]
@@ -78,19 +75,32 @@ func (re *Render) Template(w http.ResponseWriter, tmpl string, td *TemplateData)
}
buf := new(bytes.Buffer)
err = t.Execute(buf, td)
if err != nil {
if err = t.Execute(buf, td); err != nil {
return err
}
_, err = buf.WriteTo(w)
if err != nil {
if _, err = buf.WriteTo(w); err != nil {
return err
}
return nil
}
func (re *Render) getTemplateCache() (templateCache, error) {
slog.Debug("template cache", "tc status", re.EnableCache, "tc", len(re.templateCache))
if len(re.templateCache) == 0 {
cachedTemplates, err := re.createTemplateCache()
if err != nil {
return nil, err
}
re.templateCache = cachedTemplates
}
if re.EnableCache {
return re.templateCache, nil
}
return re.createTemplateCache()
}
func (re *Render) findHTMLFiles() ([]string, error) {
var files []string