1,使用哪种交互模式跟业务对接?
block,delegate,notification,网络连通性需要用到通知
2,采用离散型还是集约型API调用方式?
AFN采用集约型调用,核心采用集约型做(加解密、URL拼接、API的起飞和着陆)、针对不同业务选择离散型调用方式实现(刷新列表、详情取消新发起请求、等待外面飞着的请求着陆,多维度筛选取消外面飞着的请求、执行新发起的请求)
离散型API调用方式对于翻页机制能简单提供loadNextPage去加载下一页。
3,交付什么样的数据给业务层?
NSDictionary:
模型:调试时查看数据内容不如NSDictionary只管,
reformer:对于不同View需要不同模型时,需要在离散型API中进行各个模型转换,赋值给不同View。
对于同一个View适配不同API数据时,需要在离散型API中对不同的dic转换成统一的模型。
4,采用什么样的安全策略?
加解密及签名、https
5,采用什么样的网络请求缓存?
API名称+参数拼成一个字符串然后去MD5作为key,存储对应返回数据。
可用于商品详情、APP皮肤等时效性比较长的场景。根据超时时间进行清理,或对应每个商品详情一个token,有变更时清理。用户手动清理。
下载的文件清理规则根据具体APP的操作日志来决定
6,怎样减少日志上报的次数,降低耗电量、提升网络层性能?
不需要每操作一次就发起一次请求,可以采用本地记录用户操作记录,当满30条时发起一次请求。APP启动时上传上次没上传的记录。
7,针对DNS域名解析怎么做优化?
直接用IP地址请求、每次启动时拉取IP列表,每个域名对应多个IP地址,存储到本地,启动时还需要用上一次缓存的IP列表取ping时间,取ping最小的IP作为今后发起请求的IP。
8,传输数据量的优化?
格式选择:JSON、protobuf
去掉无用数据
9,如果做链接复用?
建立链接本身属于比较消耗资源的操作,耗电耗时。如果后端支持SPDY可以使用SPDY,否则可以使用PipLine,目前业界更倾向于HTTP/2.0代替SPDY
网友评论