Nginx實(shí)現(xiàn)靜態(tài)資源壓縮的方法詳解
1. 概述
1.1 背景
靜態(tài)資源過大,下載耗時(shí)導(dǎo)致頁面打開慢,希望通過壓縮減小文件大小,提升下載速度。
1.2 壓縮方式
Nginx壓縮支持兩種方式,靜態(tài)壓縮和動(dòng)態(tài)壓縮。
● 靜態(tài)壓縮
是先把js、css等文件壓縮為.gz文件,客戶端訪問時(shí)會(huì)自動(dòng)下載.gz文件,并在客戶端自動(dòng)解壓后訪問。
● 動(dòng)態(tài)壓縮
客戶端發(fā)起請(qǐng)求時(shí),nginx動(dòng)態(tài)將js、css文件壓縮后返回給客戶端,客戶端收到后自動(dòng)解壓并訪問。
2. 實(shí)現(xiàn)
Nginx版本:1.24.0
2.1 靜態(tài)壓縮
我們以Vue3為例子來說明整個(gè)實(shí)現(xiàn)過程。
2.1.1 壓縮Vue3資源文件
● 安裝壓縮插件
npm install vite-plugin-compression
● 插件配置
vite.config.ts/js 中導(dǎo)入vite-plugin-compression插件和配置
import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression'
export default {
plugins: [
vue(),
// 下面是壓縮插件配置
viteCompression({
filter: /\.(js|css|json|txt|ico|svg)(\?.*)?$/i, // 需要壓縮的文件
threshold: 1024, // 文件容量大于這個(gè)值進(jìn)行壓縮
algorithm: 'gzip', // 壓縮方式
ext: 'gz', // 后綴名
deleteOriginFile: true, // 壓縮后是否刪除壓縮源文件,false不刪除
})
],
// 其他配置省略
}
注意不要壓縮*.html文件,否則訪問時(shí)會(huì)報(bào)403錯(cuò)誤,即使添加如下配置也會(huì)報(bào)錯(cuò):

● 打包
npm run build
輸出文件后,部署到nginx的靜態(tài)資源文件目錄:

2.1.2 Nginx配置
● 啟用靜態(tài)壓縮功能
在http塊或server塊增加如下配置則可:
gzip_static on; # 只需要加這一個(gè)配置
● 配置靜態(tài)資源目錄
壓縮后的文件部署到自定義目錄下:
location / {
root /site/static;
index index.html index.htm;
}
2.2 動(dòng)態(tài)壓縮
在http塊或server塊增加如下配置則可:
# 開啟動(dòng)態(tài)壓縮功能 gzip on; # 壓縮級(jí)別 gzip_comp_level 6; # 哪些類型的文件需要壓縮 gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
3. 驗(yàn)證
3.1 壓縮和未壓縮性能對(duì)比
3.1.1 本機(jī)測試
如下是一個(gè)壓縮和不壓縮對(duì)比的例子:

可以看到,壓縮后的傳輸數(shù)據(jù)變小了,但是加載時(shí)間并沒有減少,說明壓縮/解壓縮也需要時(shí)間,至于哪種方式更快,取決于網(wǎng)絡(luò)耗時(shí)和壓縮耗時(shí)的具體大小。
3.1.2 公網(wǎng)測試
壓縮前:

壓縮后:

可以看到在壓縮后體積減小,加載時(shí)間也變短了。
3.2 識(shí)別靜態(tài)壓縮和動(dòng)態(tài)壓縮
● 靜態(tài)壓縮

● 動(dòng)態(tài)壓縮

4. 總結(jié)
● 壓縮后未必一定能提升頁面打開速度,需要比較網(wǎng)絡(luò)耗時(shí)和壓縮耗時(shí)時(shí)間,哪個(gè)更省時(shí)。
● 動(dòng)態(tài)壓縮會(huì)消耗nginx的處理性能,如果能靜態(tài)壓縮,可以優(yōu)先考慮使用靜態(tài)壓縮。(可以參考自行實(shí)測結(jié)果)
● 動(dòng)態(tài)壓縮和靜態(tài)壓縮可以同時(shí)使用,有靜態(tài)壓縮文件就使用,沒有則動(dòng)態(tài)壓縮。
以上就是Nginx實(shí)現(xiàn)靜態(tài)資源壓縮的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Nginx靜態(tài)資源壓縮的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nginx?504?Gateway?Time-out的兩種最新解決方案
大家在訪問網(wǎng)站的時(shí)候通常會(huì)遇到502錯(cuò)誤、404錯(cuò)誤等,很少會(huì)遇到504錯(cuò)誤,但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時(shí),打開網(wǎng)頁偶爾就會(huì)出現(xiàn)504 gateway time-out,這篇文章主要給大家介紹了關(guān)于Nginx?504?Gateway?Time-out的兩種解決方案,需要的朋友可以參考下2022-08-08
Nginx服務(wù)器配置HTTPS nginx.config 配置文件(教程)
下面小編就為大家分享一篇Nginx服務(wù)器配置HTTPS nginx.config 配置文件(教程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
詳解Ngigx+Tomcat配置動(dòng)靜分離,負(fù)載均衡
本篇文章主要介紹了Ngigx+Tomcat配置動(dòng)靜分離,負(fù)載均衡,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
基于nginx實(shí)現(xiàn)上游服務(wù)器動(dòng)態(tài)自動(dòng)上下線無需reload的實(shí)現(xiàn)方法
這篇文章主要介紹了基于nginx實(shí)現(xiàn)上游服務(wù)器動(dòng)態(tài)自動(dòng)上下線無需reload,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
一文弄懂Nginx的location匹配的實(shí)現(xiàn)
這篇文章主要介紹了一文弄懂Nginx的location匹配的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
Nginx隱藏server頭信息的實(shí)現(xiàn)
本文主要介紹了Nginx隱藏server頭信息的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
windows系統(tǒng)下安裝Nginx及簡單使用過程
Nginx是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),也是一種輕量級(jí)的Web服務(wù)器,可以作為獨(dú)立的服務(wù)器部署網(wǎng)站,應(yīng)用非常廣泛,特別是現(xiàn)在前后端分離的情況下,這篇文章主要介紹了windows系統(tǒng)下安裝Nginx以及簡單使用,需要的朋友可以參考下2024-04-04

