移动开发 网络流量精简攻略

作为一名移动开发者,在过去的几年里也做过不少的项目,今天就来写一篇浅薄的节省网络流量的文章,希望这篇文章对所有的移动开发者,以及接口的服务端开发者都有帮助。

为什么要精简?(Why)

1.节省用户的流量。

因为用户的流量可能是要付费的,为用户节省流量是每一个移动开发者应当牢牢记住的原则之一

2.提高网络数据加载速度。

流量精简了,接口获取数据的速度会有提升,应用的一些页面加载速度可以提升,这点我想大家也都能理解

3.减轻服务器压力。

通过优化接口,减少数据量,可以提高服务器的利用率,减少服务器并发压力,一次请求连接占用2S和占用20ms对服务器来说是很大的不同

如何精简?(How)

1.网络接口API定义精简

(a)接口定义:

在接口的设计阶段,精简非内容的字段体积,如"productionDescription":"产品介绍xxx"可精简为"pdDes":"产品介绍xxx";删除与内容无关的字段,现在发现还有好多接口返回类似"name":null这样的字段,其实这种数据完全可以过滤掉。

(b)请求优化:

有一些返回数据变更不太频繁的接口,可以考虑添加版本号来进行状态标记,只有当接口发送变化时才返回新数据,否则直接返回未变化让客户端使用缓存;或者当检测到状态发生变化时才去请求相应的数据接口,否则不处理也是一个不错的减少对服务器请求的方式。

2.使用压缩技术

(a)对于文本数据,启用GZip进行数据压缩是很好的选择,对于文本数据的压缩能达到80%,笔者之前有一个接口返回300K的数据,开启压缩后只有80k,效果明显。在提交数据时也可以使用压缩处理。

(b)对于图片数据,使用谷歌的WebP格式会极大的减小图片尺寸,经过测试,相同清晰度下,WebP格式是JPG格式的体积的30-40%左右,举例来说,300K的JPG格式图片,采用WebP格式进行传输大约只要90K。需要注意的是WebP格式在某些平台和浏览器下是默认不支持的,可能需要相应的库来支持,但是为了节省流量还是值得的。

3.充分利用缓存

缓存使用的原理相信大家都知道,通过之前存储数据到本地,在需要时通过判断,不再请求服务器的相同数据,直接从本地读取出来使用。

但是在缓存中有一个大家伙:图片。如果你的应用中有较多的图片使用,一定要好好研究图片的缓存使用,一般开发者自己请求图片的,可以按照缓存策略完成。但是客户端中有一些特殊的页面容易被大家忽略,如客户端中的webview中的图,就需要开发者通过一定的手段,把webview和你的缓存策略结合起来,达到完美的图片缓存使用。关于iOS下的图片缓存与WebView的结合,后续会再写一篇详细的文章介绍。

这篇文章总体来说比较泛,点出一些关键的点,希望能对开发者有所启发。

时间: 2024-08-26 00:29:20

移动开发 网络流量精简攻略的相关文章

移动端前端开发真机调试攻略

移动端前端开发真机调试攻略 一.IOS 移动端 (Safari开发者工具) 手机端:设置 → Safari → 高级 → Web 检查器 → 开. mac端:Safari → 偏好设置 → 高级 → 在菜单栏中显示“开发”菜单. 在 OS X 中启动 Safari 之后,以 USB 电缆正常接入 iOS 设备,并在此移动设备上启动 Safari.此时点击计算机上的 Safari 菜单中的“开发”,可以看到有 iOS 设备的名称显示,其子菜单项即为移动设备上 Safari 的所有标签页,点击任意一

android开发新浪微博客户端 完整攻略 [新手必读]

开始接触学习android已经有3个礼拜了,一直都是对着android的sdk文档写Tutorials从Hello World到Notepad Tutorial算是初步入门了吧,刚好最近对微博感兴趣就打算开发个android版本的新浪微博客户端作为练手项目,并且以随笔的方式详细的记录开发的全过程.本人对java语言以及eclipse Ide都是初次应用基本上属于边学边用,做移动设备上的东西也是第一次,总的来说属于无基础.无经验.无天赋的纯三无人员,还请广大同学们多多给予指点. 开发第一件事情,那

Android 开发命令行完全攻略

