2012-07-29 6 views
11

मैं Django templating का उपयोग कर रहा है, और पठनीयता के लिए मैं एचटीएमएल कि निम्न के समान दिखता है:को संक्षिप्त करने/कम करने से गतिशील एचटीएमएल

{% if some_variable %} 
    text 
{% else %} 
    nothing exists here 
{% endif %} 

{% for item in set %} 
    {% if forloop.first %} 
...etc... 

यह कार्यावधि में निम्नलिखित एचटीएमएल, जो खाली स्थान के और रिटर्न की टन शामिल करने के लिए धर्मान्तरित :

text 

<div> 

    <li 

     class='some_class 

    > 

    some text 

    </li> 

</div> 

etc... 

कुछ पृष्ठ यहाँ तक कि जब पेज स्रोत देखकर html के ~ 3,000 करने के लिए लाइनों चलाते हैं।

क्या इस एचटीएमएल को रनटाइम पर संपीड़ित करने के लिए कोई उपकरण है? अतिरिक्त लाइन ब्रेक को हटाने के लिए एक उपकरण के बारे में क्या?

+1

Google इस कर दिया: http://www.soyoucode.com/2011/minify-html-output-django (मैं से परिचित नहीं हूँ Django, तो मुझे नहीं पता कि यह आपके विशेष मामले में किसी भी प्रयोग का है, हालांकि)। –

+1

आपने django.middleware.gzip.GZipMiddleware, – mrok

+0

को आजमाया था, शायद आप एक Django/Python HTMLTidy दृष्टिकोण चाहते हैं। उदाहरण के लिए –

उत्तर

5

कुछ पृष्ठभूमि के लिए, यह जानबूझकर किया जाता है, क्योंकि Django के टेम्पलेटिंग इंजन वर्तमान में टैग को बंद करने के बाद रिक्त स्थान का मूल्यांकन करने वाली लाइनों को स्वच्छ करने की परवाह नहीं करता है और ऐसा करने से प्रतिक्रिया देने में कुछ मामूली प्रदर्शन दंड लगेंगे , क्योंकि इसमें एक पोस्ट-प्रोसेसिंग चरण शामिल है जो प्रस्तुत टेम्पलेट की पूरी सामग्री का मूल्यांकन करता है।

फिर भी, यदि आपको त्वरित समाधान की आवश्यकता है, तो मेरा सुझाव है कि आप StripWhitespaceMiddleware प्रतिक्रिया मिडलवेयर को नियोजित करें जो टेक्स्ट प्रतिक्रियाओं से नकली सफेद जगहों को हटा देगा। यह बहुत तेजी से और सीधा है, नियमित रूप से टेम्पलेट इंजन की तरह मिलान करने वाली नियमित अभिव्यक्ति को नियोजित करता है। एक और कर, लेकिन शक्तिशाली विकल्प एक प्रतिक्रिया मिडलवेयर तैनात करेगा जो एक HTML प्रीटीफायर का उपयोग करता है, अगर आप वास्तव में गरीब मनुष्यों के बारे में परवाह करते हैं तो भी कच्चे प्रतिक्रियाएं पढ़ रहे हैं।

+2

पठनीयता की तुलना में अत्यधिक सफेद जगह से संबंधित अन्य मुद्दे हैं, जैसे बैंडविड्थ काफी समवर्ती अनुरोधों वाले साइटों पर, लेकिन आमतौर पर * बड़ी साइटों * जैसे याहू, फेसबुक आदि के साथ करना है। मैं आपके उत्तर की भावना से सहमत हूं, हालांकि, उस व्हाइटस्पेस ब्लोट में आम तौर पर एक यूग्लीफिकेशन समस्या होती है जो डिजाइनर और गैर-आईटी कार्यकारी प्रकारों को "pwoblematic" ढूंढते हैं। इसका सबसे अच्छा मामला मैं सामने आया हूं, जहां * स्रोत मार्कअप * को कोड की गुणवत्ता का प्रतिनिधित्व करने के रूप में मार्कअप-नो-नोटिंग द्वारा निर्णय लिया गया था। मजेदार है कि हम कभी-कभी पेचेक के लिए क्या करते हैं। –

+0

डिजाइनर, गैर-आईटी कार्यकारी प्रकार और डेवलपर्स ओसीपीडी के साथ;)! –

1

यदि आप Nginx के साथ उपयोग कर रहे हैं तो इसका स्ट्रिप मॉड्यूल आपके लिए एचटीएमएल की सफाई के साथ वास्तव में बहुत अच्छा काम कर रहा है। यह वास्तविक समय और पारदर्शी है। इसे ठीक से सेट करने के बाद आपको बिल्कुल परवाह करने की आवश्यकता नहीं है।

http://wiki.nginx.org/HttpStripModule

2

चारों ओर मैं सिर्फ पाया Django-पाइपलाइन देखते हुए, मैं तो बस, कोशिश की द्वारा अब, मिडलवेयर और यह मैं सिर्फ क्या उम्मीद कर रहा हूँ है। यह सभी एचटीएमएल और टेक्स्ट नोड्स को कम करता है और जावास्क्रिप्ट नोड्स को छूता रहता है।

मिडलवेयर कार्यान्वयन और मूल परीक्षण परिणाम लगभग 4 मिनट है, बस पाइप इंस्टॉल करें और मिडलवेयर को गजिप करने के बाद या MIDDLEWARE_CLASSES सेटिंग के शीर्ष पर मिडलवेयर सक्रिय करें।

https://github.com/cyberdelia/django-pipeline

http://django-pipeline.readthedocs.org/en/latest/

2

मैं एक सामने के अंत विकास उपकरण, grunt-contrib-htmlmin रूप में इस तरह, उन्हें उत्पादन सर्वर के लिए लागू करने से पहले Django टेम्पलेट फ़ाइलों कम करें करने के लिए इस्तेमाल किया जाना चाहिए।

इस तरह, खनन प्रक्रिया "बिल्ड-टाइम" में होती है, और "रन-टाइम" में HTML न्यूनीकरण के लिए सर्वर सीपीयू संसाधन सहेजती है।

यह टूल मूल रूप से HTML को कम करने के लिए डिज़ाइन किया गया है, लेकिन मैंने कोशिश की है कि Django टेम्पलेट्स के लिए भी काम करता है।

+0

बहुत बढ़िया, मैं इसी तरह के समाधान के बारे में सोच रहा था जहां टेम्पलेट लोड समय पर खनन चल सकता था। – aisbaa

3

django-htmlmin पैकेज एक भयानक है, यह नियंत्रण का एक बहुत प्रदान करता है और इसके अलावा सुविधाओं यह एचटीएमएल 5

0

"मुझे लगता है इस तरह के घुरघुराना-योगदान-htmlmin के रूप में सामने के अंत विकास उपकरण का समर्थन करता है, करने के लिए इस्तेमाल किया जाना चाहिए उत्पादन सर्वर पर तैनात करने से पहले Django टेम्पलेट फ़ाइलों को कम करें। "

मुझे प्रदर्शन बढ़ाने और विलंबता कम करने के लिए कुछ समय पहले ऐसा करने की आवश्यकता थी।मैंने एक टेम्पलेट मिनीमाइज़र लिखा है जो पहले से ही आपके टेम्पलेट्स में एचटीएमएल, सीएसएस और जावास्क्रिप्ट को कम करेगा ताकि पृष्ठों को कम से कम बनाया जा सके। यह Django कमांड के रूप में Django में एकीकृत करता है, Django आकर्षक भाषा की जटिलताओं को समझता है, और विस्तार योग्य है। आप नीचे दिए गए लिंक पर pypi पर इसे पा सकते हैं:

django-template-minimizer

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