[RFC] 068 - 首屏性能优化 #4597
Replies: 5 comments 1 reply
-
还有一点,很多ts文件只用到注释的类型也用import导入了,如果全部改成 |
Beta Was this translation helpful? Give feedback.
-
Dexie 和 YJS 优化经过 #4641 的优化,server db 模式下的首屏体积来到 362kb ,
从上图中可以看到 dexie 和 yjs 相关的依赖已经没了,带来了 82kb 的体积下降。 |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
antd 相关依赖优化一开始试了直接注释 loading.tsx 的 Client 和 Redirect 组件,发现体积就降下来了,antd 相关的依赖也就没了。这表明 antd 的组件依赖引入来自 Client/Redirect。但分别注释后仍然发现存在 antd 相关依赖。但事实上 Client 和 Redirect 组件并没有直接引用 modal、message 等组件,是更上游的依赖方(例如 于是开了一个空仓库(https://github.com/lobehub/lobe-next-perf )来测试对比: 建了 /page.tsx 和 /reference/page.tsx 作为参照,打包后产物如下:
可以看到 / 比 /reference 大了 100k 左右,看下具体的产物分析 breakdown:
可以看到其中 message/modal/notification 组件都引入了,正是这三个组件和相关的依赖,带来了近 100k 的尺寸。所以需要针对性做优化。 |
Beta Was this translation helpful? Give feedback.
-
2024.12.24 再一次分析, client db 由于迁移到 pglite, 首屏 JS 尺寸来到了 497 KB 目前看有减小尺寸空间的有两块,一块是 上面的 antd 的部分,另外一块则是前面提到的 model list 这个将配合 #4859 这个一起来做 |
Beta Was this translation helpful? Give feedback.
-
背景
优化首屏加载性能
思路
基于 3b6432 commit (2024.11.03)的分析:
其中首屏 First Load JS 来到了 447 kb,这个应该是导致首屏加载比较慢的关键因素,看看可以怎么优化。
首先通过
npm run build:analyze
用 Webpack 来分析下构建产物:将base path 选成
app/page
就可以将入口设定为/
路径:产物预览如下:
可以看到首屏中有几个比较大体积的chunk (尺寸都按 gzip 来评估):
src/config/modelProviders
供应商配置文件;剩余比较小的模块就不列了,上述列下来的总体积大致已经有 270+kb ,如果优化上述部分的 chunk 尺寸,理论上应该能提升一波首屏加载速度。
上述核心 chunk 中,一眼看过去并不需要的依赖有:
这些是首屏不需要的,但都直接被引入,所以如果能将这些依赖在首屏加载时移除,那么应该能较大程度地提升加载速度。
Beta Was this translation helpful? Give feedback.
All reactions