记得这是阿里校招笔试的一道问答题
答案是小伙伴们之后一起拼出来的,不乏有些飘忽的东西,须要的朋友能够做个參考(详细细节能够自行百度)。欢迎提出更好的建议。
在client方面:
1.降低网络请求的数量。可以合并的网络请求尽量合并。尽量在一次查询中完毕多个零散数据的查询
2.为网络数据做本地缓存处理
3.设置超时时间。数据压缩传送。比方从server端获取列表数据。假设能够最好是能将server端的流压缩一下。接收压缩流,这样速度会快点,并且省流量。
3.多线程处理,不要死等网络操作的结果,把耗时工作及计算放在子线程中
4.client请求数据尽量精简,须要哪些数据请求哪些数据,拉取数据分页查询、使用时间戳、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)
补充:
请參考例如以下链接:移动端网络优化