核心是加载和解析的性能优化
  • 加载优化的核心是资源体积和首屏资源数量
  • 解析优化的核心是资源体积和代码的执行性能

加载优化

  Code Splitting = webpack bundle analyzer + CommonsChunkPlugin + 分析
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: ({ resource }) => (
resource &&
resource.indexOf('node_modules') >= 0 &&
resource.match(/\.js$/)
),
}),
  1. 启用CDN加速;
  2. 静态资源分域名,将图片、音视频等静态资源放到不同的域名加载,避免加载时收到浏览器并发数量限制(http/1.0);
  3. 合理采用DNS预解析,因为DNS解析寻址比较耗时;
  4. 尽量启用http/2,需要nginx支持,http/2特点是使用多路复用,对同一个域的服务器只建立一次TCP连接,加载多个资源,使用二进制帧传输,同时会对http头部进行压缩;
 

解析优化

  1. 资源体积的优化,比如压缩字体、图片、音视频等静态资源体积;
  2. 最大化利用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()
]
};
  1. 利用异步方式延迟加载(按需加载)非首屏资源;
  2. 利用webpack的CommonsChunkPlugin分包,提取公共代码;
 

运行性能优化

  1. Code Review
 

最新文章

  1. ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换
  2. E1、T1链路
  3. C++调用shell
  4. js类(继承)(二)
  5. HDU 4533 威威猫系列故事——晒被子
  6. Structs 原理图
  7. 【Xamarin挖墙脚系列:多窗口之间的导航】
  8. chrome如何添加扩展程序xss encode
  9. ERP流程图
  10. 【T】并行调度
  11. DNS分析之 dnsdict6 使用方法
  12. 理论篇-Java中一些零碎的知识点
  13. 阿里云服务器Linux CentOS安装配置(11)安装Wordpress
  14. 修复Microsoft Store 无法连接网络 代码: 0x80072EFD
  15. 使用kubeadm 离线安装 单master k8s 1.13
  16. Sublime Text 2 绿化与汉化 [Windows篇]
  17. 酱油 Noip2018颓废记
  18. saltstack 开发
  19. Modsecurity原理分析--从防御方面谈WAF的绕过(一)
  20. 【BIEE】03_BIEE数据源配置

热门文章

  1. springboot AOP配置
  2. S-HR常用源码
  3. 0627.selenium请求库*2
  4. python列表循环中删除元素
  5. Datax-web入门配置与启动
  6. vue组件自调用
  7. python web自动化-文件上传-亲身实践
  8. Spring Boot--自定义异常类
  9. memoの关于Qt的一些用法记录
  10. 第八章用matplotlib、seaborn、pyecharts绘制散点图