vue-cli4首次加载速度优化代码
AI 概述
GZIP 压缩CDN路由懒加载
GZIP 压缩
GZIP 压缩有动态跟静态两种
可以将由前端打包GZIP,通过 gzip_static:on会寻找以.gz结尾的文件,直接返回,不会占用 cpu 进行压缩,如果找不到则不进行压缩
nginx
#开启和关闭 gzip 模式
gzip on|off;
#gizp 压缩起点,文件大于 1k 才进行压缩
gzip_min_leng...
目录
GZIP 压缩
GZIP 压缩有动态跟静态两种
可以将由前端打包GZIP,通过 gzip_static:on会寻找以.gz结尾的文件,直接返回,不会占用 cpu 进行压缩,如果找不到则不进行压缩
nginx
#开启和关闭 gzip 模式
gzip on|off;
#gizp 压缩起点,文件大于 1k 才进行压缩
gzip_min_length 1k;
# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用 CPU 时间
gzip_comp_level 5;
# 进行压缩的文件类型。
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript ;
#nginx 对于静态文件的处理模块,开启后会寻找以.gz 结尾的文件,直接返回,不会占用 cpu 进行压缩,如果找不到则不进行压缩
gzip_static on|off
# 是否在 http header 中添加 Vary: Accept-Encoding,建议开启
gzip_vary on;
# 设置压缩所需要的缓冲区大小,以 4k 为单位,如果文件为 7k 则申请 2*4k 的缓冲区
gzip_buffers 2 4k;
# 设置 gzip 压缩针对的 HTTP 协议版本
gzip_http_version 1.1;
vue.config.js
// npm i -D compression-webpack-plugin
const CompressionPlugin = require('compression-webpack-plugin')
configureWebpack: {
/* 打包时开启 GZIP 压缩 */
plugins: [
new CompressionPlugin({
algorithm: 'gzip', // 使用 gzip 压缩
test: /\.js$|\.html$|\.css$/, // 匹配文件名
filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名,后缀加.gz)
minRatio: 1, // 压缩率小于 1 才会压缩
threshold: 10240, // 对超过 10k 的数据压缩
deleteOriginalAssets: false, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非 gzip 的资源,可不设置或者设置为 false(比如删除打包后的 gz 后还可以加载到原始资源文件)
}),
]
}
CDN
const isProd = process.env.NODE_ENV === 'production'
const cdn = {
externals: {
// 业务使用示例 => key:包名 value:库文件对应的全局对象字符串=>可以冲源码最后获取
vue: 'Vue',
'vue-router': 'VueRouter',
vuex: 'Vuex',
axios: 'axios',
'ant-design-vue': 'antd',
'vue-ls': 'VueStorage',
},
// import 的 css 不要放进来,externals 无法过滤掉
css: [],
js: [
'//unpkg.com/vue@2.6.12/dist/vue.min.js',
'//unpkg.com/vue-router@3.4.9/dist/vue-router.min.js',
'//unpkg.com/vuex@3.5.1/dist/vuex.min.js',
'//unpkg.com/axios@0.21.0/dist/axios.min.js',
'//unpkg.com/ant-design-vue@1.7.2/dist/antd.min.js',
'//unpkg.com/vue-ls@3.2.1/dist/vue-ls.min.js',
]
};
configureWebpack: config => {
config.externals = isProd ? cdn.externals : {}
},
chainWebpack: config => {
config.plugin('html').tap(args => {
// html 中添加 cdn
args[0].cdn = cdn
return args
})
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<link rel="stylesheet" href="//at.alicdn.com/t/font_1825329_krt0759dhsh.css" />
<!-- htmlWebpackPlugin.options.cdn 在 vue.config.js 内配置 -->
<!-- 使用 CDN 的 CSS 文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
<% } %>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- 使用 CDN 的 JS 文件 -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
</body>
</html>
路由懒加载
使用 ()=>import('xxx')懒加载路由组件,可以添加magic comments,打包后会单独生成chunk.[hash].js文件,进一步减小主包大小
// Magic Comments 详情查看下方链接
// https://webpack.docschina.org/api/module-methods/#magic-comments
{
path: '/login',
name: 'login',
component: () => import(/* webpackChunkName: "my-chunk-name" */'@/views/login/Login'),
hidden: true,
},
以上关于vue-cli4首次加载速度优化代码的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » vue-cli4首次加载速度优化代码
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » vue-cli4首次加载速度优化代码

微信
支付宝