摘要:
打包的時候開啟gzip可以很大程度減少包的大小,非常適合於上線部署。更小的體積對於用戶體驗來說
就意味着更快的加載速度以及更好的用戶體驗。
Vue-cli3.0項目
安裝依賴:compression-webpack-plugin
npm install compression-webpack-plugin --save-dev
vue.config.js修改:
const CompressionPlugin = require('compression-webpack-plugin');
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。
查看壓縮前后的大小對比:
壓縮前:

壓縮后:
