找到nginx多網站配置文件:相似nginx/sites-available/www.baidu.comjavascript
server { listen 80; index index.html index.htm index.nginx-debian.html; server_name www.baidu.com; location / { root /mnt/www/www.baidu.com; try_files $uri $uri/ /index.html; } }
參考頁面:https://router.vuejs.org/zh-cn/essentials/history-mode.htmlphp
打包生成文件:css
瀏覽器訪問效果:html
找到nginx.config。關於gzip壓縮代碼:vue
http {
gzip on; #開啓或關閉gzip on off
gzip_disable "msie6"; #不使用gzip IE6
gzip_min_length 100k; #gzip壓縮最小文件大小,超出進行壓縮(自行調節)
gzip_buffers 4 16k; #buffer 不用修改
gzip_comp_level 3; #壓縮級別:1-10,數字越大壓縮的越好,時間也越長
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 壓縮文件類型
gzip_vary off; #跟Squid等緩存服務有關,on的話會在Header裏增長 "Vary: Accept-Encoding"
}
配置完重啓Nginxjava
瀏覽器訪問效果:webpack
上面爲數據流接收大小,下面爲解壓後實際大小。nginx
gzip請求:web
非gzip請求:npm
gzip與非gzip在響應頭中區別就是Content-Encoding是否代表是gzip壓縮格式。
而上面經過接收數據與實際數據大小相比也能明顯看出差別
vue項目中config/index.js
productionGzip: true, //是否開啓gizp壓縮 productionGzipExtensions: ['js', 'css'],
上傳到服務器,測試查看接受文件大小。
gzip相應539kb。並不是加載app.........gz的 412kb
刪除*.gz文件,依舊539kb。
莫非,webpack打包gzip文件毫無卵用??????
通過一番百度。得一寶貝。gzip_static
什麼東東呢?字面上意思就是:gzip靜態。
賣個關子:
上面配置了。Nginx是能夠開啓gzip壓縮,並且可以實現壓縮效果。而它是如何工做的呢?
客戶端發起請求
-》Nginx接收請求
-》Nginx加載文件進行gzip打包壓縮成*.gz
-》返回給瀏覽器
-》瀏覽器解壓*.gz (應該是它乾的,反正看不見)
也就是說,每次請求,Nginx都會進行壓縮返回、壓縮返回、壓縮返回、 將會致使浪費大量CPU。
這麼個大bug是誰設計的?若是請求量大,CPU會不會掛掉?//猜想
固然,並不會,gizp打包壓縮後會臨時緩存,
因此,能不消耗CPU就不消耗CPU。
廢話太多,步入正題。放大招!!
nginx.conf
http {
gzip on; #開啓或關閉gzip on off
gzip_static on;#是否開啓gzip靜態資源 #nginx對於靜態文件的處理模塊,該模塊能夠讀取預先壓縮的gz文件,這樣能夠減小每次請求進行gzip壓縮的CPU資源消耗。該模塊啓用後,nginx首先檢查是否存在請求靜態文件的gz結尾的文件,若是有則直接返回該gz文件內容。爲了要兼容不支持gzip的瀏覽器,啓用gzip_static模塊就必須同時保留原始靜態文件和gz文件。這樣的話,在有大量靜態文件的狀況下,將會大大增長磁盤空間。咱們能夠利用nginx的反向代理功能實現只保留gz文件。
gzip_disable "msie6"; #不使用gzip IE6
gzip_min_length 100k; #gzip壓縮最小文件大小,超出進行壓縮(自行調節)
gzip_buffers 4 16k; #buffer 不用修改
gzip_comp_level 3; #壓縮級別:1-10,數字越大壓縮的越好,時間也越長
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 壓縮文件類型
gzip_vary off; #跟Squid等緩存服務有關,on的話會在Header裏增長 "Vary: Accept-Encoding"
}
emmmmmmmm.....重啓nginx
OK。上圖!
before:
after:
對比文件:
so 。開啓gzip_static後。流程就會變成
//偷懶寫法。。。。。
if(*.gz){ return *.gz //懶得壓縮直接扔文件 }else{ return gzip() //壓縮再扔給瀏覽器 }
nginx的gzip壓縮力度從1-9 。若是開啓過大,CPU會嚴重浪費,而webpack壓縮gzip默認是9.所以,打包壓縮gzip靜態資源是頗有必要的
因此,按需加載暫時不用考慮了
參考網頁:並未好好看