एक्सप्रेस और कनेक्ट ने अपने gzip फ़ंक्शंस को हटा दिया है क्योंकि वे बहुत अक्षम थे। क्या वर्तमान में एक्सप्रेस-जेएस के साथ gzip करने के लिए कोई विश्वसनीय समाधान है?एक्सप्रेस gzip स्थिर सामग्री
उत्तर
Connect 2.0 में नोड में नए zlib सामान का समर्थन करेंगे कि सिर्फ नोड कोर एपीआई में बाहर आ गया है साथ new zlib stuff के आधार पर compress() मिडलवेयर के लिए समर्थन जोड़ा गया है।
आप अपने package.json
फ़ाइल में 2.0 कनेक्ट करने के लिए एक निर्भरता जोड़कर अपने एक्सप्रेस सर्वर में इस का उपयोग कर सकते:
{
...
dependencies: {
"connect" : "2.x",
"express" : "2.x",
// etc..
}
}
और फिर अपने एक्सप्रेस एप्लिकेशन विन्यास में निम्न तर्क लागू होते हैं:
// Create static file server with gzip support
var app = express.createServer(express.logger());
app.use(connect.compress());
app.use(express.static(__dirname + '/public'));
app.listen(80);
कृपया ध्यान दें कि यह सामग्री अभी भी बहुत अच्छी है और जब मैं इसे स्थानीय रूप से काम करने के लिए प्राप्त कर सकता हूं, तो मेरे Heroku क्लाउड एप्लिकेशन ने संपीड़न 2.x पर निर्भरता के बारे में शिकायत की के दौरान पहले से प्रतिबद्ध हुक जब Git के माध्यम से की तैनाती:
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.4.7
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
npm ERR! Error: No compatible version found: [email protected]'>=2.0.0- <3.0.0-'
आप देख सकते हैं, वे अभी भी नोड के एक पुराने संस्करण (0.4.7) का उपयोग कर रहे हैं।
अद्यतन:
वास्तव में, मैं Heroku package.json
में इसी engines
खंड जोड़कर इस तैनात करने के लिए मिल सकता है:
{
...
"engines": {
"node": ">= 0.6.0 < 0.7.0"
}
}
और इन परिणामों जब एक का उपयोग कर रहे हैं http संपीड़न परीक्षक:
अद्यतन जून 2014
हिया, अगर आप इस पढ़ रहे हैं। यह न भूलें कि ऊपर की सामग्री केवल एक्सप्रेस 2.0 के लिए प्रासंगिक है।
एक्सप्रेस 3.0 और 4.0 उपयोग http संपीड़न सक्षम करने के लिए अलग अलग वाक्य रचना, बस नीचे दिए gasolin द्वारा पोस्ट देखें।
देख मैं इसे एक्सप्रेस 2.5.1 पर काम नहीं कर सके कैश config रहता है। –
@AndreyLushnikov: ** ** स्थिर 'से पहले आपको' (''' 'compress' ** का उपयोग करना होगा। 'Compress' [बदल देता है] (https://github.com/senchalabs/connect/blob/2.3.9/lib/middleware/compress.js#L77-91)' res.write' और 'ताकि res.end' यह zlib के माध्यम से डेटा प्रॉक्सी कर सकते हैं। यदि 'स्थिर '' संपीड़ित' से पहले है, तो यह 'संपीड़ित' मिडलवेयर को चलाने के लिए 'res' विधियों को चलाने और पैच करने का मौका मिलने से पहले पूरे अनुरोध को संभालता है। स्टीवन, मैंने 'उपयोग()' कॉल को स्वैप करने के लिए अपना उत्तर अपडेट कर दिया है। – josh3736
@gasolin नीचे बताता है कि एक्सप्रेस 3.0 में अब 'संपीड़न() 'समर्थन है। यदि आप इसे पढ़ रहे हैं, तो क्या आप अपना उत्तर अपडेट कर सकते हैं? – HyderA
यदि आपने एनपीएम की खोज की है तो आप node-compress पर आ सकते हैं।
इसे एक्सप्रेस में मध्यवर्ती के रूप में इंजेक्ट करना बहुत कठिन नहीं होना चाहिए।
मैं भी NPM खोज की है और उदाहरण के लिए मिल गया है:
https://github.com/tomgallacher/gzippo
gzippo स्पष्ट gzippo बेहतर प्रदर्शन के लिए कम्प्रेस का उपयोग कर कनेक्ट करने के लिए एक gzip मिडलवेयर है।
Gzippo हाल ही में विकसित किया गया है (2 दिन पहले) जो मुझे लगता है कि एक अच्छी बात है। मैं आपको उत्पादन के उपयोग के बारे में नहीं बता सकता। आपको स्वयं परीक्षण/बेंचमार्क करना चाहिए। मैं शायद कुछ नोडजेस मॉड्यूल की बजाय अपनी स्थिर फाइलों को होस्ट करने के लिए लाइव साइट या Nginx के लिए सीडीएन का उपयोग भी करूंगा।
हम बड़े ब्रिटेन समाचार पत्र के लिए उत्पादन में gzippo का उपयोग कर रहे हैं। नोड परत में सामग्री संपीड़न को विन्यस्त की सुंदरता है कि आप तो बस वार्निश, विद्रूप या एक CDN नदी के ऊपर रख दिया और यह http हेडर आज्ञा का पालन करेंगे और प्रॉक्सी बाद के सभी अनुरोध के लिए/CDN पर एक कैश्ड ज़िपित प्रति रखना कर सकते हैं। यह आपके नोड कोड के साथ और अपने Git में/SVN आदि – serby
कनेक्ट अगली फिल्म
इसकी अब जोड़ दिया गया, नीचे पोस्ट .. –
एक्सप्रेस 3.0 अब सेक है() का समर्थन:
var app = express();
// gzip
app.use(express.compress());
// static
app.use("/public", express.static(__dirname + '/public'));
// listen
app.listen(80);
संपादित एक्सप्रेस 4.0 के लिए, अलग मिडलवेयर बन सेक। तो अगर आप को स्थापित करने के लिए है और आयात के लिए इसका इस्तेमाल करने के लिए:
var compress = require('compression');
app.use(compress());
एक्सप्रेस '4.x' ने लगभग सभी मिडलवेयर हटा दिए, जिनमें 'संपीड़न' शामिल है। आप कनेक्ट के 'संपीड़न' मिडलवेयर का उपयोग अब कर सकते हैं: https://github.com/expressjs/compression। –
क्या उसे उसकेोकू –
में अतिरिक्त चरणों की आवश्यकता है संपीड़न किस परिस्थिति में ट्रिगर करता है?मैंने अभी इसे जोड़ा लेकिन 'res.send' लिखा और कोई gzipped सामग्री बाहर नहीं आया। क्या इसे 'res.end' या कुछ अन्य ट्रिगर की आवश्यकता है? – CMCDragonkai
- 1. स्थिर सामग्री
- 2. gzip
- 3. सामग्री है जब सामग्री gzip नहीं है: सीडीएन
- 4. स्थिर वेब सामग्री
- 5. यदि सामग्री स्थिर है
- 6. gzip
- 7. Gzip
- 8. एक स्थिर पुस्तकालय की सामग्री
- 9. फ्लास्क, चेरीपी और स्थिर सामग्री
- 10. एक्सप्रेस: पथ/फ़ाइल के आधार पर सामग्री-प्रकार सेट करना?
- 11. GZip system.web.optimization बंडलों
- 12. एक्सप्रेस
- 13. सामग्री-एन्कोडिंग भेजने के लिए mod_deflate सक्षम करें: gzip
- 14. पारदर्शी GZIP विसंपीड़न
- 15. PHP मैनुअल GZip एन्कोडिंग
- 16. gzip - प्रदर्शन
- 17. किसी वेबसाइट के लिए स्थिर सामग्री संकलित
- 18. एक्सप्रेस
- 19. एक्सप्रेस
- 20. एक्सप्रेस
- 21. एक्सप्रेस
- 22. एक्सप्रेस
- 23. एक्सप्रेस
- 24. एक्सप्रेस
- 25. PHP ob_start() बनाम अपाचे डिफ्लेट/Gzip के साथ सामग्री संपीड़ित करना?
- 26. Heroku धक्का: gzip gzip स्वरूप में नहीं stdin
- 27. PHP + gzip: बंद कनेक्शन और
- 28. Heroku देवदार और nginx (gzip)
- 29. सफारी और gzip
- 30. IIS7 gzip संपीड़न स्तर
उपयोग nginx के gzip – dumitru
मामले में यह अभी भी किसी के लिए प्रासंगिक है: जैसा कि मैंने gziped स्टैटिक फ़ाइलें सेवा करने के लिए चाहता था, लेकिन पर ऐसा करने का ओवरहेड चाहता था नहीं है फ्लाई मैंने express.static के शीर्ष पर एक छोटा रैपर लिखा, जो पहले से ही gziped फ़ाइलों की सेवा करने की अनुमति देता है। यह उपयोगी होगा अगर आपने अपनी बिल्ड प्रक्रिया में gzipping html/css/js फ़ाइलों को एकीकृत किया है। मॉड्यूल NPM पर पाया जा सकता है: [व्यक्त स्थैतिक-gzip] (https://www.npmjs.com/package/express-static-gzip) – Tobi