JavaScript (Node.js) के लिए Compression: पूरी गाइड उदाहरण सहित
1. यह क्या है और इसकी आवश्यकता क्यों है
compression लाइब्रेरी Node.js के लिए एक middleware (मिडलवेयर) है, जो Express फ्रेमवर्क (और अन्य संगत फ्रेमवर्क) के लिए बनाई गई है। यह सर्वर के HTTP रिस्पॉन्स को Gzip, Deflate या Brotli एल्गोरिदम का उपयोग करके स्वचालित रूप से कंप्रेस करती है। Node.js पर वेब एप्लिकेशन की परफॉरमेंस को ऑप्टिमाइज़ करने के लिए यह एक डी-फैक्टो स्टैंडर्ड है, क्योंकि यह सर्वर और क्लाइंट के बीच भेजे जाने वाले डेटा (HTML, CSS, JavaScript, JSON, इमेज आदि) के आकार को काफी हद तक कम कर देती है।
इसकी आवश्यकता क्यों है? आधुनिक वेब में, पेज लोड होने की गति यूज़र एक्सपीरियंस और SEO के लिए बेहद महत्वपूर्ण है। डेटा कंप्रेशन से ट्रैफिक का आकार 3 से 10 गुना तक कम किया जा सकता है (कंटेंट के प्रकार पर निर्भर करता है)। उदाहरण के लिए, 100 KB का HTML फ़ाइल Gzip कंप्रेशन के बाद सिर्फ 10-15 KB का हो सकता है। यह खासतौर पर उन मोबाइल यूज़र्स के लिए फायदेमंद है जिनके पास सीमित डेटा है, और उन API के लिए जो बड़े JSON ऑब्जेक्ट रिटर्न करते हैं। बिना compression के, सर्वर "रॉ" डेटा भेजेगा, जिससे लोडिंग टाइम बढ़ेगा और नेटवर्क पर लोड पड़ेगा।
यह लाइब्रेरी पूरी प्रक्रिया को ऑटोमेट करती है: यह क्लाइंट के रिक्वेस्ट में Accept-Encoding हेडर को चेक करती है, उपयुक्त कंप्रेशन एल्गोरिदम (आमतौर पर gzip या brotli, अगर सपोर्टेड हो) चुनती है, रिस्पॉन्स को कंप्रेस करती है और संबंधित हेडर (Content-Encoding, Vary) जोड़ती है। डेवलपर को सिर्फ Express की रिक्वेस्ट प्रोसेसिंग चेन में middleware को जोड़ना होता है। यह compression को किसी भी production-ready Node.js एप्लिकेशन के लिए एक अनिवार्य टूल बनाता है।
2. इंस्टॉलेशन
यह लाइब्रेरी npm (Node Package Manager) के ज़रिए इंस्टॉल होती है। सुनिश्चित करें कि आपके पास Node.js (वर्जन 12 या उससे ऊपर) इंस्टॉल है। अपने प्रोजेक्ट की रूट डायरेक्टरी में यह कमांड चलाएं:
npm install compression
अगर आप yarn का उपयोग कर रहे हैं:
yarn add compression
इंस्टॉलेशन के बाद, लाइब्रेरी आपके कोड में इम्पोर्ट करने के लिए उपलब्ध हो जाएगी।
3. त्वरित शुरुआत — एक न्यूनतम कार्यशील उदाहरण
compression का उपयोग शुरू करने का सबसे आसान तरीका है इसे Express में middleware के रूप में जोड़ना। नीचे एक न्यूनतम सर्वर दिया गया है जो सभी रिस्पॉन्स को कंप्रेस करता है:
const express = require('express');
const compression = require('compression');
const app = express();
const port = 3000;
// कंप्रेशन middleware जोड़ें
app.use(compression());
// एक सामान्य रूट
app.get('/', (req, res) => {
// एक बड़ा रिस्पॉन्स भेजें (स्ट्रिंग को 1000 बार दोहराएं)
const bigData = 'Hello, World! '.repeat(1000);
res.send(bigData);
});
app.listen(port, () => {
console.log(`सर्वर http://localhost:${port} पर चल रहा है`);
});
सर्वर चलाने के बाद (node app.js), ब्राउज़र में http://localhost:3000 खोलें। डेवलपर टूल्स (Network टैब) में आप देखेंगे कि रिस्पॉन्स कंप्रेस्ड है (हेडर Content-Encoding: gzip)। रिस्पॉन्स का साइज़ मूल से कई गुना छोटा होगा।
4. मुख्य तरीके/फंक्शन/क्लासेस
compression लाइब्रेरी एक मुख्य फंक्शन प्रदान करती है — एक middleware, जिसे ऑप्शन ऑब्जेक्ट के ज़रिए कॉन्फ़िगर किया जा सकता है। आइए इसके 8 प्रमुख पहलुओं पर नज़र डालते हैं।
4.1. compression([options]) — middleware बनाना
सिग्नेचर: compression(options?: CompressionOptions): RequestHandler
यह क्या करता है: Express के लिए एक middleware फंक्शन बनाता और रिटर्न करता है। यह एक वैकल्पिक ऑब्जेक्ट लेता है जिसमें सेटिंग्स होती हैं।
उदाहरण:
const compression = require('compression');
const app = require('express')();
// बिना ऑप्शन के (डिफ़ॉल्ट व्यवहार)
app.use(compression());
// ऑप्शन के साथ
app.use(compression({
level: 6, // कंप्रेशन लेवल (0-9)
threshold: 1024, // 1 KB से छोटे रिस्पॉन्स को कंप्रेस न करें
filter: (req, res) => {
// अपनी खुद की फ़िल्टरिंग लॉजिक
}
})); पुस्तकालय में भी
xUnit / NUnit C# (.NET) पूर्ण गाइड: उदाहरण और ट्यूटोरियल
Go (Golang) में CSV के साथ काम करना: पार्सिंग और लेखन के लिए संपूर्ण गाइड
OpenCV C++ पूरी गाइड: उदाहरण और तरीके
Go (Golang) में दिनांकों के साथ कार्य: time, carbon और now लाइब्रेरीज़