mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 08:11:11 +08:00
2.0.5
This commit is contained in:
parent
23fdd46b91
commit
3c76050f18
3 changed files with 13 additions and 35 deletions
|
|
@ -1,5 +1,13 @@
|
||||||
# 更新日志
|
# 更新日志
|
||||||
|
|
||||||
|
2.0.5
|
||||||
|
---
|
||||||
|
- RELEASE: v2.0.5正式版发布;
|
||||||
|
- CHANGE: 优化响应体分块复制实现
|
||||||
|
- ADD: 加入缓存池
|
||||||
|
- CHANGE: 改进缓存实现
|
||||||
|
- CHANGE: 部分杂项改进
|
||||||
|
|
||||||
25w09a
|
25w09a
|
||||||
---
|
---
|
||||||
- PRE-RELEASE: 此版本是v2.0.5的预发布版本,请勿在生产环境中使用;
|
- PRE-RELEASE: 此版本是v2.0.5的预发布版本,请勿在生产环境中使用;
|
||||||
|
|
|
||||||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
||||||
2.0.4
|
2.0.5
|
||||||
|
|
@ -47,9 +47,6 @@ func ChunkedProxyRequest(c *gin.Context, u string, cfg *config.Config, mode stri
|
||||||
method := c.Request.Method
|
method := c.Request.Method
|
||||||
logInfo("%s %s %s %s %s", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto)
|
logInfo("%s %s %s %s %s", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto)
|
||||||
|
|
||||||
// 创建HTTP客户端
|
|
||||||
//client := &http.Client{}
|
|
||||||
|
|
||||||
// 发送HEAD请求, 预获取Content-Length
|
// 发送HEAD请求, 预获取Content-Length
|
||||||
headReq, err := http.NewRequest("HEAD", u, nil)
|
headReq, err := http.NewRequest("HEAD", u, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -108,42 +105,15 @@ func ChunkedProxyRequest(c *gin.Context, u string, cfg *config.Config, mode stri
|
||||||
|
|
||||||
c.Status(resp.StatusCode)
|
c.Status(resp.StatusCode)
|
||||||
|
|
||||||
/*
|
|
||||||
if err := chunkedCopyResponseBody(c, resp.Body); err != nil {
|
|
||||||
logError("%s %s %s %s %s 响应复制错误: %v", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto, err)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// 使用固定32KB缓冲池
|
// 使用固定32KB缓冲池
|
||||||
buffer := BufferPool.Get().([]byte)
|
buffer := BufferPool.Get().([]byte)
|
||||||
defer BufferPool.Put(buffer)
|
defer BufferPool.Put(buffer)
|
||||||
|
|
||||||
if _, err := io.CopyBuffer(c.Writer, resp.Body, buffer); err != nil {
|
_, err = io.CopyBuffer(c.Writer, resp.Body, buffer)
|
||||||
|
if err != nil {
|
||||||
logError("%s %s %s %s %s 响应复制错误: %v", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto, err)
|
logError("%s %s %s %s %s 响应复制错误: %v", c.ClientIP(), method, u, c.Request.Header.Get("User-Agent"), c.Request.Proto, err)
|
||||||
return
|
return
|
||||||
|
} else {
|
||||||
|
c.Writer.Flush() // 确保刷入
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
// 复制响应体
|
|
||||||
func chunkedCopyResponseBody(c *gin.Context, respBody io.Reader) error {
|
|
||||||
buf := make([]byte, chunkedBufferSize)
|
|
||||||
for {
|
|
||||||
n, err := respBody.Read(buf)
|
|
||||||
if n > 0 {
|
|
||||||
if _, err := c.Writer.Write(buf[:n]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
c.Writer.Flush() // 确保每次写入后刷新
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
if err == io.EOF {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue