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