vue项目打包部署后,首次访问响应时间过长解决方案
文章目录问题解决方案方案一:路由懒加载方案二:使用Gzip打包方案三:使用CDN引入资源,并更换为min版本问题今天部署vue项目到阿里云服务器上后,发现首次访问速度极慢,从开始加载到进到首页需要20S。不能忍…解决方案方案一:路由懒加载原来:更改后:这样路由就不会在刚进首页就开始加载,而是等用户点击里路由才会加载。响应效率提升:20S -> 10S方案二:使用Gzip打包...
·
问题
今天部署vue项目到阿里云服务器上后,发现首次访问速度极慢,从开始加载到进到首页需要20S。不能忍…
解决方案
方案一:路由懒加载
原来:
module.exports = file => resolve => require('@/views/table' + file + '.vue')
更改后:
module.exports = file => resolve => require(['@/views/table' + file + '.vue'], resolve)
这样路由就不会在刚进首页就开始加载,而是等用户点击里路由才会加载。
响应效率提升:20S -> 10S
方案二:使用Gzip打包
①先安装Gzip:npm install --save-dev compression-webpack-plugin
②在配置文件里修改(我使用vue-admin-template为模板,配置文件为vue.config.js):
configureWebpack: config => {
// 生产环境下使用gzip
if (process.env.NODE_ENV === 'production') {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
// 增加浏览器CPU(需要解压缩), 减少网络传输量和带宽消耗 (需要衡量,一般小文件不需要压缩的)
// 图片和PDF文件不应该被压缩,因为他们已经是压缩的了,试着压缩他们会浪费CPU资源而且可能潜在增加文件大小。
config.plugins.push(
new CompressionWebpackPlugin({
filename: '[path].gz[query]', // asset -> filename
algorithm: 'gzip',
test: /\.(js|css)$/,
threshold: 10240, // 达到10kb的静态文件进行压缩 按字节计算
minRatio: 0.8, // 只有压缩率比这个值小的资源才会被处理
deleteOriginalAssets: false // 是否删除压缩的源文件
})
)
}
}
再去nginx的/etc/nginx/nginx.conf里配置
http:{
gzip on;
gzip_static on;
gzip_buffers 4 16k;
gzip_comp_level 5;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
}
方案三:使用CDN引入资源,并更换为min版本
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="./favicon.ico">
<link href="https://cdn.bootcss.com/element-ui/2.13.0/theme-chalk/index.css" rel="stylesheet">
<title><%= webpackConfig.name %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= webpackConfig.name %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script src="https://cdn.bootcss.com/element-ui/2.13.0/index.js"></script>
<script src="https://cdn.bootcss.com/vuex/3.1.1/vuex.min.js"></script>
<script src="https://cdn.bootcss.com/axios/0.19.0/axios.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.1.2/vue-router.min.js"></script>
</body>
</html>
在index.html里引入自己需要的js和css
使用方案二与方案三后响应效率提升:10S -> 3S
3S还能接受,暂时就这样吧
更多推荐
已为社区贡献3条内容
所有评论(0)