Commit 5dfb7663 by xiongziliang

优化http服务器和客户端内存占用

parent 74621618
...@@ -186,7 +186,7 @@ int64_t HttpClient::onRecvHeader(const char *data, uint64_t len) { ...@@ -186,7 +186,7 @@ int64_t HttpClient::onRecvHeader(const char *data, uint64_t len) {
//所以返回-1代表我们接下来分段接收content //所以返回-1代表我们接下来分段接收content
_recvedBodySize = 0; _recvedBodySize = 0;
//根据_totalBodySize设置接收缓存大小 //根据_totalBodySize设置接收缓存大小
_sock->setReadBuffer(std::make_shared<BufferRaw>(MAX(_totalBodySize + 1,256 * 1024))); _sock->setReadBuffer(std::make_shared<BufferRaw>(MIN(_totalBodySize + 1,256 * 1024)));
return -1; return -1;
} }
......
...@@ -635,7 +635,15 @@ inline bool HttpSession::Handle_Req_POST(int64_t &content_len) { ...@@ -635,7 +635,15 @@ inline bool HttpSession::Handle_Req_POST(int64_t &content_len) {
return true; return true;
} }
if(totalContentLen > 0 && totalContentLen < maxReqSize ){ //根据Content-Length设置接收缓存大小
if(totalContentLen > 0){
_sock->setReadBuffer(std::make_shared<BufferRaw>(MIN(totalContentLen + 1,256 * 1024)));
}else{
//不定长度的Content-Length
_sock->setReadBuffer(std::make_shared<BufferRaw>(256 * 1024));
}
if(totalContentLen > 0 && totalContentLen < maxReqSize ){
//返回固定长度的content //返回固定长度的content
content_len = totalContentLen; content_len = totalContentLen;
auto parserCopy = _parser; auto parserCopy = _parser;
...@@ -652,9 +660,6 @@ inline bool HttpSession::Handle_Req_POST(int64_t &content_len) { ...@@ -652,9 +660,6 @@ inline bool HttpSession::Handle_Req_POST(int64_t &content_len) {
return false; return false;
}; };
}else{ }else{
//如果是post请求 并且totalContentLen数据超过maxReqSize,那么我们加大接收缓存提升性能
_sock->setReadBuffer(std::make_shared<BufferRaw>(256 * 1024));
//返回不固定长度的content //返回不固定长度的content
content_len = -1; content_len = -1;
auto parserCopy = _parser; auto parserCopy = _parser;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论