Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019-08-05:谈谈如何对网络请求进行优化? #114

Open
Moosphan opened this issue Aug 5, 2019 · 11 comments
Open

2019-08-05:谈谈如何对网络请求进行优化? #114

Moosphan opened this issue Aug 5, 2019 · 11 comments

Comments

@Moosphan
Copy link
Owner

Moosphan commented Aug 5, 2019

No description provided.

@flsyfish
Copy link

flsyfish commented Aug 5, 2019

三级缓存?网络,内存,缓存?

@ADrunkenLiBai
Copy link

@guosen
Copy link

guosen commented Aug 5, 2019

最开始的是DNS,当我们发起一个网络请求,首先要经过DNS服务,将域名转化为IP地址,然后通过IP地址建立连接,DNS解析过慢??所以这可以是一个切入点;

其次Gzip
HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术,用来减少传输数据量大小,减少传输数据量大小有两个明显的好处;

然后涉及到图片上传(避免整文件传输,采用分片传输;
根据网络类型以及传输过程中的变化动态的修改分片大小;
每个分片失败重传的机会)和下载(使用WebP格式,使用缩略图)

@TheOldlittleBoy
Copy link

1.为避免DNS解析异常问题,可以直接使用 IP 建立连接;
2.使用 Gzip 压缩 Response 减少数据传输量;使用 Protocol Buffer 代替 JSON;
3.请求图片的 url 中可以添加 格式、质量、宽高等参数;使用缩略图、使用 WebP格式图片,大图分片传输;
4.使用网络缓存,使用图片加载框架;
5.监听设备网络状态,根据不同网络状态选择对应情况下的网络请求策略:网络良好和弱网、离线等情况下分别设计不同的请求策略,比如 WIFI 下一个请求可以获取几十个数据,甚至可以一次性执行多个请求;而弱网下一个请求获取几个数据,且文本类型优先,富文本其次,除文本数据外其它类型的数据一开始只显示占位符;离线下事先保存请求数据到磁盘,在离线时从磁盘加载数据。

@gabyallen
Copy link

1.最开始的是DNS,当我们发起一个网络请求,首先要经过DNS服务,将域名转化为IP地址,为避免DNS解析异常问题,可以直接使用 IP 建立连接;
2.使用 Gzip 压缩 Response 减少数据传输量;使用 Protocol Buffer 代替 JSON;
3.请求图片的 url 中可以添加 格式、质量、宽高等参数;使用缩略图、使用 WebP格式图片,大图分片传输;
4.使用网络缓存,使用图片加载框架;
5.监听设备网络状态,根据不同网络状态选择对应情况下的网络请求策略:网络良好和弱网、离线等情况下分别设计不同的请求策略,比如 WIFI 下一个请求可以获取几十个数据,甚至可以一次性执行多个请求;而弱网下一个请求获取几个数据,且文本类型优先,富文本其次,除文本数据外其它类型的数据一开始只显示占位符;离线下事先保存请求数据到磁盘,在离线时从磁盘加载数据。

@yangfanggang
Copy link

搬个小板凳 听大佬们回答

@Fritz-Xu
Copy link

IP直接连接,那么https怎么办

@18361237136
Copy link

  1. 最开始的是DNS,当我们发起一个网络请求,首先要经过DNS服务将域名转化为ip地址,为避免dns解析异常,可以直接使用ip建立连接
  2. 使用gzip压缩Response减少数据传输量;使用protocol Buffer代替JSOn
  3. 请求图片的url中可以添加格式,质量,宽高等参数;使用缩略图,webp格式图片,大图分片传输。
  4. 使用网络缓存,使用图片加载框架
  5. 监听设备的网络状态,根据不同网络状态选择对应情况下的网络请求策略:网络良好和弱网、离线等情况下分别设计不同的请求策略,比如wifi下一个请求可以获取几十个数据,甚至可以一次性执行多个请求,而弱网情况下一个请求获取姐数据,且文本类型有限,富文本其次,除文本数据外其他类型的数据一开始只显示占位符;李线下事先保存数据到磁盘,在离线是从磁盘加载数据。

@weikano
Copy link

weikano commented Sep 2, 2019

  1. IP直连得不偿失,用httpdns吧
  2. 从xml到json再到类似protobuf,都是一步一步再缩减流量

@xiaoyunfei
Copy link

关于这个问题,上面已经有一些客官回答的比较好了,我这里做一个补充

1、尽量避免使用多个不同的域名:域名需要通过DNS服务解析成IP,域名过多会浪费时间(当然了DNS会有缓存)
2、减少不必要数据的数据传输:后台返回数据的时候,如果数据没有用到可以不传递给客户端,避免造成浪费
3、使用GZip压缩数据:可以把传递的数据通过压缩变小
4、使用keep-alive: 网络请求之后,不断开链接,下次再次发起网络请求的时候,不用再次走三次握手
5、根据不同的网络环境,定制不同的策略:比如WiFi环境下,可以下载高清大图、下载热更资源等;移动网络状态下,不要进行太费流量的操作;

@senlinxuefeng
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests