[context] fix writer reset

This commit is contained in:
wjqserver 2025-06-06 21:29:09 +08:00
parent 1618f89ba5
commit 61e67bc2a0

View file

@ -59,16 +59,8 @@ type Context struct {
// reset 重置 Context 对象以供复用。 // reset 重置 Context 对象以供复用。
// 每次从 sync.Pool 中获取 Context 后,都需要调用此方法进行初始化。 // 每次从 sync.Pool 中获取 Context 后,都需要调用此方法进行初始化。
func (c *Context) reset(w http.ResponseWriter, req *http.Request) { func (c *Context) reset(w http.ResponseWriter, req *http.Request) {
// 每次重置时,确保 Writer 包装的是最新的 http.ResponseWriter
// 并重置其内部状态
if rw, ok := c.Writer.(*responseWriterImpl); ok {
rw.ResponseWriter = w
rw.status = 0
rw.size = 0
} else {
// 如果 c.Writer 不是 responseWriterImpl重新创建
c.Writer = newResponseWriter(w) c.Writer = newResponseWriter(w)
}
c.Request = req c.Request = req
c.Params = c.Params[:0] // 清空 Params 切片,而不是重新分配,以复用底层数组 c.Params = c.Params[:0] // 清空 Params 切片,而不是重新分配,以复用底层数组