作为命令行的爱好者,我想写这个主题已经有好一段时间了.除了显得很酷之外,命令行的使用能够提高我们的开发效率,因为相比通过鼠标点击一系列的菜单选项,使用键盘输入几个字符并点击 TAB 健显然会快很多. 本文的目的是跟大家分享在我的 Android 开发实践中对命令行的运用. iTerm2 由于我们将会在命令行中进行后续的工作,因此如果能够安装一个比系统默认命令行更好的工具那显然是不错的,那么请下载 iTerm21 吧! iTerm2 将命令行带入了现代化时代,提供了很多你一直想要的特性.其中包含了

安卓开发环境安装全攻略!

一.安装java的JDK 1.安装软件 1.jdk_7.0.70.10_windows_x64_XiaZaiBa.RAR 2.设置 (1).[右键我的电脑]--[属性]--[高级系统设置]--[系统属性]--[高级]--[环境变量]-- [PATH] PATH   .;%JAVA_HOME%\bin; (2).新建系统变量 JAVA_HOME  C:\Program Files\Java\jdk1.7.0_07 (3).开始--运行: cmd javac 显示命令,就是成功! 二.安装Andri

2014下半年网络工程师考试攻略

不喜勿喷. 上午题较往年新增很多知识点,网络技术占了大半,总体来说考试题目不难,得分不容易,内容很基础,覆盖广. 上午题全是选择,照往年更为灵活,更贴近实际 1,计算机的组成,每个部件的作用:数据运算要掌握二进制和十六进制的转化 2,操作系统,虚存管理,进程管理 3,知识产权肯定会考一道题 4,网络体系结构,TCP/IP协议族,各种协议族,网络系统设计一题 5,数据通信基础,数字编码,通信标准 6,局域网技术,所有的内容都要好好看 7,广域网和接入网技术,ADSL等 实例考题:在地面上相距200

图像识别DM8127开发攻略——序

DAVINCI(ARM+DSP)开发攻略已经整整两年多没写东西了,自从写完DAVINCI DM3730的开发攻略,就基本没什么精力去写,一直在忙DM3730平台客户定制的产品设计和大规模量产的任务. 2015年-2016年-2017上半年爆炸性的出货,公司只好全力去支持大客户,保证产品的质量.还有得了一个可爱的小宝宝,里里外外的事情重重压过来,不得不去处理,结果博客和公司网站基本处在停止更新状态,毕竟这年头大环境是实业误国,投机"兴邦",在这种情况下科技公司全力赚点伙食费不容易,所以博

DAVINCI DM3730开发攻略——应用程序例程分析

过完2015年春节回来了,利用上班前的几天时间,先把这篇文章写完,本来是先写<DAVINCI DM3730开发攻略--linux-2.6.32移植>,但是那篇文章涉及内核的东西太多,不太好写,而本人已经很长时间没写新文章了,先发布这篇文章.后来想了想,从应用程序使用的角度分析,再一步一步深入内核里边去,也许更好. 前面几篇DM3730开发攻略讲到:一个DAVINCI  DM3730板子程序由xload,uboot, linux-2.6.32或者(linux-2.6.37),文件系统rootfs

FPGA开发全攻略——配置电路

原文链接: FPGA开发全攻略连载之十二:FPGA实战开发技巧(9) FPGA开发全攻略连载之十二:FPGA实战开发技巧(10) FPGA开发全攻略连载之十三:FPGA实战开发技巧(11) 5.5 FPGA相关电路设计知识 FPGA的相关电路主要就是FPGA的配置电路,其余的应用电路只要将外围芯片连接到FPGA的通用I/O管脚上即可. 5.5.1 配置电路 FPGA配置方式灵活多样,根据芯片是否能够自己主动加载配置数据分为主模式.从模式以及JTAG模式.典型的主模式都是加载片外非易失( 断电不丢

FPGA开发全攻略——时序约束

原文链接: FPGA开发全攻略连载之十二:FPGA实战开发技巧(5) FPGA开发全攻略连载之十二:FPGA实战开发技巧(6)(原文缺失,转自:FPGA开发全攻略—工程师创新设计宝典) 5.3.3 和FPGA接口相关的设置以及时序分析5.3.3.1 使用约束文件添加时序约束 一般来讲,添加约束的原则为先附加全局约束,再补充局部约束,而且局部约束比较宽松.其目的是在可能的地方尽量放松约束,提高布线成功概率,减少ISE 布局布线时间.典型的全局约束包括周期约束和偏移约束.在添加全局时序约束时,需要根