协议文档、代码编辑器、数据包分析工具、用户日志……
眼睛盯着屏幕,脑子里飞快梳理逻辑。
HTTP/1.0的连接是短连接,得改成可复用的长连接,再加上连接池管理。、
用户第一次建立连接后,后续请求直接复用,省掉握手时间;
大附件用分块传输,同时开三个线程并行发送,再用LZ77压缩算法减小包体积,双管齐下应该能追上速度。
忙到中午,第一次测试结果出来了。
传输速度只提升了10%,离目标还差得远。
小李耷拉着脑袋:“军哥,分块到3M的时候最快,但还是比信浪慢20%。压缩算法也调到最优了,再往上加就会耗CPU,用户端会卡顿。”
我揉了揉发酸的眼睛,点开老张抓的信浪数据包,突然发现一个细节。
信浪的协议里,把邮件头和邮件体分开传输,邮件头用轻量级压缩,邮件体用流式传输。
而我们现在是把整个邮件打包传输,头体混在一起,压缩效率低。
“改传输结构!”
我突然站起来。
“把邮件头和体拆开,头用DEFLATE压缩,体用流式分块,同时开四个线程,两个传头,两个传体,试试!”
团队立刻调整方案,机房里的灯亮到了深夜。
Eva发来短信,问我回不回家。
我只来得及回复“在忙,别等我”,就又扎进了代码里。
凌晨两点,第二次测试开始。
一封20M的附件,之前需要8分钟,这次只用了3分20秒,比信浪的4分钟还快!
监控屏上的速度曲线一下子冲上去,红色的“超时”记录消失了,取而代之的是绿色的“传输成功”。
“成了!军哥,我们成了!”
小李激动地跳起来,手里的测试报告飞了出去。
“比信浪快15%!大附件传输速度提升了58%!”
老张靠在椅背上,长长舒了口气,眼睛里满是红血丝。