作为一名移动开发者,在过去的几年里也做过不少的项目,今天就来写一篇浅薄的节省网络流量的文章,希望这篇文章对所有的移动开发者,以及接口的服务端开发者都有帮助。
为什么要精简?(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的结合,后续会再写一篇详细的文章介绍。
这篇文章总体来说比较泛,点出一些关键的点,希望能对开发者有所启发。
原文地址:http://blog.csdn.net/u010124617/article/details/42261397