iOS网络_优化请求性能

一,度量网络性能

1,网络带宽

用于描述无线网络性能的最常见度量指标就是带宽。在数字无线通信中,网络带宽可以 描述为两个端点之间的通信通道每秒钟可以传输的位数。现代无线网络所能提供的理论带宽是很高的。不过请记住,运营商与网络设备提供商引用的带宽数字常常是 该项技术的理论最大值,网络设备使用的实际带宽可能与这个最大值之间存在很大的偏差。

2,网络延迟。

度量网络性能的第2个因素是网络延迟,指的是网络包在两个端点间一次往返所需的时 间。无线运营商很少会提到网络的延迟数据,不过延迟却会对应用的实际性能造成很大影响。与带宽一样,有很多因素会影响到应用遭受的延迟情况。主要因素就是 用于将设备连接到外界的无线网络技术本身的延迟。

3,设备电量。

iOS设备的运行通常使用的都是电池,应用采取的每个动作都会消耗电量。iOS设备上电量的使用大户主要有:

1)屏幕显示与背光。

2)位置服务。

3)wifi-无线电.

4)WWAN(蜂窝)无线电。

5)图形处理器

6)CPU

7)蓝牙无线电

8)声音处理器。

除了屏幕显示之外,应用能够控制上面的大多数。

二,优化网络操作。

1,减少请求带宽。

1)JSON与XML是用于请求与响应体的常见的数据编码方式。压缩模式的效率在很大程序上取决于待压缩的数据,不过通常情况下JSON都是一种更为高效的模式。

2)Web浏览器对请求压缩的支持并不太好,因为浏览器不知道目标服务器是滞能够支持对请求的解压缩。如果服务器无法理解压缩模式,那么请求就会被丢弃,客户端应用将无法得到响应。

3)与响应压缩一样,客户端不应改将CPU时间浪费在压缩如PDF,加密数据,图 像,音频及视频等已经压缩的内容上,然而,代表预先压缩的数据的Base64数据常常会从请求压缩中获益。比如,如果要以Base64格式上传JPEG文 件,那么可以对Base64数据进行压缩,相较于未压缩的Base64数据,压缩后的数据体积会降低30%左右。

2,降低请求延迟。

1)实现上,在iOS设备上,我们没有办法降低单个网络请求的延迟,不过可以通过一些技术来降低多个请求的延迟。

2)降低请求延迟有两项最佳实践:在单个TCP连接上发送HTTP请求,以管道的形式发送HTTP请求,从而优化全双工TCP连接的使用。

3)Apache和IIS都支持管道,无需任何额外的配置。

3,避免网络请求。

1)通过HTTP缓存机制的基本原理,在iOS应用中利用这些规则,可以在本地缓存内容以避免不必要的网络流量。

2)HTTP被设计作为浏览器与服务器之间的通信,缓存机制也是针对这种使用模式的。iOS提供了一种机制来利用标准的HTTP缓存,以及采取相应的行为。通过NSURLRequest发出的每个请求都会经过缓存组件。该组件是NSURLCache或其子类的实例。

3)在iOS中有一种奇怪的现象,即在某些情况下,应用中的系统组件会将缓存的内存容量设为0,这就禁用了缓存。解决无法解释的行为的一种方式就是通过自已的实现子类化NSURLCache。拒绝将内存缓存大小设为0.

三,iOS用户都希望应用能够立刻响应每个请求。

移动产业有这样一条原则,即屏幕 越小,用户越没耐心。提供让用户乐于使用的应用意味着要珍惜用户的时间,就像珍惜你自己的时间一样。通过压缩请求与响应来优化应用所使用的带宽,通过管道 化请求避免不必要的延迟,甚至通过缓存响应来避免冗余的网络请求都会加速应用并改进用户体验。

iOS网络_优化请求性能的更多相关文章

  1. 【读书笔记】iOS网络-优化请求性能

    一,度量网络性能 1,网络带宽 用于描述无线网络性能的最常见度量指标就是带宽.在数字无线通信中,网络带宽可以描述为两个端点之间的通信通道每秒钟可以传输的位数.现代无线网络所能提供的理论带宽是很高的.不 ...

  2. 【读书笔记】iOS-网络-优化请求性能

    一,度量网络性能 1,网络带宽 用于描述无线网络性能的最常见度量指标就是带宽.在数字无线通信中,网络带宽可以描述为两个端点之间的通信通道每秒钟可以传输的位数.现代无线网络所能提供的理论带宽是很高的.不 ...

  3. IOS网络编程之请求内容

    资料均来自互联网,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 人魔七七:http://www.cnblogs.com/qiqibo/ 一个http请求只要由三 ...

  4. iOS网络之数据请求GET和POST

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  5. iOS网络开发-AFNetworking请求asp.net WebService

    看到园子有位朋友需要使用AFN框架请求 WebService,所以就整理了一下,demo下载链接在底部 编写WebService可以看这篇博客 http://www.cnblogs.com/linmi ...

  6. ios网络:应用一个请求的7个步骤

    Splitting big tasks into small tasks is often one of the best ways to solve a problem. Thus, in the ...

  7. iOS网络高级编程:iPhone和iPad的企业应用开发(书籍学习)

    作者:Jack Cox.Nathan Jones.John Szumski 译者:张龙  勘误  前言  第 I 部分 理解iOS与企业网络 这一部分从高层次概览了iOS网络以及针对移动网络架构的最佳 ...

  8. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  9. iOS网络加载图片缓存策略之ASIDownloadCache缓存优化

    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化   在我们实际工程中,很多情况需要从网络上加载图片,然后将图片在imageview中显示出来,但每次都要从网络上请求,会严重影响用 ...

随机推荐

  1. Android 升级脚本updater-script 的函数简单介绍

    这是Android系统来执行updater-scripts中的函数介绍. 函数都是的Edify语言.当调用这些函数结束的时候.会返回数据给脚本.当然,你也能够使用这些函数的返回值来确认成功与否,比如: ...

  2. Element学习

    生成 HTML 文档初始结构 HTML 文档的初始结构,就是包括 doctype.html.head.body 以及 meta 等内容.你只需要输入一个 “!” 就可以生成一个 HTML5 的标准文档 ...

  3. Java动态加载属性文件.properties

    当我们使用如下语句加载.properties时: ClassLoader classLoader = this.getClass().getClassLoader(); Properties prop ...

  4. javascript 跳出(终止)forEach循环

      javascript 跳出(终止)forEach循环 CreateTime--2018年4月23日17:58:12 Author:Marydon 报错信息: 解决方案: javascript 跳出 ...

  5. 通过Java发送邮件和接收邮件的工具类

    一.第一种 使用SMTP协议发送电子邮件 第一步:加入mail.jar包 (1)简单类型 package com.souvc.mail; import java.util.Date; import j ...

  6. cygwin完全安装步骤方法(组图)

    我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin.com/ 或者直接使用下载连接来下载安装程序,下载连接是: http://www.cygwin ...

  7. Swift调用OC和C

    Swift文件:main.swift import Foundation //Swift调用C函数 desc1() //Swift调用OC //拿到OC类 var funcClass = Root() ...

  8. Mybatis中的@SelectKey注解

    一.创建Maven项目 在pom.xml中,添加mybatis依赖,mysql-jdbc依赖,把编译版本改为1.8 你问,为啥mybatis不会自动依赖mysql-jdbc,需要手动写明?答:因为my ...

  9. Java中的资源文件加载方式

    文件加载方式有两种: 使用文件系统自带的路径机制,一个应用程序只能有一个当前目录,但可以有Path变量来访问多个目录 使用ClassPath路径机制,类路径跟Path全局变量一样也是有多个值 在Jav ...

  10. Java Socket 编程之Socket与ServerSocket的区别

    http://www.cnblogs.com/hq-antoine/archive/2012/02/11/2346474.html 1.1 ServerSocket类    创建一个ServerSoc ...