1 路由懒加载
2 CDN
- Vue 项目打包后的 vendor.js 过大,将导致打包速度慢,首屏加载慢 。其原因是第三方库如(vue、vue-router、vuex、axios等)都会被打包到 vendor.js 文件里面,而浏览器是在加载该文件之后,才开始显示首屏的。
- CDN优化
- 把第三方库如(vue、vue-router、vuex、axios等)通过cdn的方式引入到项目中。这样浏览器可以开启多个线程,将vendor.js、外部js、css等加载下来使得vendor.js文件减少,从而提升首屏加载速度。
- cdn会根据用户ip用最近的节点给用户返回数据,
3 gzip
webpack
配置生成gzip
压缩的文件,即将将大文件压缩成gzip
的格式
- 安装:
npm install --save-dev compression-webpack-plugin
vue.config.js
const CompressionWebpackPlugin = require("compression-webpack-plugin");
// 可加入需要的其他文件类型,比如json
// 图片不要压缩,体积会比原来还大
const productionGzipExtensions = ["js", "css"];
module.exports = {
configureWebpack: config => {
if (process.env.NODE_ENV === "production"){
return {
plugins: [
new CompressionWebpackPlugin({
// filename: '[path].gz[query]',
algorithm: "gzip",
test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
threshold: 10240, //对超过10k的数据进行压缩
minRatio: 0.6 // 压缩比例,值为0 ~ 1
})
]
};
}
}
};
- 打包完的
js/css
文件,都会多一份对应的gzip
文件,部署的时候需要配置一下,启用gzip
,这样支持gzip
压缩的浏览器请求的就是压缩文件,不支持的浏览器请求的就是源文件,gzip
压缩文件体积会小很多。
- 客户端请求头中
Accept-Encoding:gzip
来标识对压缩的支持。即http请求头声明浏览器支持的压缩方式
- 服务端配置启用压缩,压缩的文件类型,压缩方式。
- 客户端请求到服务端,服务器解析请求头,如果客户端支持Gzip压缩,响应时对请求的资源进行压缩并返回给客户端,浏览器按照自己的方式解析。
4 uglifyJsPlugin
- uglifyJsPlugin 用来对js文件进行压缩,从而减小js文件的大小,加速load速度
- uglifyJsPlugin会拖慢webpack的编译速度,所有建议在开发简单将其关闭,部署的时候再将其打开。
5 chainWebpack
- 压缩和分割代码
chainWebpack: config => {
config.optimization.minimize(true)// 开启压缩js代码
config.optimization.splitChunks({ // 开启代码分割
chunks: 'all'
})
},