Vue使用CDN與GZIP打包部署優(yōu)化
前言
當(dāng)我們前端使用了大量組件和頁面之后,打包會導(dǎo)致項(xiàng)目體積過大,這時(shí)候部署后訪問有時(shí)候就會出現(xiàn)首頁喧染慢等一些尷尬而又急人的情況。這個(gè)時(shí)候我們就需要對項(xiàng)目進(jìn)行優(yōu)化,例如uniapp可以分包加載,vue則可以cdn加載三方插件與gzip壓縮js文件
一、CDN
CDN應(yīng)用廣泛,支持多種行業(yè)、多種場景內(nèi)容加速,例如:圖片小文件、大文件下載、視音頻點(diǎn)播、直播流媒體、全站加速、安全加速
1.cdn方式引入
首先要進(jìn)入我們的public/index.html,網(wǎng)上有很多cdn加速節(jié)點(diǎn)可以選擇
<!-- vue三劍客 -->
<script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.2.0/vue-router.min.js"></script>
<script src="https://cdn.bootcss.com/vuex/3.2.0/vuex.min.js"></script>
<!-- 三方組件 -->
<script src="https://lib.baomitu.com/echarts/5.0.2/echarts.common.js"></script>
<script src="https://lib.baomitu.com/echarts-gl/2.0.2/echarts-gl.js"></script>
<script src="https://lib.baomitu.com/v-charts/1.19.0/amap.js"></script>
<script src="https://lib.baomitu.com/xlsx/0.16.9/xlsx.js"></script>
<script src="https://lib.baomitu.com/jspdf/2.1.1/jspdf.es.js"></script>
<link rel="stylesheet">
2.修改config
本項(xiàng)目是Vue3,所以配置都在vue.config.js中,這里就是引入,然后一定要記得刪除package.json中的依賴
module.exports = {
...
configureWebpack:{
externals:{
'vue': 'Vue',
'vue-router': 'VueRouter',
'vuex':'Vuex',
'xlsx': 'XLSX',
'jspdf': 'jspdf',
'echarts': 'echarts',
'v-charts': 'v-charts',
'echarts-gl': 'echarts-gl',
'font-awesome': 'font-awesome'
},
}
}
3.修改引入方式
首先Vue你在main.js中該引入還是得引入的
其次在用到三方組件的時(shí)候,我們就可以局部引入了,舉個(gè)echarts例子,可以改為一下方式引入
import * as echarts from 'echarts'
然后部署后訪問時(shí)可以查看Network中的請求url是否為cdn加速
二、GZIP
1.配置
使用(compression-webpack-plugin)插件
npm install compression-webpack-plugin --save-dev
然后配置一下壓縮包設(shè)置
const webpack = require('webpack')
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
module.exports = {
...
// 壓縮包配置
configureWebpack:{
plugins: [
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// 下面是下載的插件的配置
new CompressionWebpackPlugin({
algorithm: 'gzip',
test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
threshold: 10240,
minRatio: 0.8
}),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 5,
minChunkSize: 100
})
]
},
chainWebpack(config) {
// 移除打包后所有打包好的文件預(yù)加載行為
config.plugins.delete('preload');
config.plugins.delete('prefetch');
}
}
2.Nginx配置
http {
...
# 開啟
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
# 壓縮級別
gzip_comp_level 9;
# 壓縮類型
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
}
3.壓縮效果
來看一下壓縮的js文件,這些都生成了一個(gè)gz文件
然后再來看一下網(wǎng)絡(luò)傳輸,傳輸?shù)拇_實(shí)是gz文件的大小
總結(jié)
這樣最起碼網(wǎng)站渲染速度提升一倍,也可以把靜態(tài)圖片資源換成網(wǎng)絡(luò)圖床圖片或者是懶加載一些路由都是可以的,希望大家的個(gè)人網(wǎng)站越來越完美吧
作者:小碼哥
歡迎關(guān)注微信公眾號 :碼出宇宙
掃描添加好友邀你進(jìn)技術(shù)交流群,加我時(shí)注明【姓名+公司(學(xué)校)+職位】