mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-12-30 01:37:04 +08:00
进一步提升文件缓存写入速度
This commit is contained in:
@@ -324,13 +324,16 @@ func (this *HTTPWriter) PrepareCache(resp *http.Response, size int64) {
|
||||
}
|
||||
|
||||
// 写入Header
|
||||
var headerBuf = utils.SharedBufferPool.Get()
|
||||
for k, v := range this.Header() {
|
||||
for _, v1 := range v {
|
||||
if this.isPartial && k == "Content-Type" && strings.Contains(v1, "multipart/byteranges") {
|
||||
continue
|
||||
}
|
||||
_, err = cacheWriter.WriteHeader([]byte(k + ":" + v1 + "\n"))
|
||||
_, err = headerBuf.Write([]byte(k + ":" + v1 + "\n"))
|
||||
if err != nil {
|
||||
utils.SharedBufferPool.Put(headerBuf)
|
||||
|
||||
remotelogs.Error("HTTP_WRITER", "write cache failed: "+err.Error())
|
||||
_ = this.cacheWriter.Discard()
|
||||
this.cacheWriter = nil
|
||||
@@ -338,6 +341,14 @@ func (this *HTTPWriter) PrepareCache(resp *http.Response, size int64) {
|
||||
}
|
||||
}
|
||||
}
|
||||
_, err = cacheWriter.WriteHeader(headerBuf.Bytes())
|
||||
utils.SharedBufferPool.Put(headerBuf)
|
||||
if err != nil {
|
||||
remotelogs.Error("HTTP_WRITER", "write cache failed: "+err.Error())
|
||||
_ = this.cacheWriter.Discard()
|
||||
this.cacheWriter = nil
|
||||
return
|
||||
}
|
||||
|
||||
if this.isPartial {
|
||||
// content-range
|
||||
@@ -633,10 +644,12 @@ func (this *HTTPWriter) PrepareCompression(resp *http.Response, size int64) {
|
||||
}
|
||||
|
||||
// 写入Header
|
||||
var headerBuffer = utils.SharedBufferPool.Get()
|
||||
for k, v := range this.Header() {
|
||||
for _, v1 := range v {
|
||||
_, err = compressionCacheWriter.WriteHeader([]byte(k + ":" + v1 + "\n"))
|
||||
_, err = headerBuffer.Write([]byte(k + ":" + v1 + "\n"))
|
||||
if err != nil {
|
||||
utils.SharedBufferPool.Put(headerBuffer)
|
||||
remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error())
|
||||
_ = compressionCacheWriter.Discard()
|
||||
compressionCacheWriter = nil
|
||||
@@ -645,6 +658,15 @@ func (this *HTTPWriter) PrepareCompression(resp *http.Response, size int64) {
|
||||
}
|
||||
}
|
||||
|
||||
_, err = compressionCacheWriter.WriteHeader(headerBuffer.Bytes())
|
||||
utils.SharedBufferPool.Put(headerBuffer)
|
||||
if err != nil {
|
||||
remotelogs.Error("HTTP_WRITER", "write compression cache failed: "+err.Error())
|
||||
_ = compressionCacheWriter.Discard()
|
||||
compressionCacheWriter = nil
|
||||
return
|
||||
}
|
||||
|
||||
if compressionCacheWriter != nil {
|
||||
this.compressionCacheWriter = compressionCacheWriter
|
||||
var teeWriter = writers.NewTeeWriterCloser(this.writer, compressionCacheWriter)
|
||||
|
||||
Reference in New Issue
Block a user