思考题·Http网络性能优化
Comment一条网络请求,从客户端到服务器,有哪些可优化的点?分阶段记录一下
DNS请求
客户端连接服务器前,TCP会先去请求DNS服务器,获取真实IP,这个步骤可以省略,客户端直接连接服务器ip
三次握手
在获取到ip之后,TCP需要通过三次握手保证双方的收发功能正常。这个步骤在TCP中无法省略,除非使用基于UDP的协议,如QUIC
数据量部分
三次握手之后,Http就可以开始传输数据。这里考虑缩减传输的数据量。
Http请求头
Http2.0有复用机制,后一次的请求,请求头数据量会减少
Http请求体
Post请求的数据一般在请求头下面,可以使用protobuf,减少数据量。或使用gzip压缩数据。
请求增量数据
- 图片、大文件使用断点下载、续传
- 网络请求请求增量数据
TCP协议
设置TCP_NODELAY属性,避免数据量小的时候被Nagle算法摆一道
Http协议
和服务器约定,使用persistence:keep-alive,复用连接,避免频繁连接服务器导致的DNS请求、三次握手导致的时间消耗
缓存复用
设置缓存有效期,避免每一次都使用网络请求数据。
其他
使用CDN,优化客户端到服务器之间的线路。
webview(补充)
部分js、资源使用本地资源加载
1 | public WebResourceResponse shouldInterceptRequest(WebView var1, WebResourceRequest var2){ |