mirror of
https://github.com/infinite-iroha/touka.git
synced 2026-02-03 08:51:11 +08:00
[context] optimize context reset and reuse
This commit is contained in:
parent
450d6294ad
commit
1d5ffac153
2 changed files with 7 additions and 3 deletions
|
|
@ -60,7 +60,12 @@ type Context struct {
|
||||||
// 每次从 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) {
|
||||||
|
|
||||||
|
if rw, ok := c.Writer.(*responseWriterImpl); ok && !rw.IsHijacked() {
|
||||||
|
rw.reset(w)
|
||||||
|
} else {
|
||||||
c.Writer = newResponseWriter(w)
|
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 切片,而不是重新分配,以复用底层数组
|
||||||
|
|
|
||||||
3
respw.go
3
respw.go
|
|
@ -33,13 +33,12 @@ type responseWriterImpl struct {
|
||||||
|
|
||||||
// NewResponseWriter 创建并返回一个 responseWriterImpl 实例
|
// NewResponseWriter 创建并返回一个 responseWriterImpl 实例
|
||||||
func newResponseWriter(w http.ResponseWriter) ResponseWriter {
|
func newResponseWriter(w http.ResponseWriter) ResponseWriter {
|
||||||
rw := &responseWriterImpl{
|
return &responseWriterImpl{
|
||||||
ResponseWriter: w,
|
ResponseWriter: w,
|
||||||
status: 0, // 明确初始状态
|
status: 0, // 明确初始状态
|
||||||
size: 0,
|
size: 0,
|
||||||
hijacked: false,
|
hijacked: false,
|
||||||
}
|
}
|
||||||
return rw
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rw *responseWriterImpl) reset(w http.ResponseWriter) {
|
func (rw *responseWriterImpl) reset(w http.ResponseWriter) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue