记得这是阿里校招笔试的一道问答题
答案是小伙伴们之后一起拼出来的,不乏有些飘忽的东西,需要的朋友可以做个参考(具体细节可以自行百度),欢迎提出更好的建议!
在客户端方面:
1.减少网络请求的数量,能够合并的网络请求尽量合并,尽量在一次查询中完成多个零散数据的查询
2.为网络数据做本地缓存处理
3.设置超时时间,数据压缩传送,比如从服务器端获取列表数据,如果可以最好是能将服务器端的流压缩一下,接收压缩流,这样速度会快点,而且省流量。
3.多线程处理,不要死等网络操作的结果,把耗时工作及计算放在子线程中
4.客户端请求数据尽量精简,需要哪些数据请求哪些数据,拉取数据分页查询、使用时间戳、lastId等查询,避免一次获取很多不需要展示的数据
5.对单次请求的数据进行压缩,如Gzip进行http数据通信的压缩,数值上连续的数据(如经纬度坐标序列)可以传递差值
6.对于资源文件,如图片,进行多个版本的保存和请求,大图小图分别异步加载
7.响应要及时,尽量给出友好的提示,提示用户等待,使用ProgressBar或者ProgressDialog,别让用户感觉程序“卡死”
在前端方面:
1:减少http请求,采用推送机制
2:资源的合并压缩处理,CSS Sprites 合并CSS图片,Inline Images 使用data: URL scheme的方式将图片嵌入到页面或CSS中
3:脚本底置
4:使用浏览器缓存。
5:在首次载入页面时加载html,之后再加载js。
6:使用HTML5和CSS3.0简化页面
在服务端方面:
1.尽量做好数据库设计,从设计上考虑减少网络请求次数
业务设计优化:
1:一切基于云配置。(重要的是云配置参数)
2:采用组件化设计,开发,动态加载
3:网络通信模块封装,返回数据统一处理(JSON-Mode)
补充:
请参考如下链接:移动端网络优化