一个可以承载千万级日活的App在代码层面有哪些需要注意的地方

001 容错机制

思路利用swizzle机制在NSArray 分类+load()方法涉及到元素访问等方法进行混淆,对索引进行拦截判断

002 布局方式固定,可以预排版

通过预判版可以有效减少卡顿的出现,让CPU GPU有更多的资源来处理数据解析和控件渲染

003 利用多线程组,将首页多个网络请求操作合理调配

dispatch_group_t 将一些操作 enter 或者leve

可以利用dispatch_source_t 资源调度来生成更加精确的定时器,相比NSTimer,它不需要依赖于runloop,从源码代码看它是基于内核时针调度关键词os_auto

可以用dispatch_semaphore_t 信号量来最大并发量 ,通过dispatch_semaphore_wait -1 dispatch_semaphore_signal +1来控制

也可以利用NSOperationQueue

004 业务模块之间耦合度要低

最好是各个模块老死不相往来,通过中介模式将两者跳转串起来

005 产业务稳定的情况下组件化拆分

组件化是业务模块成熟稳定的标志,先一个路由模块将各大模块通过key-value的方式注册,通过target-action将通过路由将不同模块之间连接起来,传递参数给另一个模块。

那么以后开发的时候 开发着就专注于自己模块的开发,通过POD的的形式将开发的模块集成到目标的项目中这样就可以适配各种项目已达到快速部署的目的。

006 与服务器端需要引入心跳以及退出指令

因为大量用户在线链接到服务器,服务器的负载会增大,通过客户端与服务器商定好每隔一段时间的给服务器发送心跳就说明服务器和客户端是链接的,那么服务器就不会将该链接清除,退出指令发送给服务器那么服务器就不用等待那几秒就可以立马断开,将宝贵的资源分配给正在连接的用户。

007 大量图片缓存处理机制设定最大缓存size定期清空缓存

// Setting disk cache     
[[[SDImageCache sharedImageCache] config] setMaxCacheSize:1000000 * 20]; // 20 MB

// Setting memory cache 
[[SDImageCache sharedImageCache] setMaxMemoryCost:15 * 1024 * 1024]; // aprox 15 images (1024 x 1024)

008 网络层面进行优化

研究TCP UDP HTTPS协议。

009 内嵌WebView 加载速度提升

1.CDN加速

2.在本地缓存衣服HTML CSS布局,加载的时候求专注JS调用资源和WebView渲染

3.获得的服务器HTML CSS等代码直接注入到WebView

4.可以查看掘金字节技术博客

010 代码注释清晰易于维护

这是一个成熟程序员的标配

011 项目模块分层清晰

这是一个成熟高级程序员的标配

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值