mirror of https://github.com/gofiber/fiber.git
Utilize bytebufferpool for Render
parent
6e22a75e91
commit
6da47d4295
17
ctx.go
17
ctx.go
|
@ -16,6 +16,7 @@ import (
|
||||||
"mime/multipart"
|
"mime/multipart"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -750,10 +751,24 @@ func (ctx *Ctx) Render(name string, bind interface{}) (err error) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Render raw template using 'name' as filepath if no engine is set
|
// Render raw template using 'name' as filepath if no engine is set
|
||||||
tmpl, err := template.ParseFiles(filepath.Clean(name))
|
var tmpl *template.Template
|
||||||
|
raw := bytebufferpool.Get()
|
||||||
|
defer bytebufferpool.Put(raw)
|
||||||
|
// Read file
|
||||||
|
f, err := os.Open(filepath.Clean(name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if _, err = raw.ReadFrom(f); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err = f.Close(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// Parse template
|
||||||
|
if tmpl, err = template.New("").Parse(raw.String()); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
// Render template
|
// Render template
|
||||||
if err = tmpl.Execute(buf, bind); err != nil {
|
if err = tmpl.Execute(buf, bind); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue