常见的SPA首屏优化方式
2024-09-08 18:12:09
核心是加载和解析的性能优化
- 加载优化的核心是资源体积和首屏资源数量。
- 解析优化的核心是资源体积和代码的执行性能。
加载优化
Code Splitting = webpack bundle analyzer + CommonsChunkPlugin + 分析
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: ({ resource }) => (
resource &&
resource.indexOf('node_modules') >= 0 &&
resource.match(/\.js$/)
),
}),
- 启用CDN加速;
- 静态资源分域名,将图片、音视频等静态资源放到不同的域名加载,避免加载时收到浏览器并发数量限制(http/1.0);
- 合理采用DNS预解析,因为DNS解析寻址比较耗时;
- 尽量启用http/2,需要nginx支持,http/2特点是使用多路复用,对同一个域的服务器只建立一次TCP连接,加载多个资源,使用二进制帧传输,同时会对http头部进行压缩;
解析优化
- 资源体积的优化,比如压缩字体、图片、音视频等静态资源体积;
- 最大化利用webpack的Scope Hositing以及Tree Shaking技术,按需加载,尽量使用ES Module方式去组织代码,选择第三方代码的入口点(resolve.mainFields);
// Scope Hositing https://www.cnblogs.com/tugenhua0707/p/9735894.html
module.exports = {
resolve: {
// 针对 Npm 中的第三方模块优先采用 jsnext:main 中指向的 ES6 模块化语法的文件
mainFields: ['jsnext:main', 'browser', 'main']
},
plugins: [
// 开启 Scope Hoisting 功能
new webpack.optimize.ModuleConcatenationPlugin()
]
};
- 利用异步方式延迟加载(按需加载)非首屏资源;
- 利用webpack的CommonsChunkPlugin分包,提取公共代码;
运行性能优化
- Code Review
最新文章
- ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换
- E1、T1链路
- C++调用shell
- js类(继承)(二)
- HDU 4533 威威猫系列故事——晒被子
- Structs 原理图
- 【Xamarin挖墙脚系列:多窗口之间的导航】
- chrome如何添加扩展程序xss encode
- ERP流程图
- 【T】并行调度
- DNS分析之 dnsdict6 使用方法
- 理论篇-Java中一些零碎的知识点
- 阿里云服务器Linux CentOS安装配置(11)安装Wordpress
- 修复Microsoft Store 无法连接网络 代码: 0x80072EFD
- 使用kubeadm 离线安装 单master k8s 1.13
- Sublime Text 2 绿化与汉化 [Windows篇]
- 酱油 Noip2018颓废记
- saltstack 开发
- Modsecurity原理分析--从防御方面谈WAF的绕过(一)
- 【BIEE】03_BIEE数据源配置