国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue單頁面打包文件大?首次加載慢?nginx帶你飛,從7.5M到1.3M蛻變過程(推薦)

2019-11-19 14:31:09
字體:
來源:轉載
供稿:網友

  找到nginx多網站配置文件:類似 nginx/sites-available/www.baidu.com

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.html

cnpm run build 文件過大

  打包生成文件:

  

  瀏覽器訪問效果:

  

Nginx開啟gzip

  找到nginx.config。關于gzip壓縮代碼:

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"}

  配置完重啟Nginx

  瀏覽器訪問效果:

  

  上面為數據流接收大小,下面為解壓后實際大小。

識別gzip與非gzip請求

  gzip請求:

  

  非gzip請求:

  

  gzip與非gzip在響應頭中區別就是Content-Encoding是否表明是gzip壓縮格式。

  而上面通過接收數據與實際數據大小相比也能明顯看出差異

webpack gzip

  vue項目中config/index.js

productionGzip: true, //是否開啟gizp壓縮productionGzipExtensions: ['js', 'css'],

開啟后cnpm run build會生成*.gz文件。  

像這樣:

  

  上傳到服務器,測試查看接受文件大小。

  

  gzip相應539kb。并非加載app.........gz的 412kb

  刪除*.gz文件,依舊539kb。

  莫非,webpack打包gzip文件毫無卵用??????

gzip_static 靜態壓縮

  經過一番百度。得一寶貝。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靜態資源 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靜態資源是很有必要的

  所以,按需加載暫時不用考慮了

  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元江| 武夷山市| 漳州市| 丰县| 巴中市| 竹北市| 南岸区| 谷城县| 浑源县| 富民县| 临海市| 桦川县| 牙克石市| 莒南县| 庄浪县| 竹北市| 静乐县| 农安县| 轮台县| 彭水| 景德镇市| 温宿县| 南郑县| 深圳市| 环江| 铁岭县| 皋兰县| 黄山市| 句容市| 辉南县| 仙居县| 苍南县| 丽水市| 通化市| 黄骅市| 岐山县| 邓州市| 边坝县| 巴楚县| 肃北| 安平县|