优化 Web 写入性能

This commit is contained in:
tursom 2019-11-21 16:40:08 +08:00
parent 3993a8af1f
commit 354d2ac46a
2 changed files with 9 additions and 7 deletions

View File

@ -1,6 +1,5 @@
package cn.tursom.web.netty
import cn.tursom.core.buf
import cn.tursom.core.buffer.ByteBuffer
import cn.tursom.web.AdvanceHttpContent
import cn.tursom.web.utils.Chunked
@ -10,7 +9,6 @@ import io.netty.buffer.Unpooled
import io.netty.channel.ChannelHandlerContext
import io.netty.handler.codec.http.*
import io.netty.handler.stream.ChunkedFile
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.RandomAccessFile
import java.util.*
@ -110,7 +108,9 @@ open class NettyHttpContent(
responseBodyBuf.addComponent(if (buffer is NettyByteBuffer) {
buffer.byteBuf
} else {
Unpooled.wrappedBuffer(buffer.readBuffer())
val buf = Unpooled.wrappedBuffer(buffer.readBuffer())
buffer.clear()
buf
})
}

View File

@ -1,14 +1,11 @@
package cn.tursom.web
import cn.tursom.core.buf
import cn.tursom.core.buffer.ByteBuffer
import cn.tursom.core.count
import cn.tursom.core.urlDecode
import cn.tursom.web.utils.CacheControl
import cn.tursom.web.utils.Chunked
import cn.tursom.web.utils.Cookie
import cn.tursom.web.utils.SameSite
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.RandomAccessFile
import java.net.SocketAddress
@ -51,7 +48,12 @@ interface HttpContent {
fun finish()
fun finish(buffer: ByteArray, offset: Int = 0, size: Int = buffer.size - offset)
fun finish(buffer: ByteBuffer) {
finish(buffer.array, buffer.readOffset, buffer.readAllSize())
if (buffer.hasArray) {
finish(buffer.array, buffer.readOffset, buffer.readAllSize())
} else {
write(buffer)
finish()
}
buffer.close()
}