这类问题不仅是vue。因为是spa,而且所有的渲染都在脚本上,js执行需要时间。另外加载js也要时间,所以页面越大,加载时间越长,而且js执行的时间也长,dcl发生的时间点就更晚,所以会白屏
考虑解决办法
- 代码拆分。code split、动态import
- 多页面+单页面组合,不是整个网站都是同一个页面切换前端路由,酌情拆分一些其他页面作为新页面
- 直出ssr。使用ssr减少前端跑js的时间,逻辑放服务端处理把完整的页面返回
- 部分直出。使用ssr服务端压力会变大,所以可以把页面重要的部分先直出,非重要部分放前端
- 接入quicklink,实际上就是检查页面链接然后在浏览器空闲时间进行prefetch
- 接入service worker缓存,和ssr一起搭配使用更佳
- 体验上。增加lodaing、骨架屏
- 有了各种缓存,热启动是没什么问题了。最后要优化冷启动时间,使用prefetch
- 前端渲染上。使用raf渲染,不阻塞主线程。react里面已使用异步渲染
- 服务端rpc上。使用pb协议而不是文本协议
- 传输层使用quic协议传输。貌似没多少个团队用上~
- 常规操作。cdn、减少请求、雪碧图、gzip、浏览器缓存什么的就不多说了
最后分享两个最近在读的掘金小册,大牛果然还是人家的大牛,现阶段膜拜还是要有的,我读了感觉收货很大,推荐给我的读者小伙伴们。好看不贵还实惠(其实也是我的),大概就是人家掘金小册的定位了吧