2010-02-11 19 views
16

कोल्डफ्यूजन आउटपुट की सफेद जगह को रोकने का सही तरीका क्या होगा?व्हाइट स्पेस/कोल्डफ्यूजन

मुझे पता है कि cfcontent और cfsetting enableCFoutputOnly है। ऐसा करने का सही तरीका क्या है?

+0

हल करने का प्रयास करने में आपकी समस्या क्या है? अतिरिक्त सफेद स्थान में कम से कम कोई नुकसान नहीं होता है, कम से कम मुझे नहीं पता। – Jay

उत्तर

4

टैग के संदर्भ में, वहाँ cfsilent

व्यवस्थापक में 'खाली स्थान के प्रबंधन सक्षम करें'

Futher reading on cfsilent and cfcontent reset.

+2

इसी तरह वहाँ भी टैग – kevink

+1

और Travis

+1

@Travis - होना चाहिए '' यानी साथ 2 पी के –

1

के लिए एक सेटिंग है तो न <cfsilent> और न ही <cfsetting enablecfoutputonly="yes"> आप संतुष्ट कर सकते हैं है, तो आप कर रहे हैं शायद इस मुद्दे को अधिक इंजीनियरिंग।

जब आप सौंदर्य कारणों से पूरी तरह से पूछ रहे हैं, तो मेरी सिफारिश है: व्हाइटस्पेस को अनदेखा करें, इससे कोई नुकसान नहीं होता है।

+3

व्हाइटस्पेस स्वच्छ कोड को बॉटिंग करने से अधिक समस्या है। एक डॉक्टरेट से पहले व्हाइटस्पेस सत्यापन में त्रुटियों का कारण बन जाएगा। संवेदनात्मक सौंदर्य, लेकिन वास्तव में यह समस्या है यदि आपके ग्राहक वैध साइटों की आवश्यकता/आवश्यकता चाहते हैं। एक सादे पाठ वेब सेवा रिटर्न से पहले या बाद में व्हाइटस्पेस भी असुविधा का कारण बन सकता है। एक एक्सएमएल रिटर्न में अग्रणी व्हाइटस्पेस त्रुटियों का कारण बन सकता है जैसे "प्रोलॉग में सामग्री की अनुमति नहीं है।" इन दोनों परिणामों के लिए उपयोगकर्ता को केवल उपयोग करने योग्य परिणामों में हेरफेर करने की आवश्यकता होगी। मेरी राय में यह एक मैला वेब सेवा है। – Travis

+0

@Travis: हाँ, यह सच है। फिर भी, इन विशेष मुद्दों को उपलब्ध विधियों के साथ पूरी तरह हल किया जा सकता है। सीएफ़ और एचटीएमएल इंटरमीक्सिंग के परिणामस्वरूप व्हाइटस्पेस एक समस्या से बहुत कम है और इसे अकेला छोड़ा जा सकता है, आईएमएचओ। – Tomalak

+0

ज्यादातर मामलों में हाँ मैं सहमत हूं कि इसे अनदेखा किया जा सकता है। हाउवर, मेरे पास कुछ ग्राहक हैं जो सख्त सत्यापन पर जोर देते हैं (एक अजीब साइड नोट पर, यहां तक ​​कि उनकी नवीनतम साइटें 1 99 1 से कुछ जैसी दिखती हैं)। व्हाईटस्पेस ऐसा करने की कोशिश करते समय कहर बरबाद कर देता है; डॉक्टरेट से पहले नहीं बल्कि पूरे दस्तावेज़ पर। इसमें से अधिकांश सीएफ की वजह से नहीं है, लेकिन क्योंकि कोडर द्वारा कोड में व्हाइटस्पेस है, तो जवाब में मेरा योगदान देखें। – Travis

0

मुझे पता चला है कि व्हाइटस्पेस को खत्म करने के हर संभव तरीके का उपयोग करके, आपके कोड में अभी भी कुछ अवांछित रिक्त स्थान या लाइन ब्रेक हो सकते हैं। यदि आप अभी भी इसका अनुभव कर रहे हैं तो आपको वांछित आउटपुट के लिए अच्छी तरह से तैयार कोड बलिदान की आवश्यकता हो सकती है।

उदाहरण के लिए

के बजाय:

<cfprocessingdirective supressWhiteSpace = "true"> 
<cfquery ...> 
... 
... 
... 
</cfquery> 
<cfoutput> 
Welcome to the site #query.userName# 
</cfoutput> 
</cfprocessingdirective> 

आप कोड की जरूरत हो सकती:

<cfprocessingdirective supressWhiteSpace = "true"><cfquery ...> 
... 
... 
... 
</cfquery><cfoutput>Welcome to the site #query.UserName#</cfoutput></cfprocessingdirective> 

यह वह जगह है नहीं सीएफ खाली स्थान के जोड़ने, लेकिन जब आपके CF के स्वरूपण आप सफेद स्थान को जोड़ने

HTH

+0

ओह मेरा। अच्छी तरह से स्वरूपित कोड जो पठनीय और आसानी से समझा जाता है, HTML आउटपुट कोड में कुछ अतिरिक्त सफेद स्थान की तुलना में अधिक महत्वपूर्ण होना चाहिए। चलो भी अब। – Jay

+1

टॉमलाक के जवाब में टिप्पणियां देखें। ज्यादातर मामलों में हाँ, लेकिन जब यह बिल्कुल जरूरी नहीं है, जय। यह एक व्यवहार्य समाधान है जब व्हाइटस्पेस आपके सिस्टम को बॉट कर देगा और सीएफ आपके द्वारा डाले गए व्हाइटस्पेस को संभाल नहीं पाएगा। एक डॉक्टरेट से पहले व्हाइटस्पेस सत्यापन में त्रुटियों का कारण बन जाएगा। संवेदनात्मक सौंदर्य, लेकिन वास्तव में यह समस्या है यदि आपके ग्राहक वैध साइटों की आवश्यकता/आवश्यकता चाहते हैं। एक सादे पाठ वेब सेवा रिटर्न से पहले या बाद में व्हाइटस्पेस भी असुविधा का कारण बन सकता है। एक एक्सएमएल रिटर्न में अग्रणी व्हाइटस्पेस त्रुटियों का कारण बन सकता है जैसे "प्रोलॉग में सामग्री की अनुमति नहीं है।" – Travis

5

आप ColdFusion outpout बफर के लिए उपयोग हो रही द्वारा ColdFusion उत्पादन संशोधित कर सकते हैं। James Brown ने हाल ही में हमारे उपयोगकर्ता समूह मीटिंग (Central Florida Web Developers User Group) पर इसे डेमो किया।

<cfscript> 
    out = getPageContext().getOut().getString(); 
    newOutput = REreplace(out, 'regex', '', 'all'); 
</cfscript> 

ऐसा करने के लिए एक शानदार जगह Application.cfc onRequestEnd() में होगी। आपका परिणाम HTML की एक पंक्ति हो सकती है जिसे तब ब्राउज़र में भेजा जाता है। अपने वेब सर्वर के साथ GZip पर काम करें और आप बैंडविड्थ को एक बड़ा सौदा कर देंगे।

0

वैकल्पिक रूप से, आप यह सुनिश्चित कर सकते हैं कि आपका पूरा पृष्ठ एक चर के भीतर संग्रहीत है और यह सब प्रोसेसिंग cfsilent टैग के भीतर किया जाता है। जैसे

<cfsilent> 
    <!-- some coldfusion --> 
    <cfsavecontent variable="pageContent"> 
     <html> 
      <!-- some content --> 
     </html> 
    </cfsavecontent> 
    <!-- reformat pageContent if required --> 
</cfsilent><cfoutput>#pageContent#</cfoutput> 

अंत में, आप पृष्ठ सामग्री उत्पन्न करने के बाद कोई अतिरिक्त प्रसंस्करण कर सकते हैं लेकिन इसे आउटपुट करने से पहले उदा। अतिरिक्त सफेद जगह या कुछ कोड tidying को हटाने के लिए एक नियमित अभिव्यक्ति।

0

यदि आप सीएफसी का उपयोग करते हैं तो यहां एक टिप है।

आप उम्मीद नहीं कर रहे हैं तो आपके विधि किसी भी उत्पादन उत्पन्न करने के लिए, (आप CF9 स्क्रिप्ट शैली का उपयोग कर रहे केवल नहीं तो आवश्यक) <cffunction> और <cfcomponent> में output="false" का उपयोग करें। यह बहुत से अवांछित सफेद जगहों को खत्म कर देगा।

11

<cfsilent>, <cfsetting enablecfoutputonly="yes"> और <cfprocessingdirective suppressWhiteSpace = "true"> के अलावा <cfcontent reset="true" /> है। आप अपने दस्तावेज़ की शुरुआत में सफेद जगहों को हटा सकते हैं।

एचटीएमएल 5 दस्तावेज़ तो इस तरह शुरू होगा:

<cfcontent type="text/html; charset=utf-8" reset="true" /><!doctype html> 

XML दस्तावेज़:

<cfcontent reset="yes" type="text/xml; charset=utf-8" /><CFOUTPUT>#VariableHoldingXmlDocAsString#</CFOUTPUT> 

इस तरह आप नहीं मिलेगा -त्रुटि एक्सएमएल दस्तावेज़ों के लिए "सामग्री prolog में अनुमति नहीं है," ।

<cffunction name="getMyName" access="public" returntype="string" output="no"> 
    <cfreturn "Seybsen" /> 
</cffunction> 
0

आप सर्वर तक पहुँच है और लागू करना चाहते हैं: उदाहरण के लिए -

आप output -attribute का उपयोग किसी भी उत्पादन को दबाने और स्ट्रिंग के रूप में अपने परिणाम वापस जाने के लिए एक समारोह से अवांछित व्हाइटस्पेस मिल रहे हैं यह हर पृष्ठ अनुरोध पर trimflt.jar के लिए खोज और स्थापित करें। यह एक जावा सर्वलेट फ़िल्टर है जो इसे भेजने से पहले सभी व्हाइटस्पेस और लाइन ब्रेक को हटा देगा। सीएफ़ के/वेब-आईएनएफ/lib dir में जार ड्रॉप करें और फ़िल्टर जोड़ने के लिए web.xml फ़ाइल को संपादित करें। टिप्पणियों को हटाने, फ़ाइलों या एक्सटेंशन को बाहर करने, और विशिष्ट तारों को संरक्षित करने के लिए इसके कॉन्फ़िगर करने योग्य भी। बिना किसी समस्या के कुछ वर्षों तक इसे चला रहा था। इसे सेट करें और इसे हल करें।

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