Gzip是一種通用的壓縮算法,可用于壓縮各種類型的數據。JSON是一種輕量級的數據交換格式,通常使用在Web應用程序中。將JSON以Gzip壓縮的形式發送到客戶端,可以加快響應速度,節省帶寬。
在Node.js中,使用Gzip壓縮JSON數據非常簡單。首先,需要使用Node.js的內置模塊“zlib”,將JSON字符串壓縮為Gzip格式:
const zlib = require('zlib'); const data = { name: 'Alice', age: 30 }; const jsonData = JSON.stringify(data); zlib.gzip(jsonData, (err, compressed) =>{ if (err) throw err; console.log(compressed.toString('base64')); });
Gzip壓縮是一個異步操作,因此調用“zlib.gzip()”方法時需要傳遞一個回調函數。在回調函數中可以訪問到壓縮后的數據,這里我們將其轉換為Base64格式并輸出到控制臺。
接下來,我們可以使用HTTP服務器將壓縮后的JSON字符串發送到客戶端:
const http = require('http'); http.createServer((req, res) =>{ const data = { name: 'Alice', age: 30 }; const jsonData = JSON.stringify(data); zlib.gzip(jsonData, (err, compressed) =>{ if (err) throw err; res.writeHead(200, { 'Content-Type': 'application/json', 'Content-Encoding': 'gzip' }); res.end(compressed); }); }).listen(3000, () =>{ console.log('Server started on port 3000'); });
在發送HTTP響應時,需要指定以下兩個頭信息:
- Content-Type:指定響應的內容類型為JSON。
- Content-Encoding:指定響應的內容編碼為Gzip。
通過這種方式,客戶端會自動解壓縮接收到的JSON數據。在瀏覽器中查看響應的Network標簽頁,可以看到實際發送的數據大小已經被大大壓縮了。