今天陪女儿做作业,突然翻到以前在腾讯听一个T4大佬做的网络性能优化的笔记,虽然过去5、6年了,国内的网络环境发生了很大变化,而且主流客户端也从浏览器变成了手机,但里面的优化手段至今仍然觉得很有意义,拿出来分享下。
一、通用策略
- 关闭TCP快速回收
2.初始RTO时间不低于3秒
3.初始拥塞控制窗口不小于10
4.socket buffer增大到64K以上
5.TCP滑动窗口可变
6.控制发包大小1400字节以下,避免分片。
二、TCP优化-客户端
1.DNS查询
DNS缓存(自己做缓存)、IP访问
2.TCP连接
连接池、超时控制、重试、异步socket(Java中反向DNS查询耗时很长,C 相对好一点)
其中连接池:对于国内运营商来说,CMWAP不支持长连接,CMNET有时间限制。
防抖动:电梯发消息时断线重试,重试间隔按次数递增,到达一定次数后丢弃。
微信和手Q心跳包发送间隔4.5分钟,最省电。
3.数据传输
XML格式解析最慢,JSON和protobuf较快
3G无限电状态机、预热(三个状态、standby、lowpower、fullpower)
压缩数据
三、TCP优化-服务端
1.拥塞窗口
2.长连接
3.就近接入
4.禁用TCP快速回收
快速回收会导致HTTP访问时服务器拒绝访问。
具体可参考https://blog.csdn.net/dog250/article/details/13760985
四、UDP优化-客户端
1.数据压缩
2.发送和接受buf设置
减少发包次数
拥塞窗口
五、HTTP 1.x优化
线头阻塞
六、服务器优化
1.头部节省
2.图片降低质量、压缩尺寸
3.图片转换为webp(压缩比高,编码慢,解码快)
4.广告过滤和隐藏
5.打包压缩发送
6.重定向(同域名下服务器重定向)
七、HTTP2.0 优化
SPDY-speedy协议
1.多路复用
2.可调整请求优先级
局限性: 资源放在多域名下时获取资源较慢
八、优化工具
1.瀑布图:分析各个步骤耗时
2.chrome trace
3.网络回放 web_page_replay
网友评论