2009-07-04 8 views
6

ड्रोपल के दौरान मैं एक अजीब व्यवहार में आया। मैंने कुछ मॉड्यूल बदल दिए जो पृष्ठ पर 5 से 10 लिंक टैग जोड़े गए। हालांकि इन नई स्टाइलशीट को फ़ायरफ़ॉक्स में कैस्केड में जोड़ा गया था, आईई 8 में, इन्हें ब्राउज़र ने पहले जोड़े गए सीएसएस फ़ाइलों को पदानुक्रम से त्याग दिया था। असल में, पहली फाइलें पहले जाने वाली थीं, जो पूरी तरह से पृष्ठ की स्टाइल को खराब कर देती थीं और मुझे थोड़ी देर के लिए अपने सिर को खरोंच कर रही थीं। आखिर में मैंने पाया कि नए जोड़े गए मॉड्यूल ने आईई को कुछ आंतरिक दहलीज पारित करने के लिए प्रेरित किया था, जहां यह अब और नया नहीं जोड़ सका।आईई प्रश्न: कितने सीएसएस में यह संभाल सकता है?

क्या किसी ने इस व्यवहार को पहले देखा है? मुझे यकीन नहीं है कि यह ब्राउज़र या मेरे सेटअप के साथ कोई समस्या है या नहीं।

उत्तर

13

इंटरनेट एक्सप्लोरर की अधिकतम सीमा 32 सीएसएस फ़ाइल लिंक है। निश्चित रूप से एक ब्राउज़र मुद्दा। आपको अपने सीएसएस अनुरोधों को मजबूत करने के बारे में सोचना होगा।

आम तौर पर यदि आप स्थैतिक फाइलें हैं तो आप उन्हें संयोजित करके ऐसा कर सकते हैं, लेकिन यदि आप उन्हें प्रोग्रामेटिक रूप से उत्पन्न कर रहे हैं, तो आपको ब्राउज़र में पारित होने से पहले प्रतिक्रिया में हेरफेर करने का समाधान देखना पड़ सकता है।

हमें अपने एंटरप्राइज़ एएसपी.Net प्रोजेक्ट के लिए इस मुद्दे को हल करना पड़ा और एक "सीएसएस मल्टीप्लेक्सर" लिखना समाप्त हुआ जिसने प्रतिक्रिया की जांच की, अनुरोधित सीएसएस लिंक पाया, एक बड़ी सीएसएस फ़ाइल के लिए एक वेब संसाधन उत्पन्न किया, और आउटपुट इसके बजाय एक लिंक।

+0

ड्रूपल पहले से ही ऐसा कर सकता है। यह व्यवस्थापक> साइट कॉन्फ़िगरेशन> प्रदर्शन में पाया जा सकता है। – Joey

+0

अच्छा। .NET 3.5 ने कुछ हद तक इस क्षमता को भी जोड़ा। – womp

+1

उग्गग - सीमा 31 सीएसएस फ़ाइल लिंक है। – codefactor

3

मुझे इस साइट पर हमारी समस्या का सामना करना पड़ा।

आईई 8 केवल प्रति फ़ाइल 32 सीएसएस आयात की अनुमति देता है। वह फ़ाइल एक HTML फ़ाइल या एक सीएसएस फ़ाइल हो सकती है। (*) हालांकि, आयात सीमा आपको 32 सीएसएस फाइलों तक सीमित नहीं करती है। आप अपने एचटीएमएल में दो सीएसएस फाइलों से लिंक कर सकते हैं, जिनमें से प्रत्येक @imports 32 सीएसएस फाइलें। इस तरह की चाल के साथ खेलना आपको जितना चाहें उतना प्राप्त करना चाहिए।

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

यह ठीक काम करता है, लेकिन इसके परिणामस्वरूप बहुत से HTTP अनुरोध होते हैं, इसलिए हम केवल विकास प्रणालियों पर इस कार्यवाही का उपयोग करते हैं। हमारी लाइव साइट्स के लिए हमारे पास एक बिल्ड चरण है जो सभी सीएसएस को एक फ़ाइल में संकलित करता है।

क्या जोहानिस उल्लेख किया है - अपने सीएसएस एकत्र करने के लिए Drupal हो रही - सबसे अच्छा शर्त की तरह लगता है।

(*) कुछ अच्छे प्रिंट हैं जैसे: 32 आयात में सीएसएस फ़ाइलें शामिल हैं जो आपके एचटीएमएल पेज से श्रृंखला में पहले ही आयात की जा चुकी हैं। तो यदि आपका एचटीएमएल एक सीएसएस फ़ाइल आयात करता है, तो वह सीएसएस फ़ाइल केवल 31 अन्य दूसरी-स्तरीय सीएसएस फाइलों को आयात कर सकती है, और प्रत्येक सेकेंड-स्तरीय सीएसएस फ़ाइल केवल 30 अन्य तीसरी-स्तरीय सीएसएस फाइलों को आयात कर सकती है। आपको वास्तव में आश्चर्य करना होगा कि विचित्र एल्गोरिदम इस सीमा का कारण बनता है ...

+0

उग्गग - सीमा 31 सीएसएस फ़ाइल लिंक है। और एक @import केवल 31 सीएसएस फाइलों को आयात कर सकता है। – codefactor

0

सीमा 31 है - 32 नहीं!

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

  1. बड़ी फ़ाइलों में मजबूत बनाने के द्वारा सीएसएस फ़ाइलों की संख्या कम करें:

    वहाँ समस्या को कम करने के लिए कई तरीके हैं गठबंधन और अपने सभी सीएसएस फ़ाइलों

  2. उपयोग @import url(...) बयानों के बजाय <link href=""> को कम से कम लेकिन याद है कि आप केवल 31 @import हो सकता है (फिर से, नहीं 32 ...) एक स्टाइलशीट में बयान

उपयोग # 2 सावधानी क्योंकि साथ ऊपर:

  1. आप केवल (961 सीएसएस फ़ाइलों के लिए) सीमा से बढ़ रही हैं इसे हटाने नहीं
  2. ब्राउज़र में के बजाय श्रृंखला में सीएसएस फ़ाइलों को डाउनलोड करने के लिए मजबूर हो जाएगा parellel। आम तौर पर एक ब्राउज़र एक समय में 1 से अधिक सीएसएस फ़ाइल डाउनलोड कर सकता है (गणना इस बात पर निर्भर करती है कि फाइलें एक ही डोमेन में हैं और आप किस ब्राउज़र का उपयोग कर रहे हैं) - इसका प्रदर्शन पर महत्वपूर्ण प्रभाव हो सकता है।
  3. प्रत्येक सीएसएस फ़ाइल को अतिरिक्त समय जोड़ने वाले सर्वर के लिए एक राउंड ट्रिप की आवश्यकता होती है।
संबंधित मुद्दे