session周期定义
从后台恢复回来(距离上一次进入后台时间差高于30秒)、重新启动都算一个新的session周期。
网络请求原则
1.记录一个session内是否有访问过的数据,具体是在程序内保存url访问记录表,一进入新session清空旧表;
2.在一个session周期内发出一个新请求:有缓存数据,先使用缓存数据显示界面(除非有特殊要求),然后请求网络更新数据以及缓存;没缓存数据,显示下拉头或Loading,网络数据回来后更新界面。
3.在一个session周期内发出一个旧请求:有缓存数据,先使用缓存数据显示界面(除非有特殊要求),不发出网络请求。没缓存数据,显示下拉头或Loading,网络数据回来后更新界面。
4.获取网络数据时,,如果数据没更新,只返回响应头304,不刷新页面。
5.Loading的显示策略是主展示内容加载完就应该去掉(如终端页加载完就要去掉,而不是等到评论、收藏等数据都拿到了才去掉)。
6.根据业务来定义请求等级,主界面显示的属于高等级(以资讯首页为例,其中包括首页的资讯列表,焦点图前两张,可见列表内的前面几张导读图),界面辅助显示的属于中等级,列表图片大部分属于低等级。具体可根据业务要求划分。
7.在不同session内,打开应用会主动刷新当前页面数据,当界面返回时,也需要刷新数据。
iOS优先级处理原则:
建立三个请求队列,请求分成高、中、低三种优先级;当有高等级请求时,更高等级的请求必须先做处理。同等级间的请求按队列处理。
1)当高等级请求正在处理时,低等级请求不会进行处理。
2) 当低等级请求已经正在处理,高等级请求进入,不会暂停当前请求。
| 协议 | 新session | 是否有缓存 | 是否先返回缓存 | 是否返回网络数据 | 网络异常时处理 | 可应用场景 | 备注 |
| PCHttpClientCachePolicyHttpCache | √ | 否 | 否 | √ | 为空 | 第一次打开 | 有缓存必须先返回缓存,再返回新数据,断网不处理 |
| PCHttpClientCachePolicyHttpCache | √ | √ | √ | √ | 为空 | 第一次打开 | 有缓存必须先返回缓存,再返回新数据,断网不处理 |
| PCHttpClientCachePolicyHttpFirst | √ | 否 | 否 | √ | 为空 | 第一次打开 | 有新数据时返回新的,否则返回缓存 |
| PCHttpClientCachePolicyHttpFirst | √ | √ | 否 | √ | 返回缓存 | 第一次打开 | 有新数据时返回新的,否则返回缓存 |
| PCHttpClientCachePolicyCacheFirst | 否 | 否 | 否 | √ | 为空 | 第二次打开的请求 | 有缓存时返回缓存,当没有缓存时才请求网络 |
| PCHttpClientCachePolicyCacheFirst | 否 | √ | √ | 否 | - | 第二次打开的请求 | 有缓存时返回缓存,当没有缓存时才请求网络 |
| PCHttpClientCachePolicyNoCache | - | 否 | 否 | √ | 为空 | 强刷或第二页加载 | 有新数据时才返回 |
| PCHttpClientCachePolicyNoCache | - | √ | 否 | √ | 为空 | 强刷或第二页加载 | 有新数据时才返回 |
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)