前端性能優化之gzip

gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序。它最早由Jean-loup Gailly和Mark Adler創建,用于UNⅨ系統的文件壓縮。我們在Linux中經常會用到后綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。

HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。

當然WEB服務器和客戶端(瀏覽器)必須共同支持gzip。目前主流的瀏覽器Chrome,firefox,IE等都支持該協議。常見的服務器如Apache,Nginx,IIS同樣支持gzip。

下面就以Vue項目為例,介紹一下gzip的使用(vue-cli 2.*)

1、在/config/index.js中,修改配置開啟gzip

// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: true,
productionGzipExtensions: ['js', 'css'],

在修改productionGzip的默認值(false)為true之前,先安裝所需的依賴npm install --save-dev compression-webpack-plugin

如果按上述操作完成后,打包時出錯,建議更換低版本的compression-webpack-plugin,推薦使用1.1.12或者1.1.11版本等
npm uninstall --save-dev compression-webpack-plugin
npm install --save-dev compression-webpack-plugin@1.1.12

2、在nginx中開啟gzip,/nginx/conf/nginx.conf中添加gzip配置

http:{ #啟用或禁用gzipping響應。#gzip on; #設置用于壓縮響應的緩沖區number和size。默認情況下,緩沖區大小等于一個內存頁面。這是4K或8K,具體取決于平臺。#gzip_static on;#啟用或禁用gzipping響應。#gzip_buffers 4 16k;#設置level響應的gzip壓縮。可接受的值范圍為1到9。#gzip_comp_level 5;#設置將被gzip壓縮的響應的最小長度。長度僅由“Content-Length”響應頭字段確定。#gzip_min_length 100;#匹配MIME類型進行壓縮,text/html默認被壓縮。#gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg?image/gif image/png;
}

修改完nginx配置,重啟服務。

關于gzip詳細的配置和描述,請查閱 Module ngx_http_gzip_module

至此,gzip已開啟。你可以運行你的項目去檢測一下。

打開Chrome控制臺,可以看到Network下的Response Headers中返回了Content-Encoding: gzip,表明gzip開啟成功。
Request Headers里面的Accept-Encoding: gzip只是表示前端(用戶瀏覽器)支持gzip的壓縮方式。

服務器支持gzip的方式可以有兩種:
1、打包的時候生成對應的.gz文件,瀏覽器請求xx.js時,服務器返回對應的xxx.js.gz文件
2、瀏覽器請求xx.js時,服務器對xx.js進行gzip壓縮后傳輸給瀏覽器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

luogu2770 航空路線問題 網絡流

題目大意: 給定一張航空圖,圖中頂點代表城市,邊代表 2 城市間的直通航線。現要求找出一條滿足下述限制條件的且途經城市最多的旅行路線。(1)從最西端城市出發,單向從西向東途經若干城市到達最東端城市,然后再單向從東向…

手機錄音ogg格式怎么轉換mp3

Ogg這種音頻格式剛出來的時候大家是非常熱愛的,但是隨著時代的發展,這種音頻格式已經已經被取代了,現在呢走在音頻格式前端的是MP3格式,這是大家都比較熟悉的,但是我們還是會經常下載到ogg這種格式的音頻,就…

TP3.2設置URL偽靜態滿足更好的SEO效果

URL偽靜態通常是為了滿足更好的SEO效果,ThinkPHP支持偽靜態URL設置,可以通過設置URL_HTML_SUFFIX參數隨意在URL的最后增加你想要的靜態后綴,而不會影響當前操作的正常執行。 例如,我們設置 URL_HTML_SUFFIX>shtml 的話&#xf…

[機器學習] 推薦系統之協同過濾算法(轉)

[機器學習]推薦系統之協同過濾算法 在現今的推薦技術和算法中,最被大家廣泛認可和采用的就是基于協同過濾的推薦方法。本文將帶你深入了解協同過濾的秘密。下面直接進入正題. 1. 什么是推薦算法 推薦算法最早在1992年就提出來了,但是火起來實際上是最近這…

BundleFusion代碼框架講解

背景:前面用了幾篇文章來記錄和總結了,我在研究bundlefusion過程中遇到的一些問題以及解決方法,本來想實現給bundlefusion輸入先驗軌跡,然后讓其根據給定的軌跡進行重建,這樣即便在環境比較惡劣的情況下,也…

BundlePhobia

1、BundlePhobia用于分析npm package的依賴、bundle后的大小、下載速度預估等等,幫助你在引用一個package之前了解引入該package的代價。 2、也可以將項目的package.json文件上傳,BundlePhobia會幫你評估項目中所有包的大小和加載速度。

VFL演示樣例

