Fix load time bug (#14508)

tokarchuk/v1.17
Lunny Xiao 4 years ago committed by GitHub
parent aec8029277
commit f761c82c94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      modules/context/context.go

@ -10,6 +10,7 @@ import (
"crypto/sha256" "crypto/sha256"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"fmt"
"html" "html"
"html/template" "html/template"
"io" "io"
@ -182,6 +183,10 @@ func (ctx *Context) RedirectToFirst(location ...string) {
// HTML calls Context.HTML and converts template name to string. // HTML calls Context.HTML and converts template name to string.
func (ctx *Context) HTML(status int, name base.TplName) { func (ctx *Context) HTML(status int, name base.TplName) {
log.Debug("Template: %s", name) log.Debug("Template: %s", name)
var startTime = time.Now()
ctx.Data["TmplLoadTimes"] = func() string {
return fmt.Sprint(time.Since(startTime).Nanoseconds()/1e6) + "ms"
}
if err := ctx.Render.HTML(ctx.Resp, status, string(name), ctx.Data); err != nil { if err := ctx.Render.HTML(ctx.Resp, status, string(name), ctx.Data); err != nil {
ctx.ServerError("Render failed", err) ctx.ServerError("Render failed", err)
} }
@ -190,6 +195,10 @@ func (ctx *Context) HTML(status int, name base.TplName) {
// HTMLString render content to a string but not http.ResponseWriter // HTMLString render content to a string but not http.ResponseWriter
func (ctx *Context) HTMLString(name string, data interface{}) (string, error) { func (ctx *Context) HTMLString(name string, data interface{}) (string, error) {
var buf strings.Builder var buf strings.Builder
var startTime = time.Now()
ctx.Data["TmplLoadTimes"] = func() string {
return fmt.Sprint(time.Since(startTime).Nanoseconds()/1e6) + "ms"
}
err := ctx.Render.HTML(&buf, 200, string(name), data) err := ctx.Render.HTML(&buf, 200, string(name), data)
return buf.String(), err return buf.String(), err
} }
@ -547,10 +556,7 @@ func Contexter() func(next http.Handler) http.Handler {
Data: map[string]interface{}{ Data: map[string]interface{}{
"CurrentURL": setting.AppSubURL + req.URL.RequestURI(), "CurrentURL": setting.AppSubURL + req.URL.RequestURI(),
"PageStartTime": startTime, "PageStartTime": startTime,
"TmplLoadTimes": func() string { "Link": link,
return time.Since(startTime).String()
},
"Link": link,
}, },
} }

Loading…
Cancel
Save