探索 Go Server Timing:提升HTTP性能的新利器
package main
import (
"net/http"
"time"
"github.com/mitchellh/mapstructure"
"github.com/rcrowley/go-metrics"
)
// 定义Server-Timing头部的中间件
func ServerTimingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 开始计时
start := time.Now()
// 执行下游处理器
next.ServeHTTP(w, r)
// 计算并记录处理请求的耗时
duration := time.Since(start)
w.Header().Set("Server-Timing", "total;dur="+duration.String())
})
}
func main() {
// 使用ServerTimingMiddleware
http.Handle("/", ServerTimingMiddleware(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// 你的业务逻辑
})))
http.ListenAndServe(":8080", nil)
}
这个代码示例展示了如何在Go语言中创建一个简单的中间件,用于记录HTTP请求的处理时间并将其添加到Server-Timing响应头中。这是一个很好的实践,可以帮助开发者了解他们的应用程序在处理请求时的性能瓶颈。
评论已关闭