VFL演示樣例 上篇文章向大家介紹了VFL的基本的語法點,假設對下面演示樣例不熟的童鞋,能夠前去參考。廢話不多說。我們直接來看演示樣例。演示樣例一 將五個大小同樣、顏色不同的view排成一行,view間的間隔為15px,第一個view的間隔與屏幕的左邊…

evo實用指令指南

下面這篇文章中有比較具體的關于evo的安裝以及使用的介紹,其中一點很重要,就是可以把euroc形式的.csv的軌跡格式轉換為tum格式的軌跡。 https://zhuanlan.zhihu.com/p/88223106#single evo_traj tum orb_slam2_tum.txt --reftum_groundtruth.txt -p --pl…

MailUtils

/***包名:com.thinkgem.jeesite.test*描述:package com.thinkgem.jeesite.test;*/ package com.thinkgem.jeesite.test;import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.regex.Matcher; import java.u…

ES6遍歷對象

遍歷對象 E S 6 一共有 5 種方法可以遍歷對象的屬性 。 for ... in for . . . in 循環遍歷對象自身的和繼承的可枚舉屬性(不含 Symbol 屬性)。 Object.keys(obj)Object . keys 返回 一個數組,包括對象自身的(不含繼承的 &#xff…

SpringMvc中ModelAndView模型的應用

/** * 目標方法的返回值可以是 ModelAndView 類型。 * 其中可以包含視圖和模型信息 * SpringMVC 會把 ModelAndView 的 model 中數據放入到 request 域對象中. * return */ RequestMapping("/testModelAndView") public ModelAndView testModelAndView(){ String v…

ubuntu16.04 + ros-kinetic 配置cartographer

其實一直以來都感覺純視覺SLAM很難落地產品,所以一直在找機會學習激光slam,之前也在深藍學院上買了一個激光salm的課程,慚愧,至今也沒開始學呢,年底之前,我想工作之余研究一下激光slam和ros,我感覺這兩個東…

virtualbox中安裝ubuntu

為什么80%的碼農都做不了架構師?>>> virtualboxubuntu 安裝virtualbox,當前版本是6.0.4下載ubuntu安裝盤,建議lubuntu,鏈接是http://mirrors.ustc.edu.cn/ubuntu-cdimage/lubuntu/releases/18.04.2/release/lubuntu-1…

面向對象重寫(override)與重載(overload)區別

一、重寫(override) override是重寫(覆蓋)了一個方法,以實現不同的功能。一般是用于子類在繼承父類時,重寫(重新實現)父類中的方法。 重寫(覆蓋)的規則&#…

cartographer學習筆記--如何保存cartagrapher_ros建好的地圖

今天開始跟著網友大佬學習cartographer. 1. 如何保存cartographer的地圖數據 在運行cartographer過程中可以隨時保存建好的地圖,步驟如下: 首先是重新打開一個terminal, 如果你沒有將你的cartographer_ros下的setup.bash文件寫入到.bashrc中&#xff…

Java微信公眾號開發(五)—— SVN版本控制工具

1 作用 兩個疑問: 什么是版本控制?為什么要用版本控制工具?作用: 受保護受約束合作開發中,版本控制工具更重要的作用就是讓開發者更好地協作,每個人的代碼既能互相調用,來共同完成一個較大的功…

Linux之《荒島余生》(二)CPU篇

為什么80%的碼農都做不了架構師?>>> 溫馨提示,動圖已壓縮,流量黨放心查看。CPU方面內容不多,我們順便學點命令。本篇是《荒島余生》系列第二篇,垂直觀測CPU。其余參見: Linux之《荒島余生》&am…

PTA 06-圖2 Saving James Bond - Easy Version (25分)

題目地址 https://pta.patest.cn/pta/test/16/exam/4/question/672 5-10 Saving James Bond - Easy Version (25分) This time let us consider the situation in the movie "Live and Let Die" in which James Bond, the worlds most famous spy, was captured by…

Ubuntu16.04上安裝kitti2bag

kitti2bag是一個可以將kitti數據集轉換為bag文件的工具,可以直接通過pip進行安裝。由于kitti2bag中使用到ros,所以安裝時你使用的python版本應該是2.7的因為ros只有在Python2.7時才能正常工作。比如說我,我安裝了conda,在conda中安…

Nginx之windows下搭建

去nginx.org下載nginx 以nginx-1.8.1為例解壓到D盤nginx-1.8.1目錄 假設NGINX_HOME為D:\nginx-1.8.1 3種啟動途徑: 一、雙擊nginx.exe圖標,可見黑窗口一閃而過,啟動完畢。 二、命令行到nginx目錄,輸入nginx啟動。(注&a…