Utilize bytebufferpool for Render

pull/451/head
Alexander Do 2020-06-07 11:05:00 -07:00
parent 6e22a75e91
commit 6da47d4295
No known key found for this signature in database
GPG Key ID: BB3CAAACFB6F4A4B
1 changed files with 16 additions and 1 deletions

17
ctx.go
View File

@ -16,6 +16,7 @@ import (
"mime/multipart"
"net/http"
"net/url"
"os"
"path/filepath"
"regexp"
"strconv"
@ -750,10 +751,24 @@ func (ctx *Ctx) Render(name string, bind interface{}) (err error) {
}
} else {
// 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 {
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
if err = tmpl.Execute(buf, bind); err != nil {
return err