description |
---|
Время выполнения HTTP-сервера |
Используя elton, можно легко получить время выполнения каждого middleware. После получения статистики времени выполнения, можно легко записать соответствующие статистические данные или добавить их в заголовок Server-Timing HTTP-ответа.
На приведенном ниже скриншоте показано отображение Server-Timing в панели network в Chrome:
package main
import (
"github.com/vicanso/elton"
"github.com/vicanso/elton/middleware"
)
func main() {
e := elton.New()
e.EnableTrace = true
e.OnTrace(func(c *elton.Context, traceInfos elton.TraceInfos) {
serverTiming := string(traceInfos.ServerTiming("elton-"))
c.SetHeader(elton.HeaderServerTiming, serverTiming)
})
entry := func(c *elton.Context) (err error) {
c.ID = "random id"
c.NoCache()
return c.Next()
}
e.Use(entry)
// Установка имени middleware, если не установлено, будет взято из runtime
// Для общих middleware рекомендуется указывать имя
e.SetFunctionName(entry, "entry")
fn := middleware.NewDefaultResponder()
e.Use(fn)
e.SetFunctionName(fn, "responder")
e.GET("/", func(c *elton.Context) (err error) {
c.Body = &struct {
Name string `json:"name,omitempty"`
Content string `json:"content,omitempty"`
}{
"tree.xie",
"Hello, World!",
}
return
})
err := e.ListenAndServe(":3000")
if err != nil {
panic(err)
}
}
curl -v 'http://127.0.0.1:3000/'
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 3000 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1:3000
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Cache-Control: no-cache
< Content-Length: 44
< Content-Type: application/json; charset=utf-8
< Server-Timing: elton-0;dur=0;desc="entry",elton-1;dur=0.03;desc="responder",elton-2;dur=0;desc="main.main.func3"
< Date: Fri, 03 Jan 2020 13:08:50 GMT
<
* Connection #0 to host 127.0.0.1 left intact
{"name":"tree.xie","content":"Hello, World!"}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )