美文网首页
开单章记录下

开单章记录下

作者: 普通青年 | 来源:发表于2017-08-17 15:53 被阅读13次
    图片来自网络

    困扰一个多月的bug 终于解决了,感觉整个人都升华了,一个字爽。这里单章记录下。
    当然在此特别鸣谢 -- 我的的小伙伴yuki 两个人都在坑里待了好久好久。。

    bug的前世今生

    需求: 类似微信朋友圈动态,里面涉及到动态内容, 动态九宫格,评论展示
    复现: 加载多条带有多张图片的动态 造成crash

    fix 的各种姿势

    • SDWebImage的问题 memory暴涨 耗电量very high disk读写操作频繁
    • YYWebImage的问题 cpu超负荷 占比20多 耗电量very high disk读写操作频
    • TableViewCell 复用问题 更改布局方式 xib与纯代码
    • 行高缓存的问题 第一次加载Cpu大量计算 NSCache 作为 cache storage 动态id作为cache key 。产生新数据如评论重新计算替换原有行高。也用过相关第三方FDTempleteCell
    • 滚动结束时候,实现scrollView的代理方法,加载数据 但是可能体验并不友好,会出现空白 以及过多的占位图片
    • 按需加载,未实现,思路简单说就是加载滚动结束index 前后x条数据
    • 圆角处理, 在Layer上操作 避免GPU损耗 离屏渲染
    • 预估行高 iOS8出现的动态行高计算 一般不是太复杂的页面足够用了
    • 加载下一页数据的时候清空SDWebImage的Cache 停止所有download cache任务
    • 控制Cache的大小 图片缓存限制xx张数 控制最大异步并发数量(当时考虑到可能多条线程开销过大导致性能损耗)

    当!当!当! bingo ! pabo!

    • 代码能做的优化还是有限的
    • 下载charles 抓数据看看图片大小
    • 不看不知道 一看一条动态(9张图片)居然有10M多 手动滑稽
    • 原来真相只有一个:我们加载是原图(大图) 哈哈哈。。。。咳。。 咳。。。。
    • 后台返回缩略图用于列表展示 大图用于照片查看器查看

    Alright! The bug was finally fixed.

    后记:

    • 基础不扎实, 定位问题能力有待加强
    • 当初就考虑到抓包看看, 最后钻牛角尖一直是以为代码问题
    • When you have eliminated the impossibles,whatever remains,however improbable,must be the truth. Yes, fact only one.

    相关文章

      网友评论

          本文标题:开单章记录下

          本文链接:https://www.haomeiwen.com/subject/wcfnrxtx.html