优化代码

This commit is contained in:
GoEdgeLab
2024-04-12 08:41:14 +08:00
parent f10811946d
commit 74161bf685
2 changed files with 42 additions and 20 deletions

View File

@@ -367,7 +367,7 @@ func (this *HTTPWriter) PrepareCache(resp *http.Response, size int64) {
if this.isPartial && k == "Content-Type" && strings.Contains(v1, "multipart/byteranges") { if this.isPartial && k == "Content-Type" && strings.Contains(v1, "multipart/byteranges") {
continue continue
} }
_, err = headerBuf.Write([]byte(k + ":" + v1 + "\n")) _, err = headerBuf.WriteString(k + ":" + v1 + "\n")
if err != nil { if err != nil {
utils.SharedBufferPool.Put(headerBuf) utils.SharedBufferPool.Put(headerBuf)
@@ -694,15 +694,15 @@ func (this *HTTPWriter) PrepareCompression(resp *http.Response, size int64) {
} }
// 写入Header // 写入Header
var headerBuffer = utils.SharedBufferPool.Get() var headerBuf = utils.SharedBufferPool.Get()
for k, v := range this.Header() { for k, v := range this.Header() {
if this.shouldIgnoreHeader(k) { if this.shouldIgnoreHeader(k) {
continue continue
} }
for _, v1 := range v { for _, v1 := range v {
_, err = headerBuffer.Write([]byte(k + ":" + v1 + "\n")) _, err = headerBuf.WriteString(k + ":" + v1 + "\n")
if err != nil { if err != nil {
utils.SharedBufferPool.Put(headerBuffer) utils.SharedBufferPool.Put(headerBuf)
remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error()) remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error())
_ = compressionCacheWriter.Discard() _ = compressionCacheWriter.Discard()
compressionCacheWriter = nil compressionCacheWriter = nil
@@ -710,17 +710,14 @@ func (this *HTTPWriter) PrepareCompression(resp *http.Response, size int64) {
} }
} }
} }
_, err = compressionCacheWriter.WriteHeader(headerBuf.Bytes())
_, err = compressionCacheWriter.WriteHeader(headerBuffer.Bytes()) utils.SharedBufferPool.Put(headerBuf)
utils.SharedBufferPool.Put(headerBuffer)
if err != nil { if err != nil {
remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error()) remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error())
_ = compressionCacheWriter.Discard() _ = compressionCacheWriter.Discard()
compressionCacheWriter = nil compressionCacheWriter = nil
return return
} }
if compressionCacheWriter != nil {
if this.compressionCacheWriter != nil { if this.compressionCacheWriter != nil {
_ = this.compressionCacheWriter.Close() _ = this.compressionCacheWriter.Close()
} }
@@ -732,7 +729,6 @@ func (this *HTTPWriter) PrepareCompression(resp *http.Response, size int64) {
}) })
this.writer = teeWriter this.writer = teeWriter
} }
}
// compression writer // compression writer
compressionWriter, err := compressions.NewWriter(this.writer, compressionType, int(this.compressionConfig.Level)) compressionWriter, err := compressions.NewWriter(this.writer, compressionType, int(this.compressionConfig.Level))
@@ -1294,6 +1290,6 @@ func (this *HTTPWriter) shouldIgnoreHeader(name string) bool {
case "Set-Cookie", "Strict-Transport-Security", "Alt-Svc", "Upgrade", "X-Cache": case "Set-Cookie", "Strict-Transport-Security", "Alt-Svc", "Upgrade", "X-Cache":
return true return true
default: default:
return (this.isPartial && name == "Content-Range") return this.isPartial && name == "Content-Range"
} }
} }

View File

@@ -45,3 +45,29 @@ func BenchmarkNewBufferPool2(b *testing.B) {
} }
}) })
} }
func BenchmarkNewBufferPool3(b *testing.B) {
var pool = utils.NewBufferPool()
var dataString = strings.Repeat("Hello", 1024)
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
var buffer = pool.Get()
buffer.Write([]byte(dataString))
pool.Put(buffer)
}
})
}
func BenchmarkNewBufferPool4(b *testing.B) {
var pool = utils.NewBufferPool()
var dataString = strings.Repeat("Hello", 1024)
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
var buffer = pool.Get()
buffer.WriteString(dataString)
pool.Put(buffer)
}
})
}