2011-04-28 19 views
7

मेरा विचार किसी भी तरह सर्वर-साइड में HTML कोड को कम करें, इसलिए ग्राहक को कम बाइट प्राप्त होते हैं।एचटीएमएल कोड कैसे छोटा करें?

मेरा मतलब "मिनीफ़ाई" के साथ क्या है?

ज़िप नहीं। उदाहरण के लिए, उदाहरण के लिए, jQuery निर्माता .min .js संस्करणों के साथ करते हैं। दूसरे शब्दों में, मुझे अनावश्यक सफेद-रिक्त स्थान और नई-रेखाओं को हटाने की आवश्यकता है, लेकिन मैं HTML परिवर्तनों की प्रस्तुति को इतना दूर नहीं कर सकता (उदाहरण के लिए पैराग्राफ में वास्तविक शब्दों के बीच सफेद-स्थान हटाएं)।

क्या कोई उपकरण है जो इसे कर सकता है? मुझे पता है कि HtmlPurifier है। क्या यह ऐसा करने में सक्षम है? कोई अन्य विकल्प?

पीएस कृपया regex'ies की पेशकश मत करो। मुझे पता है कि चक नॉरिस केवल उनके साथ एचटीएमएल पार्स कर सकते हैं। =]

+1

मुझे नहीं लगता कि आप ऐसा करने की क्या ज़रूरत है। अधिकांश वेब सर्वर वेब पेज "gzipped" की सेवा का समर्थन करते हैं। आपकी सफेद जगहें अब कोई मुद्दा नहीं बन जाएंगी। आपको हमेशा अपने वेब पृष्ठों को gzipped की सेवा करनी चाहिए। –

+0

आप एक साधारण प्रोग्राम लिख सकते हैं जो HTML फ़ाइल को पार्स करने के लिए एक HTML पार्सिंग लाइब्रेरी का उपयोग करता है और फिर उसे वापस लिखता है। यदि आप सी # का उपयोग करते हैं, तो आप LINQ-to-HTML लाइब्रेरी को देख सकते हैं। –

+0

स्टीफन चुंग के साथ सहमत: यदि आप HTML को gzip करते हैं, तो सभी व्हाइटस्पेस को संकलित किया जाएगा। एचटीएमएल को ठीक करने की तुलना में यह एक तेज प्रक्रिया होगी। – bart

उत्तर

3

आप एचटीएमएल कोड को एक डोम पेड़ में पार्स कर सकते हैं (जिसे नोड्स में सामग्री व्हाइटस्पेस रखना चाहिए), फिर बिना किसी सुंदर स्थान के एचटीएमएल में इसे सीरियलाइज़ करें।

2

क्या कोई उपकरण है जो इसे कर सकता है?

हाँ, यहाँ एक उपकरण यदि आप एक निर्माण प्रक्रिया में शामिल हो सकते हैं या एक वेब कैश परत में काम करते हैं: http://code.google.com/p/htmlcompressor/

या, आप एचटीएमएल है कि आप में पेस्ट कम करें के लिए एक उपकरण के लिए देख रहे हैं, प्रयास करें: http://www.willpeavy.com/minifier/

+1

अरे, इसके लिए धन्यवाद! बहुत कूल!) – daGrevis

0

आप सुंदर Diff उपकरण का उपयोग कर सकते हैं: http://prettydiff.com/?m=minify&html यह भी एचटीएमएल कोड में किसी भी CSS और JavaScript कम करें जाएगा, और minification पठनीय वापस करने के लिए एक प्रतिगामी ढंग से होता है इसलिए करने के लिए HTML के भविष्य के सौंदर्यीकरण रोकने नहीं प्रपत्र।

8

एक थोड़ी देर हो चुकी है लेकिन अभी भी ... का उपयोग करके यह output_buffering कि के रूप में सरल है:

function compress($string) 
{ 
    // Remove html comments 
    $string = preg_replace('/<!--.*-->/', '', $string); 

    // Merge multiple spaces into one space 
    $string = preg_replace('/\s+/', ' ', $string); 

    // Remove space between tags. Skip the following if 
    // you want as it will also remove the space 
    // between <span>Hello</span> <span>World</span>. 
    return preg_replace('/>\s+</', '><', $string);  
} 

ob_start('compress'); 

// Here goes your html.  

ob_end_flush(); 
+4

शायद आप पूर्व, कोड इत्यादि जैसे टैग्स में व्हाइटस्पेस को हटाना नहीं चाहते हैं –

+0

@ बीजयरुंगा आप सही हैं। हालांकि कुछ संशोधनों से बचना संभव है। मैंने अभी एक विचार दिया है :) अपनी टिप्पणी के लिए +1। –

+0

एक regexp के साथ HTML को पार्स करना [काम नहीं करता] (http://stackoverflow.com/a/1732454/509706)। आपका regexp उदाहरण पर टूट जाएगा '

बार

'। –