मैं एक ऐप्स जहाँ मैं कैशिंग बातें शुरू करने की आवश्यकता पर बात करने के लिए हो रही है, और यह मेरे सोच कर ली ...मैं जावास्क्रिप्ट और जावास्क्रिप्ट HTML टेम्पलेट्स में बस पूरे वेब ऐप का निर्माण क्यों नहीं करता?
- एप्लिकेशन के कुछ भागों में, मैं तालिका पंक्तियों (jqGrid, slickgrid प्रस्तुत करना, इत्यादि) या फैंसी डिव पंक्तियां (जैसे कि नए ट्विटर में) शुद्ध JSON को पकड़कर और मूंछ, jquery.tmpl, आदि जैसे कुछ के माध्यम से इसे चलाकर
- ऐप के अन्य हिस्सों में, मैं केवल शुद्ध HTML में जानकारी प्रस्तुत करता हूं (सर्वर-साइड एचएएमएल टेम्पलेट्स), और यदि खोज/पेजिंग हो रहा है, तो मैं बस एक नए यूआरएल पर जाता हूं और एक नया HTML पेज लोड करता हूं।
अब समस्या कैशिंग और रखरखाव में है।
एक तरफ मैं सोच रहा हूं, अगर सब कुछ जावास्क्रिप्ट HTML टेम्पलेट्स का उपयोग करके बनाया गया था, तो मेरा ऐप सिर्फ एक HTML लेआउट/खोल, और JSON का एक गुच्छा प्रदान करेगा। यदि आप फेसबुक और ट्विटर एचटीएमएल स्रोत देखते हैं, तो मूल रूप से वे क्या कर रहे हैं (95% जेसन/जावास्क्रिप्ट, 5% एचटीएमएल)। यह ऐसा करेगा जिससे मेरा ऐप केवल JSON (पृष्ठों, कार्यों, और/या अभिलेख) को कैश करने की आवश्यकता हो। जिसका मतलब है कि आप कैश को दबाएंगे, इससे कोई फर्क नहीं पड़ता कि आप किसी जेएसओएन एपीआई या स्ट्रेट वेब ऐप तक पहुंचने वाले कुछ रिमोट एपीआई डेवलपर थे। यही है, मुझे जेएसओएन के लिए 2 कैश की आवश्यकता नहीं है, एक HTML के लिए। ऐसा लगता है जैसे यह मेरे कैश स्टोर को आधा में कटौती करेगा, और चीजों को थोड़ा सा व्यवस्थित करेगा।
दूसरी ओर, मैं सोच रहा हूं कि मैंने जो देखा/अनुभव किया है, स्थिर एचटीएमएल सर्वर-साइड उत्पन्न कर रहा है, और कैशिंग, यह बेहतर प्रदर्शन के रूप में क्रॉस-ब्राउज़र लगता है; आपको ग्राफिक्स तुरंत मिलते हैं और इसे प्रस्तुत करने के लिए जावास्क्रिप्ट के लिए उस स्प्लिट-सेकंड का इंतजार नहीं करना पड़ता है। StackOverflow सादा HTML में सब कुछ करने लगता है, तो Google करता है, और आप बता सकते हैं ... सबकुछ एक बार में दिखाई देता है। ध्यान दें कि twitter.com पर, पृष्ठ 5-1 सेकंड के लिए खाली है, और पृष्ठ में भाग आता है: जावास्क्रिप्ट को जेसन प्रस्तुत करना होगा। इसके साथ नकारात्मकता यह है कि, गतिशील (जैसे अंतहीन स्क्रॉलिंग, या ग्रिड) के लिए, मुझे जावास्क्रिप्ट टेम्पलेट्स को वैसे भी बनाना होगा ... इसलिए अब मेरे पास सर्वर-साइड एचएएमएल टेम्पलेट्स, क्लाइंट-साइड जावास्क्रिप्ट टेम्पलेट्स और बहुत कुछ है कैश करने के लिए और अधिक।
मेरा सवाल यह है कि इस दृष्टिकोण के बारे में कोई सहमति है? दो बनाम एक दूसरे के साथ 100% के साथ मिश्रण करने के अपने अनुभव से लाभ और कमी क्या हैं?
अद्यतन:
कुछ कारण है कि कारण है कि मैं अभी तक 100% जावास्क्रिप्ट templating साथ जाने के लिए निर्णय नहीं किया है में कारक हैं:
- प्रदर्शन। औपचारिक रूप से परीक्षण नहीं किया है, लेकिन मैंने जो देखा है, कच्चे एचटीएमएल जावास्क्रिप्ट से उत्पन्न एचटीएमएल क्रॉस-ब्राउजर की तुलना में तेजी से और अधिक तरलता प्रदान करता है। इसके अलावा, मुझे यकीन नहीं है कि मोबाइल डिवाइस डायनामिक एचटीएमएल प्रदर्शन-वार कैसे संभालते हैं।
- परीक्षण। मेरे पास बहुत से एकीकरण परीक्षण हैं जो स्थैतिक एचटीएमएल के साथ अच्छी तरह से काम करते हैं, इसलिए जावास्क्रिप्ट पर स्विच करने के लिए केवल 1) अधिक केंद्रित शुद्ध जावास्क्रिप्ट परीक्षण (jasmine), और 2) कैप्बारा एकीकरण परीक्षण में जावास्क्रिप्ट को एकीकृत करना होगा। यह सिर्फ समय और काम का मामला है, लेकिन यह शायद महत्वपूर्ण है।
- रखरखाव। HAML से छुटकारा पा रहा है। मुझे HAML पसंद है, यह लिखना इतना आसान है, यह सुंदर HTML प्रिंट करता है ... यह कोड को साफ करता है, यह रखरखाव को आसान बनाता है। जावास्क्रिप्ट के साथ जाकर, संक्षेप में कुछ भी नहीं है।
- एसईओ।मुझे पता है कि Google AJAX
/#!/path
को संभालता है, लेकिन यह नहीं समझता है कि यह अन्य खोज इंजनों को कैसे प्रभावित करेगा और पुराने ब्राउज़र इसे कैसे संभालते हैं। ऐसा लगता है कि इसे एक महत्वपूर्ण सेटअप की आवश्यकता होगी।
के लिए जानकारी देने के लिए आपको लगता है कि चहचहाना देखा हो सोच रहा था पेज लोड करने के लिए तुरंत 0.5-1 लेते हैं। क्या लोडिंग ब्राउज़र के लिए प्रतीक्षा कर रही है या जावास्क्रिप्ट के लिए थोड़ा अंतर बनाता है। – Raynos
अच्छा सवाल। यह जवाब पढ़ने के लिए दिलचस्प होगा। यदि प्रदर्शन महत्वपूर्ण था तो मैं स्थैतिक HTML और टेम्पलेट्स के साथ मिश्रित दृष्टिकोण के लिए जाऊंगा। – jimmystormig
अपडेट करें। बनाया http://towerjs.org। अब मैं जावास्क्रिप्ट और जावास्क्रिप्ट टेम्पलेट्स में पूरा ऐप बना रहा हूं। –