继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

我是如何将我的应用大小从75MB减少到34MB的!!

慕侠2389804
关注TA
已关注
手记 413
粉丝 55
获赞 156
🕜 传说

所以我最近被 Neurobrdige Tech. 雇佣为高级移动应用开发人员,负责开发和领导他们的旗舰应用 Chanakya AI 的端到端产品开发!

想试试这款应用吗?
下载 Android
下载 iOS

现在他们已经发布了应用,用户也在大量使用它。但当时应用的大小约为75MB,所以自然地我们在性能、扩展性等方面遇到了一些问题,但我们将在下一篇文章中讨论这些问题。

回到背景故事,现在作为一个行业标准的简单应用,不应在客户端进行任何复杂的处理或包含30-40个重型动画屏幕,应用大小不应超过25 MB;但由于我们使用了服务器端事件处理和一些高级功能,35 MB是可以接受的。

![](https://imgapi.imooc.com/66f8b15b082b03f608000458.jpg)

但这里我们有一个巨大的 Chungas 75MB 小行星毁灭器!!

实现.....

我首先确定了我们在哪些地方使用了空格。经过一番仔细的查看(我对代码库感到非常头疼),我发现整个应用需要重构,采用更好的编码实践和更优化的方式。
(有些地方已经无法挽救了)

frustated

重现(但更胜一筹)

因此,在从旧代码库中获得强迫症之后,我开始参考旧架构来构建新的架构。

现在是主要内容部分 -

1. 🛞 重新发明轮子

我注意到之前我们为功能相似度达80%的两个用户类型(已登录用户和访客用户)分别制作了不同的屏幕和组件。因此,我开始将这两个流程合并,以减少代码基础。

我删除了超过300个代码文件,将整个代码库的代码量减少了75%(从大约1500行代码减少到约350行)。

始终记住的一点是,如果两个或多个模块具有相同的基本功能超过70%,那么最好将它们保持在同一来源中,同时保持条件执行。

2. 🖼️ 收集器

在初创公司中,开发是一个快速的过程,我们经常会忘记删除任何不必要的文件或资产,这些可能会让我们的应用变得臃肿。

我分析并模块化了所有图像和资产,并删除了未使用的媒体,从而在打包资产时减少了大小。

3. ♾️ 域扩展 - NPM Install

随着经验的增加,你就会意识到如果某事可以手动完成,那就直接去做。

不要做那样的人 "再加一个模块吧,我随时都可以移除它"

即使你可以自己完成,也别为了每件小事都使用Node模块!这个家伙居然有3.5GB的Node模块(是的,真的有惊人的吉字节!)!

我不知道是怎么发生的,也不感兴趣去了解!

我所关心的只是将其精简到最小,同时重新创建大部分功能,并移除未使用的链接模块,因为即使在JS代码中未使用,原生链接模块也会被打包在一起。

4. 🦚 Geeta 方法 - 唯一的真实来源

在开发一个复杂且相互关联的应用程序时,我们常常忘记使其模块化并更具全球化。

之前我们直接将所有值、方法、函数等硬编码到相应位置,这导致了额外的编译和内存使用,从而导致了一个质量较差的产品。

我将每个可重用项(变量、字符串、函数、数据处理程序等)模块化,以确保所有内容仅初始化一次,然后可以通过引用使用。

✅ 结论

经过两周的重构和精心编写的代码,我们终于将应用的大小从75MB减少到了34MB。

一个更小的应用不仅运行更快,还在用户流量中扮演着关键角色。没有人想要一个庞大且运行缓慢的应用,每个人都喜欢保持应用小巧、快速和高效。

🎁 奖励内容(为什么不呢)

在保持应用大小最优的同时,我也使整个应用🚀性能提高了80%,并将网络请求减少了50%,最终导致了

  • 更好的服务器健康状况
  • 减少加载时间
  • 减少开销
  • 减少停机时间
  • 减少运行成本
  • 更好的可扩展性
  • 低延迟
  • 快速的UI/UX流程

听起来很酷对吧!
查看我的下一篇文章,看看我具体使用了什么方法使系统达到80%的效率,同时保持体积和依赖项最小!

感谢大家阅读!

在评论中表达一些爱意或问任何你想问的问题吧 :)

👋 下次见!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP