mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-12 06:10:25 +08:00
优化代码
This commit is contained in:
@@ -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,28 +710,24 @@ 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 this.compressionCacheWriter != nil {
|
||||||
if compressionCacheWriter != nil {
|
_ = this.compressionCacheWriter.Close()
|
||||||
if this.compressionCacheWriter != nil {
|
|
||||||
_ = this.compressionCacheWriter.Close()
|
|
||||||
}
|
|
||||||
this.compressionCacheWriter = compressionCacheWriter
|
|
||||||
var teeWriter = writers.NewTeeWriterCloser(this.writer, compressionCacheWriter)
|
|
||||||
teeWriter.OnFail(func(err error) {
|
|
||||||
_ = compressionCacheWriter.Discard()
|
|
||||||
this.compressionCacheWriter = nil
|
|
||||||
})
|
|
||||||
this.writer = teeWriter
|
|
||||||
}
|
}
|
||||||
|
this.compressionCacheWriter = compressionCacheWriter
|
||||||
|
var teeWriter = writers.NewTeeWriterCloser(this.writer, compressionCacheWriter)
|
||||||
|
teeWriter.OnFail(func(err error) {
|
||||||
|
_ = compressionCacheWriter.Discard()
|
||||||
|
this.compressionCacheWriter = nil
|
||||||
|
})
|
||||||
|
this.writer = teeWriter
|
||||||
}
|
}
|
||||||
|
|
||||||
// compression writer
|
// compression writer
|
||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user