Vue項目如何開啟gzip
隨著項目的迭代,項目的打包體積會越來越多,項目性能就會逐漸變差,這時候可以開啟 gzip 進行性能優(yōu)化,提升訪問速度,解決頁面白屏時間長的問題。
下面介紹一下 Vue 開啟 gzip 的方法:
gzip 壓縮的方式有兩種
1、在服務端開啟壓縮,當瀏覽器發(fā)起請求時,服務端對傳輸資源進行實時壓縮,然后返回給瀏覽器
2、 對 webpack 配置打包壓縮,并在服務端加上支持 gizp 的配置,當瀏覽器請求時,服務端直接將資源返回給瀏覽器
兩種方法的區(qū)別
- 第一種是服務端進行實時壓縮,對服務器的性能消耗較大
- 第二種則是打包后的 dist 文件包體積比較大(因為包含 .gz 文件和源文件)
綜上,兩種方法混合用比較合適,在 webpack 打包時,配置只對超過一定體積的文件進行壓縮,然后配置 nginx ,當瀏覽器發(fā)起請求時,服務端對 .gz 文件進行直接傳輸給瀏覽器,對源文件先進行實時壓縮,在返回給瀏覽器。
第一種方法
直接在 nginx 服務端配置開啟 gzip。
配置如下:
# 開啟服務器實時gzip gzip on; # 開啟靜態(tài)gz文件返回 gzip_static on; # 啟用gzip壓縮的最小文件,小于設置值的文件將不會壓縮 gzip_min_length 1k; # 設置壓縮所需要的緩沖區(qū)大小 gzip_buffers 32 4k; # 設置gzip壓縮針對的HTTP協(xié)議版本 gzip_http_version 1.0; # gzip 壓縮級別,1-9,數(shù)字越大壓縮的越好,也越占用CPU時間 gzip_comp_level 7; # 進行壓縮的文件類型。javascript有多種形式。其中的值可以在 mime.types 文件中找到。 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 application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 是否在http header中添加Vary: Accept-Encoding,建議開啟 gzip_vary on; # 禁用IE 6 gzip gzip_disable "MSIE [1-6]\.";
添加后重啟 nginx ./nginx -s reload ,如下圖,看到響應頭中出現(xiàn) Content-Encoding:gzip 表示開啟成功:

第二種方法
在 Vue 項目中,使用 webpack 來開啟 gzip ,如下:
首先,安裝 compression 插件
npm install compression-webpack-plugin
然后在 vue.config.js 中加上如下配置:
module.exports = {
chainWebpack: config => {
const CompressionWebpackPlugin = require('compression-webpack-plugin')
if (process.env.NODE_ENV === 'production') {
config.plugin('CompressionPlugin').use(
new CompressionWebpackPlugin({
filename: '[path][base].gz[query]', // 壓縮后的文件名(保持原文件名,后綴加.gz)
algorithm: 'gzip', // 使用gzip壓縮
test: /\.js$|\.css$/, // 匹配文件名
threshold: 10240, // 對超過10k的數(shù)據(jù)壓縮
minRatio: 1, // 壓縮率小于1才會壓縮
deleteOriginalAssets: false // 是否刪除未壓縮的源文件,謹慎設置,如果希望提供非gzip的資源,可不設置或者設置為false(比如刪除打包后的gz后還可以加載到原始資源文件)
})
)
}
}
}打包后,文件中會出現(xiàn) .gz 文件,如圖:

最后檢查一下 nginx 服務端配置是否支持 gzip ,如果不支持,則需加上如下配置:
gzip on; gzip_static on; gzip_min_length 5k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 7; gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on;
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼
本篇文章主要介紹了Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07
vue+element+electron仿微信實現(xiàn)代碼
這篇文章主要介紹了vue+element+electron仿微信實現(xiàn),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12
在Vue中延遲執(zhí)行某個函數(shù)的實現(xiàn)方式
在Vue中延遲執(zhí)行某個函數(shù),你可以使用setTimeout()函數(shù)或者Vue提供的生命周期鉤子函數(shù),本文通過一些示例代碼給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2023-12-12

