常见的SPA首屏优化方式
核心是加载和解析的性能优化- 加载优化的核心是资源体积和首屏资源数量。
- 解析优化的核心是资源体积和代码的执行性能。
加载优化
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
常见的SPA首屏优化方式的更多相关文章
- Vue SPA 首屏加载优化实践
写在前面 本文记录笔者在Vue SPA项目首屏加载优化过程中遇到的一些坑及优化方案! 我们以 vue-cli 工具为例,使用 vue-router 搭建SPA应用,UI框架选用 element-ui ...
- SPA 首屏加载性能优化之 vue-cli3 拆包配置
前言 现在已经是vue-cli3.x webpack4.x 的时代了,但是网上很多拆包配置还是一些比较低版本的. 本文主要是分享自己的拆包踩坑经验. 主要是用了webpack4 的 splitC ...
- angular 首屏优化
前一段时间把公司的一个angular项目做了一次大的优化,记录一下过程. 起因: 起因是用户反映网站加载时间过长,从loading画面显示到页面可响应要13s,对于一般的页面恐怕没有用户愿意等待这么久 ...
- Vue 单页应用 的 首屏优化
对于单页应用,要在一个页面上为用户提供产品的所有功能,在这个页面加载的时候,首先要加载大量的静态资源,这个加载时间相对比较长.所以我们需要做一些相应的优化,减少响应时间,尽快把首屏显示出来. 1.压缩 ...
- vue客户端渲染首屏优化之道
提取第三方库,缓存,减少打包体积 1. dll动态链接库, 使用DllPlugin DllReferencePlugin,将第三方库提取出来另外打包出来,然后动态引入html.可以提高打包速度和缓存第 ...
- vue.js 首屏优化
我们以 vue-cli 工具为例,使用 vue-router 搭建SPA应用,UI框架选用 element-ui , ajax方案选用 axios, 并引入 vuex ,使用 vuex-router- ...
- react 首屏性能优化
首屏优化点:1.加载包(bundle.js)文件的大小,越小,首屏渲染速度越快 (按需加载) 2.优先渲染用户直观看到的页面部分(懒加载) 技术点:react-loadable . react-laz ...
- 常见 Web 性能优化方式
这篇文章是我阅读 Web Performance 101 之后的进行的粗糙的翻译作为笔记,英语还行的童鞋可以直接看原文. 这篇文章主要介绍了现代 web 加载性能(注意不涉及代码算法等),学习为什么加 ...
- 移动 H5 首屏秒开优化方案探讨
转载bang大神文章,原文<移动 H5 首屏秒开优化方案探讨>,此文仅仅用做自学与分享! 随着移动设备性能不断增强,web 页面的性能体验逐渐变得可以接受,又因为 web 开发模式的诸多好 ...
- 技术干货:实时视频直播首屏耗时400ms内的优化实践
本文由“逆流的鱼yuiop”原创分享于“何俊林”公众号,感谢作者的无私分享. 1.引言 直播行业的竞争越来越激烈,进过2018年这波洗牌后,已经度过了蛮荒暴力期,剩下的都是在不断追求体验.最近正好在做 ...
随机推荐
- 华为MA5626和S2700重置密码
MA5626和S2700交换机,初始化密码遇到的问题. 主要目的把两台设备改成普通二层交换机. 一.MA5626交换机 1.进入设备,发现有密码. 帐号:root 密码:mduadmin 2.使用空配 ...
- vue node Failed at the iview-admin
npm ERR! iview-admin@1.3.1 dev: `webpack-dev-server --content-base ./ --open --inline --hot --compre ...
- 新的学习历程-python1 Hello World
1 print('hello world!') 2 if 2 > 0: 3 print('ok') 4 print('yes') 5 6 x = 3; y = 4 7 print(x + y) ...
- gitignore文件中忽略项不起作用的解决方法
在使用git的时候会遇到这样的情况,我们生产的一些class或者target的目录,我不能提交,这个时候我们需要使用gitignore,但是有的时候虽然添加了,但是不起作用. 情况:开发过程中,我们自 ...
- Docker之Redis保姆级别安装
Docker之Redis保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...
- 2022-04-29内部群每日三题-清辉PMP
1.在一价值200万美元项目的测试阶段,团队发现了一些缺陷.由于截止期限很紧,团队成员承认他们可能无法修复所有缺陷.若要确定应集中哪些工作,项目经理应该使用什么工具或技术? A.帕累托图 B.矩阵图 ...
- Java通过注解获取方法反射运行
//上下文 @Resource private ApplicationContext applicationContext; @Bean public void test(){ //扫描Control ...
- Centos 7 环境 安装todesk异常
按照todesk官网安装步骤安装. 其实就两步就完成了,在自己虚拟机centos7环境下测试一切正常,但正式环境centos7.9环境下能安装,但安装完打不开,感觉是内核版本的问题. Todesk-- ...
- Go--求数组奇偶数之和
package main //申明main包 import "fmt" // 导入fmt标准库 func main() { arr := [...]int{01, 11, 22, ...
- socket-消息发送实战
1. 函数用法 Handle.oobtainMessage(int what ,int arg1,int arg2,object obj) 2. 消息内容 3. 代码组合(隐私模式开关) 3.1 ...