1. 程式人生 > 其它 >compression-webpack-plugin 開啟gzip vue

compression-webpack-plugin 開啟gzip vue

原文https://www.cnblogs.com/zigood/p/12504401.html

摘要:

  打包的時候開啟gzip可以很大程度減少包的大小,非常適合於上線部署。更小的體積對於使用者體驗來說

就意味著更快的載入速度以及更好的使用者體驗。

Vue-cli3.0專案

安裝依賴:compression-webpack-plugin

  npm install compression-webpack-plugin --save-dev

vue.config.js修改:

const CompressionPlugin = require('compression-webpack-plugin
');  const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i; module.exports = { publicPath: './', productionSourceMap: false, configureWebpack: {...}, chainWebpack: config => { config.resolve.alias.set('@', resolve('src')); if (process.env.NODE_ENV === '
production') { config.plugin('compressionPlugin') .use(new CompressionPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: productionGzipExtensions, threshold: 10240, minRatio: 0.8, deleteOriginalAssets:
true })); } }, };

CompressionWebpackPlugin外掛引數配置:官網檢視(https://www.webpackjs.com/plugins/compression-webpack-plugin/

注:deleteOriginalAssets: true //是否刪除原資源

伺服器啟用gzip:

 nginx配置:

gzip on;
gzip_static on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6].";

gzip使用環境:http,server,location,if(x),一般把它定義在nginx.conf的http{…..}之間

  gzip on

  on為啟用,off為關閉

  gzip_min_length 1k

  設定允許壓縮的頁面最小位元組數,頁面位元組數從header頭中的Content-Length中進行獲取。預設值是0,不管頁面多大都壓縮。建議設定成大於1k的位元組數,小於1k可能會越壓越大。

  gzip_buffers 4 16k

  獲取多少記憶體用於快取壓縮結果,‘4 16k’表示以16k*4為單位獲得

  gzip_comp_level 5

  gzip壓縮比(1~9),越小壓縮效果越差,但是越大處理越慢,所以一般取中間值;

  gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php

  對特定的MIME型別生效,其中'text/html’被系統強制啟用

  gzip_http_version 1.1

  識別http協議的版本,早起瀏覽器可能不支援gzip自解壓,使用者會看到亂碼

  gzip_vary on

  啟用應答頭"Vary: Accept-Encoding"

  gzip_proxied off

  nginx做為反向代理時啟用,off(關閉所有代理結果的資料的壓縮),expired(啟用壓縮,如果header頭中包括"Expires"頭資訊),no-cache(啟用壓縮,header頭中包含"Cache-Control:no-cache"),no-store(啟用壓縮,header頭中包含"Cache-Control:no-store"),private(啟用壓縮,header頭中包含"Cache-Control:private"),no_last_modefied(啟用壓縮,header頭中不包含"Last-Modified"),no_etag(啟用壓縮,如果header頭中不包含"Etag"頭資訊),auth(啟用壓縮,如果header頭中包含"Authorization"頭資訊)

  gzip_disable msie6

  IE5.5和IE6 SP1使用msie6引數來禁止gzip壓縮 )指定哪些不需要gzip壓縮的瀏覽器(將和User-Agents進行匹配),依賴於PCRE庫

  伺服器配置引自juan26=>https://segmentfault.com/a/1190000012571492?utm_source=tag-newest

  注:(gzip_static on)Nginx的動態壓縮是對每個請求先壓縮再輸出,這樣造成虛擬機器浪費了很多cpu,解決這個問題可以利用nginx模組Gzip Precompression,這個模組的作用是對於需要壓縮的檔案,直接讀取已經壓縮好的檔案(檔名為加.gz),而不是動態壓縮,對於不支援gzip的請求則讀取原檔案。

  1.檔案可以使用 gzip 命令來進行壓縮,或任何其他相容的命令。

  2.gzip_static配置優先順序高於gzip。

  3.開啟nginx_static後,對於任何檔案都會先查詢是否有對應的gz檔案。

  4.gzip_types設定對gzip_static無效。

  5.gzip static預設適用HTTP 1.1。

檢視壓縮前後的大小對比:

壓縮前:



壓縮後: