2010-05-26 10 views
9

क्या स्थिर सामग्री को स्वचालित रूप से कम करने का कोई तरीका है और फिर स्वचालित रूप से कैश से इसकी सेवा करें? Mod_compress/mod_deflate काम के समान है? पसंदीदा रूप से कुछ मैं संपीड़न के साथ संयोजन में उपयोग कर सकता हूं (क्योंकि संपीड़न में एक अधिक ध्यान देने योग्य लाभ है)।सर्वर-साइड ऑटो-मिनीफाइज?

मेरी वरीयता कुछ है जो lighttpd के साथ काम करता है लेकिन मुझे कुछ भी नहीं मिला है, इसलिए कोई भी वेब सर्वर जो यह कर सकता है दिलचस्प होगा।

उत्तर

4

आप nginx के तृतीय पक्ष पट्टी मॉड्यूल की कोशिश कर सकते हैं:

http://wiki.nginx.org/NginxHttpStripModule

किसी भी मॉड्यूल आप का उपयोग सिर्फ रिक्त स्थान निकालना होगा जा रहा है। आपको एक मिनीफायर का उपयोग करके बेहतर परिणाम मिलेगा जो आप जो कुछ भी कम कर रहे हैं उसे समझता है। जैसे Google का क्लोजर जावास्क्रिप्ट कंपाइलर।

यह जानने के लिए काफी समझदार है कि एक चर क्या है और इसका नाम छोटा है। एक व्हाइटस्पेस रीमूवर ऐसा नहीं कर सकता है।

मैं ऑफ़लाइन खनन करने की अनुशंसा करता हूं जब तक कि आपकी साइट बहुत कम यातायात न हो। लेकिन अगर आप अपने लाइव वातावरण में कमी करना चाहते हैं तो मैं nginx के प्रॉक्सी कैश का उपयोग करने की सलाह देता हूं। (क्षमा करें, लेकिन मेरे पास एक से अधिक लिंक पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है)

या आप डिस्क मेकअप के साथ एक ही मेमोरी कैश या रेडिस के लिए मेमकैड में देख सकते हैं।

+3

"क्षमा करें, लेकिन मेरे पास एक से अधिक लिंक पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है" .. सादे पाठ में इसे लिखने के बारे में कैसे? –

2

मैं Microsoft Ajax Minifier का उपयोग करता हूं जो जेएस फाइलों को कम करने के लिए सी # लाइब्रेरी के साथ आता है। मैं सर्वर पर इसका उपयोग करता हूं और प्रति पृष्ठ अधिकतम दो minified .js फ़ाइलों को प्रस्तुत करता हूं (एक "स्थैतिक" जो पूरी साइट पर समान होता है, और एक "गतिशील" जो कि उस पृष्ठ के लिए विशिष्ट है)।

याहू का वाईयूआई कंप्रेसर भी एक साधारण जावा .jar फ़ाइल है जिसे आप भी उपयोग कर सकते हैं।

महत्वपूर्ण बात यह है कि, मुझे फ़ाइल-दर-फ़ाइल आधार पर ऐसा नहीं करना है। आपको सबसे अधिक लाभ प्राप्त करने के लिए .js फ़ाइलों को वास्तव में जोड़ने की आवश्यकता है। इसी कारण से, एक "स्वचालित" समाधान वास्तव में काम नहीं करेगा - क्योंकि यह केवल फाइल-दर-फ़ाइल आधार पर ही काम करेगा।

+0

मुख्य बात (हाँ मैं आलसी जानते हैं) मैं नहीं बल्कि एक स्क्रिप्ट मैन्युअल रूप से चलाने के लिए नहीं चाहते हैं कि है। मेरे पास प्रति पृष्ठ केवल एक जेएस और एक सीएसएस फ़ाइल है। –

3

मैंने PHP के माध्यम से ऐसा करने का निर्णय लिया (ज्यादातर क्योंकि मुझे एक lighttpd मॉड्यूल लिखना पसंद नहीं आया)।

मेरी स्क्रिप्ट एक क्वेरी स्ट्रिंग में ले जाती है जो अनुरोध की गई फ़ाइलों (जेएस या सीएसएस), और फिर उन फ़ाइलों के नाम निर्दिष्ट करती है। उदाहरण के लिए, अपनी साइट पर सीएसएस इस तरह जोड़ा जाता है:

<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />

यह minifies और संयोजित style.css और blue.css

यह JSMin-PHP और cssmin उपयोग करता है।

यह उपलब्ध होने पर XCache का उपयोग कर फ़ाइलों को भी कैश करता है (क्योंकि खनन महंगा है)। मैं वास्तव में स्क्रिप्ट को बदलने की योजना बना रहा हूं, इसलिए Xcache उपलब्ध नहीं होने पर यह छोटा नहीं होता है, लेकिन मेरे पास Xcache है और मैं ऊब गया हूं।

वैसे भी, अगर कोई और इसे चाहता है, तो यह here है। यदि आप मेरा उपयोग करते हैं तो आपको अपनी फ़ाइलों को सूचीबद्ध करने के लिए isAllowed() फ़ंक्शन को बदलने की आवश्यकता होगी (इसे सुरक्षित करने के लिए यह सुरक्षित हो सकता है, लेकिन केवल उन लोगों को सूचीबद्ध करना आसान था जिन्हें मैं अनुमति देना चाहता हूं)।

2

आप lighttpd के बजाय Nginx का उपयोग करते हैं तो आप पर्ल मॉड्यूल JavaScript-Minifier लाभ उठाने के लिए कम करें और कैश जे एस सर्वर साइड करने के लिए Nginx के embedded Perl support का लाभ ले सकते।

यह इस तरह प्राप्त करने के लिए पर विवरण हैं: wiki.nginx.org/NginxEmbeddedPerlMinifyJS

संबंधित मुद्दे