优化Mobile网络传输

优化Mobile网络传输

Mobile网络程序最应该重视的网络传输的效率,用户最不能忍受的是看到loading标志一直在那里转啊转。

我们的Mobile程序当前网络体验并不够好,要在网络传输效率上需要做很大的优化,可以在以下几点做文章:

1. Feed分割,把大文件变成一系列小文件。下个赛季我们将把所有的Feed都整理一下,整个服务器端可能要重写。

2. 传输时候采用Gzip压缩。这个已经在NBA程序中实现了,目前服务器端还不支持,所以还没有效果。

3. 客户端建立Feed缓存。建立缓存不难,建立缓存后需要解决的问题是刷新时数据究竟从服务器取还是从缓存中取,这个问题可以这样解决: 刷新时先建立HTTP连接,取得HTTP头,根据HTTP头中的Last Modified属性来确认缓存中的数据是不是最新的,(即比较HTTP头Last Modified中的时间和缓存中相应数据的时间);如果缓存中的内容已经是最新的,那么立刻断开连接,不传输正文,然后取用缓存中的数据;如果缓存中的内容不是最新的,那么取HTTP正文数据来刷新页面。

以上我觉得是优化Mobile网络体验的最为可行的方法,对非Mobile的网络程序或许也有一定的借鉴意义。

关于#3,HTTP提供了检测本地缓存Feed是否过期的支持,请求时在Header加上”If-Modified-Since:本地缓存Feed的Last-Modified时间”。如果服务器上Feed的Last-Modified时间大于本地缓存Feed的Last-Modified时间,那么服务器会返回新的Feed;否则服务器会返回一个304状态码,表示内容未更新。