2010-05-23 9 views
6

मैं एक webapp Zend फ्रेमवर्क और एक homebrew विजेट प्रणाली का उपयोग कर लिख रहा हूँ के साथ विजेट webapp ढांचे गठबंधन करने के लिए। प्रत्येक विजेट एक नियंत्रक है और अगर यह चुनता है कई दृश्यों में से एक प्रस्तुत करना चुन सकते हैं। यह वास्तव में हमें modularize और पुन: कॉन्फ़िगर और साइट पर कहीं भी विजेट का पुन: उपयोग में मदद करता है।कैसे एसईओ के अनुकूल है CSS और JS फ़ाइलों

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

कई समाधान है कि मैं के साथ आने कर लिया है:

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

  2. सभी विजेट सीएसएस को एक फ़ाइल (जेएस के साथ समान) में गठबंधन करें - जब कोई साइट पर प्रवेश करता है तो बड़े पैमाने पर लोड होता है, सीएसएस और जेएस को सभी विजेट्स के लिए मिश्रित करता है, इसलिए ट्रैक रखना मुश्किल होता है उनमें से, और अन्य समस्याएं जो मुझे यकीन है कि आप सोच सकते हैं।

  3. पृष्ठ को वितरित करते समय विधि 1 (अलग-अलग सीएसएस और जेएस प्रत्येक विजेट के लिए जेएस) का उपयोग करने वाली प्रणाली बनाएं, सभी सीएसएस और जेएस को एकसाथ सिलाई करें। यह स्पष्ट रूप से अधिक प्रसंस्करण समय और निश्चित रूप से इस तरह के एक प्रणाली के निर्माण, आदि की जरूरत है

मेरे प्रश्न क्या तुम लोग इन समाधानों के बारे में सोच या अगर कोई पहले से मौजूद समाधान है कि आप के बारे में पता कर रहे हैं (या कोई भी तकनीक जो मदद कर सकती है) इस समस्या को हल करें। मैं वास्तव में आपके सभी विचारों और टिप्पणियों की सराहना करता हूं !!

धन्यवाद दोस्तों,

अली

उत्तर

1

मैं निश्चित रूप से तीसरी विधि के लिए जाना होगा के जवाब भेजें। आपको पहली विधि में वर्णित पृथक्करण की लचीलापन मिलती है, लेकिन आप अपने आवेदन के प्रदर्शन को अंतिम रूप देने की क्षमता प्राप्त करते हैं (जैसा पॉइंटी द्वारा इंगित किया गया है ..)।

आपको केवल कुछ केंद्रीय रजिस्ट्री सिस्टम (एक कक्षा) की आवश्यकता है जिसका उपयोग आप स्टाइलशीट को लोड करने की आवश्यकता रखने के लिए करते हैं।

Styles::add_sheet('widget_1.css'); 

इसके अलावा, आप एक ट्रिगर (एक विधि) इस वर्ग के लिए इतना है कि कोड है जो कैशिंग संभालती है अगर श्रेणीबद्ध स्टाइलशीट के पुनर्निर्माण की जरूरत है ट्रैक कर सकते हैं जोड़ सकते हैं।

if (Styles::cache_needs_update()) { 
    // rebuild (concatenate) stylesheet and save in cache 
} 

भी आगे जाने के लिए, एक भी मॉड्यूल या criterium समूहीकरण के कुछ अन्य प्रकार से स्टाइलशीट जोड़ सकता है। जब कई स्टाइलशीट (या जेएस फाइलें) होती हैं तो स्टाइलशीट के इन समेकित समूहों को अलग से कैश किया जा सकता है।

ऊपर कोड नमूने

Styles::add_sheet('widget_1.css','group_name'); 

if (Styles::cache_needs_update('group_name')) { 
    // rebuild (concatenate) stylesheet for this 'group_name' and save in cache 
} 
की तरह कुछ हो जाएगा
2

विधि 2 के साथ, आप ब्राउज़र कैशिंग का लाभ लेने के लिए सक्षम हो जाएगा। यदि उपयुक्त हो, तो साइट पर एनवी आदि के साथ "फ्रंट दरवाजा" प्रविष्टि पृष्ठ है और विजेट लाइब्रेरी की कोई आवश्यकता नहीं है, तो आप लैंडिंग पृष्ठ लोड के बाद अन्य पृष्ठों के लिए सीएसएस और जेएस को प्री-लोड कर सकते हैं।

यदि आप अपने जेएस को YUICompressor जैसे किसी के माध्यम से चलाते हैं और फिर सुनिश्चित करें कि सर्वर जेएस और सीएसएस फाइलों को gzips करता है, तो आप वास्तव में उस सामान के बारे में बात नहीं कर रहे हैं जब तक आप कोड वास्तव में flabby नहीं है। आप किसी लाइब्रेरी Google के API भंडार की तरह एक विश्वसनीय साइट पर होस्ट का लाभ उठा है, तो आप शायद अपने खुद के कोड छोटे रख सकते हैं। (मुझे ज़ेंड के बारे में कुछ भी पता नहीं है, ताकि प्रासंगिक हो या न हो।)

0

यह सुनिश्चित नहीं है कि यह PHP में संभव है, लेकिन यदि आप पेज के हस्तांतरण को तब तक निष्पादित करने में सक्षम हैं जब तक पृष्ठ संसाधित नहीं हो जाता है;

  • प्रत्येक विजेट कुछ स्थिर विधि
  • जगह का उपयोग कर पृष्ठ पर शामिल करने रजिस्टर है प्रतिपादन पाइपलाइन कि पढ़ता है और शामिल विजेट्स के लिए सभी आवश्यक संसाधन concatenates में एक हुक
  • प्रतिक्रिया को संशोधित शामिल करने के लिए संसाधनों
  • ग्राहक
संबंधित मुद्दे