प्रसंग
एक फ्रीलांस डेवलपर के रूप में काम करते हुए, मैंने अक्सर वेबसाइटों को पूरी तरह से XSLT पर आधारित बनाया। दूसरे शब्दों में, प्रत्येक अनुरोध पर, एक XML फ़ाइल उत्पन्न होती है, जिसमें हमें पृष्ठ सामग्री के बारे में जानने की आवश्यकता होती है: वर्तमान में लॉग इन किया गया उपयोगकर्ता का नाम, शीर्ष मेनू प्रविष्टियाँ, यदि यह मेनू गतिशील / विन्यास योग्य है, तो पाठ पृष्ठ के एक विशिष्ट क्षेत्र में प्रदर्शन, आदि। फिर XSL प्रक्रिया (कैश आदि) ब्राउज़र को भेजने के लिए इसे HTML / XHTML पृष्ठ पर भेजते हैं।
विशेष रूप से PHP के साथ छोटे पैमाने की वेबसाइटों को बनाना आसान बनाने के लिए यह एक अच्छा बिंदु है। यह एक प्रकार का टेम्पलेट इंजन है, लेकिन जिसे मैं अन्य टेम्पलेट इंजनों के लिए पसंद करता हूं क्योंकि यह अधिकांश टेम्पलेट इंजनों की तुलना में अधिक शक्तिशाली है, और क्योंकि मैं इसे बेहतर जानता हूं और इसे पसंद करता हूं। यह भी संभव है, जब अलग एपीआई बनाने की आवश्यकता के बिना, स्वचालित पहुंच की मांग पर कच्चे एक्सएमएल डेटा तक पहुंच प्रदान करने की आवश्यकता हो।
बेशक, यह किसी भी मध्यम-पैमाने या बड़े पैमाने पर वेबसाइट पर पूरी तरह से विफल हो जाएगा, क्योंकि, यहां तक कि अच्छी कैशिंग तकनीकों के साथ, एक्सएसएल अभी भी समग्र वेबसाइट प्रदर्शन को नीचा दिखाता है और इसके लिए अधिक सीपीयू सर्वरसाइड की आवश्यकता होती है।
सवाल
आधुनिक ब्राउज़रों में XML फ़ाइल लेने की क्षमता है और इसे XML में घोषित एक्सएलएस फ़ाइल के साथ बदलना है <?xml-stylesheet href="demo.xslt" type="text/xsl"?>
। फ़ायरफ़ॉक्स 3 कर सकते हैं। Internet Explorer 8 इसे भी कर सकते हैं।
इसका मतलब यह है कि सर्वर से क्लाइंट पक्ष के लिए XSL प्रसंस्करण को 50% उपयोगकर्ताओं (जहां मैं इसे लागू करना चाह सकता हूं, कई वेबसाइटों पर ब्राउज़र के आंकड़ों के अनुसार) पर माइग्रेट करना संभव है। इसका अर्थ है कि उन 50% उपयोगकर्ताओं को प्रत्येक अनुरोध पर केवल XML फ़ाइल प्राप्त होगी, इस प्रकार उनके और सर्वर की बैंडविड्थ को कम करने (XML फ़ाइल इसके संसाधित HTML एनालॉग की तुलना में बहुत कम होती है), और सर्वर के सीपीयू उपयोग को कम करता है।
इस तकनीक की कमियां क्या हैं?
मैंने कई लोगों के बारे में सोचा, लेकिन यह इस स्थिति में लागू नहीं होता है:
- ब्राउजर रिक्वेस्ट के आधार पर, जब XML भेजने के लिए और इसे HTML में बदलने के लिए कार्यान्वयन और चुनने की आवश्यकता को समझना मुश्किल है। जाहिर है, सिस्टम ज्यादा कठिन नहीं होगा तो वास्तविक एक। केवल परिवर्तन करने के लिए हर XML में XSL फ़ाइल लिंक जोड़ने के लिए, और एक ब्राउज़र जाँच जोड़ने के लिए है।
- अधिक IO और बैंडविड्थ उपयोग, चूंकि XSLT फ़ाइल को सर्वर द्वारा कैश किए जाने के बजाय, ब्राउज़र द्वारा डाउनलोड किया जाएगा। मुझे नहीं लगता कि यह एक समस्या होगी, क्योंकि XSLT फ़ाइल को ब्राउज़रों द्वारा कैश किया जाएगा (जैसे चित्र, या सीएसएस, या जावास्क्रिप्ट फ़ाइलें वास्तव में कैश की गई हैं)।
- संभवतः क्लाइंट की ओर से कुछ समस्याएं, जैसे कुछ ब्राउज़र में पेज को सहेजते समय समस्याएँ।
- कोड डिबग करने में कठिनाई: ब्राउज़र द्वारा वास्तव में उपयोग किए जा रहे HTML स्रोत को प्राप्त करना असंभव है, क्योंकि एकमात्र प्रदर्शित स्रोत डाउनलोड एक्सएमएल है। दूसरी ओर, मैं शायद ही कभी क्लाइंट कोड पर HTML कोड को देखता हूं, और ज्यादातर मामलों में, यह सीधे अनुपयोगी है (व्हाट्सएप को हटाया जा रहा है)।
ngx_http_xslt_module
या सभी चार के साथ थी)। मुझे अत्यधिक संदेह है कि XSLT 2.0 का क्लाइंट-साइड सपोर्ट बेहतर है।