Vue項目 webpack優化 compression-webpack-plugin 開啟gzip


摘要:

  打包的時候開啟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。

查看壓縮前后的大小對比:

壓縮前:



壓縮后:


  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM