2012-02-29 4 views
7

मैं अपने मैकबुक पर अंतर्निहित सर्वर का उपयोग कर रहा हूं।यदि मैंने gzipped जावास्क्रिप्ट फ़ाइलों का उपयोग किया है, तो मुझे क्रोम और फ़ायरफ़ॉक्स दोनों में अवैध चरित्र/टोकन त्रुटियां मिलती हैं

कहें मेरी स्क्रिप्ट foo.js. है

<script type="text/javascript" src="foo.js"></script> 

अगर मैं फ़ाइल gzip, हालांकि, दोनों ब्राउज़र मुझे एक अवैध टोकन/चरित्र त्रुटि मैं इस के लिए ऊपर लाइन बदलने के बाद दे देंगे: यह दोनों अपने परीक्षण ब्राउज़रों (फ़ायरफ़ॉक्स 10, क्रोम 17) में काम करता है:

<script type="text/javascript" src="foo.js.gz"></script> 

क्या देता है? क्या प्रकार को भी बदला जाना चाहिए या कुछ? इस तरह के अभ्यास कहां दस्तावेज है? जब भी मैं इसे वेब पर "स्क्रिप्ट्स को ज़िपित करने" के बारे में बताता हूं, तो कोई भी यह उल्लेख करने के लिए परेशान नहीं है कि आपको लिंक के साथ कुछ भी विशेष करने की आवश्यकता है।

+1

यह केंद्रीय सर्वर कॉन्फ़िगरेशन में किया जाना चाहिए, तो आपको मैन्युअल रूप से gzipped फ़ाइलों से निपटने की आवश्यकता नहीं है। यह सुनिश्चित नहीं है कि यह स्थानीय देव सर्वर पर अधिक समझ में आता है या नहीं? –

उत्तर

7

वेबसर्वर को ब्राउज़र को यह बताने की ज़रूरत है कि सामग्री gzipped है। यह content-encoding शीर्षलेख का उपयोग करके किया जाता है। हो सकता है कि आप इस हेडर को .gz में समाप्त होने वाली फ़ाइलों के साथ अपने वेबसर्वर को कॉन्फ़िगर कर सकें।

फ़ाइलों को स्थिर रूप से संपीड़ित करने के बजाय, वेबसर्वर के लिए ऑन-द-फ्लाई दस्तावेज़ों को संपीड़ित करने की कार्यक्षमता भी सामान्य है। इसका मतलब यह है कि आप सामान्य foo.js फ़ाइल को दस्तावेज़ रूट में डालते हैं, और क्लाइंट को भेजते समय इसे संपीड़ित करने के लिए वेबसर्वर को कॉन्फ़िगर करते हैं।

+0

यह सही जवाब दिखता है। दुर्भाग्यवश, मैं सही हेडर भेजने के लिए सर्वर को पुन: कॉन्फ़िगर नहीं कर सकता। मैंने /etc/apache2/httpd.conf में AddEncoding लाइनों को असम्बद्ध किया और सर्वर को पुनरारंभ किया, लेकिन इसका व्यवहार नहीं बदला है। –

+1

गतिशील संपत्तियों को गतिशील रूप से क्यों संपीड़ित करें? इसका कोई मतलब नहीं है? निर्माण प्रक्रिया में उन्हें संपीड़ित करें। –

2

यह त्रुटि तब भी हो सकती है जब आपकी gzip सेटिंग बहुत अधिक हो। मैंने gzip -9 और सही सामग्री-एन्कोडिंग भेजने पर भी कोशिश की है, मुझे यह त्रुटि मिली है। जब मैंने gzip file.js के माध्यम से एक नियमित gzip चलाया, तो यह सही ढंग से काम करता है।

+1

हू दिलचस्प है, मैं कोशिश करूँगा –

1

मुझे इसी प्रकार की त्रुटि थी। अपने foo.js. से संबंधित नेटवर्क टैब में चेक करें। प्रतिक्रिया शीर्षलेख में, अनुरोधित शीर्षलेख में सामग्री-एन्कोडिंग होना चाहिए: gzip और सामग्री-प्रकार: एप्लिकेशन/जावास्क्रिप्ट। अन्यथा, ब्राउज़र आपकी फ़ाइल को डिकंप्रेस नहीं करेगा। ब्राउज़र को पता होना चाहिए कि फाइल पर किस तरह की सामग्री एन्कोडिंग की जाती है।

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

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