स्पष्ट रूप से AJAX उपयोगकर्ता इंटरफ़ेस में सुधार करता है लेकिन क्या इससे सर्वर लोड भी कम होता है? आपको लगता है कि यह ऐसा करता है क्योंकि पूरे पृष्ठ को हर बार सेवा नहीं देनी होगी, लेकिन शायद अन्य चर भी हैं जिन पर मैं विचार नहीं कर रहा हूं।
स्पष्ट रूप से AJAX उपयोगकर्ता इंटरफ़ेस में सुधार करता है लेकिन क्या इससे सर्वर लोड भी कम होता है? आपको लगता है कि यह ऐसा करता है क्योंकि पूरे पृष्ठ को हर बार सेवा नहीं देनी होगी, लेकिन शायद अन्य चर भी हैं जिन पर मैं विचार नहीं कर रहा हूं।
जवाबों:
यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं और कैसे कर रहे हैं।
यदि आप AJAX अनुरोधों के साथ पूर्ण पृष्ठ लोड की जगह ले रहे हैं (यानी केवल AJAX कर रहा है जब कोई उपयोगकर्ता पूर्ण पृष्ठ लोड होता है पर क्लिक करता है) तो AJAX सर्वर लोड को कम कर देगा क्योंकि आप (संभवतः) कम प्रसंस्करण कर रहे हैं और कम वापसी कर रहे हैं डेटा।
दूसरी ओर, यदि आप ऑटो-अपडेट प्रकार AJAX जोड़ रहे हैं जो हर कुछ सेकंड में सर्वर को प्रदूषित करता है तो वह उपयोगकर्ता के आधार पर लोड बढ़ा सकता है (यदि उपयोगकर्ता मैन्युअल रूप से ताज़ा करने के लिए उपयोगकर्ता F5 को दबाए रखता है तो यह सर्वर लोड को बढ़ा नहीं सकता है, लेकिन ज्यादातर लोग आम तौर पर घंटों तक ऐसा नहीं करते हैं)
एक और AJAX ऑप्टिमाइज़ेशन केवल अधिक डेटा लोड करने के लिए है जैसे आप स्क्रॉल करते हैं। उस स्थिति में, यदि उपयोगकर्ता सभी तरह से नीचे स्क्रॉल नहीं करता है, तो वह बेकार हो जाता है।
वास्तव में कार्यान्वयन वास्तव में किसी भी तरह से परिणाम को तिरछा कर सकता है, ये विशिष्ट परिणाम हैं जो उचित रूप से अच्छा कार्यान्वयन मानते हैं।
बेशक यह सर्वर लोड को कम करने के लिए काम करता है। पर देखो इस प्रस्तुति @ jsconf'09 - के लिए कैसे फेसबुक ajax इस्तेमाल किया है कि क्या करना है।
अजाक्स async है। सर्वर संचार - और आप इसे असंख्य तरीकों से उपयोग कर सकते हैं। लोग साधारण JSON को वास्तविक-समय वेब पर लोड करने के लिए उपयोग करते हैं, और बीच में सब कुछ।
याद रखें - वास्तविक चुनौती क्लाइंट और सर्वर के बीच संतुलन है। प्रत्येक पार्टी को ऐसा करने के लिए प्रयास करें कि यह इस तरह से काम करे कि सिस्टम अनुकूलित हो और आपको पेरिसेड रिस्पांसिबिलिटी और वास्तविक गति के स्पष्ट लाभ मिलें।
ऐसे अन्य कारक हैं जिन पर आप विचार नहीं कर रहे हैं - ज्यादातर मामलों में, AJAX सर्वर लोड बढ़ाएगा। एक विशिष्ट, गैर-अजाक्स परिदृश्य में, एक उपयोगकर्ता हर कुछ सेकंड या कुछ मिनटों में एक बड़ा पृष्ठ लोड करता है। हां, वह एकल पृष्ठ सर्वर के लिए थोड़ा अधिक काम है, लेकिन अन्य अनुरोधों को पुनर्प्राप्त करने और उनकी सेवा करने के लिए अनुरोधों के बीच बहुत समय है। एक AJAXified परिदृश्य में, उस एकल पृष्ठ लोड पर अब दर्जनों छोटे हिट हैं, जो लगातार सर्वर को हथौड़ा कर रहे हैं और प्रतिक्रियाओं की प्रतीक्षा कर रहे हैं।
यह 1000 कटों से मौत जैसा है - अनुरोधों में से कोई भी अपने आप में बड़ा नहीं है, लेकिन कुल वजन एक हत्यारा है। विशेष रूप से जब आप यह विचार करना शुरू करते हैं कि ये छोटे अनुरोध पूर्ण पृष्ठ अनुरोध के रूप में सेवा करने के लिए महंगे हैं। दोनों ही मामलों में, आप संभवतः एक पूरे वेब एप्लिकेशन पाइपलाइन के माध्यम से चल रहे हैं, एक डेटाबेस को मार रहे हैं और एक अनमोल HTTP कनेक्शन पर बैठकर उत्तर की प्रतीक्षा कर रहे हैं।
यहाँ एक उदाहरण है कि कैसे अजाक्स सर्वर पर तेजी से वास्तविक रूप से बदसूरत हो सकता है। चलो एक विशिष्ट "कार्यकारी डैशबोर्ड" लेते हैं जो विजेट के लिए 4 स्लॉट्स की सुविधा देता है। मान लीजिए कि सीईओ को दाईं ओर एक पूर्ण बिक्री रिपोर्ट पसंद है, मध्य में कमाई करने वालों की शीर्ष 10 सूची और दाईं ओर एक कंपनी शेयर मूल्य रिपोर्ट। और मान लें कि हम इसे सरल अजाक्स रिमोट अनुरोध के माध्यम से करने जा रहे हैं। स्टाइलशीट, चित्र और अन्य परिसंपत्तियों को ध्यान में रखे बिना, आपके पेज को सर्वर के खिलाफ अब 4 HTTP राउंड ट्रिप (मुख्य पृष्ठ, डैशबोर्ड की प्रत्येक रिपोर्ट) की आवश्यकता होती है। इनमें से प्रत्येक को निष्पादित करने के लिए एक पूर्ण वेब स्टैक की आवश्यकता होती है - आप डेटाबेस को हिट करने और अपने वेब फ्रेमवर्क का उपयोग करके HTML रेंडर करने जा रहे हैं, है ना? अब एकल सीईओ को 2000 दूरस्थ उपयोगकर्ताओं से गुणा करें, जिनमें से कुछ के पास धब्बेदार कनेक्शन हैं।
इसके विपरीत, आपके पास एक एकल सर्वर-साइड पेज हो सकता है जो रिपोर्ट्स को रेंडर करने के लिए HTML कंकाल और साथ ही डेटा (इन-पेज JSON में शामिल) लौटाता है। वेब सर्वर पर एकल, बड़ा कनेक्शन लेकिन कम धड़कन क्योंकि आप 4 अनुरोधों को संभाल नहीं रहे हैं और 4 पाइपलाइनों को कताई कर रहे हैं, आदि।
यदि आप AJAX का उपयोग उस कार्य को बदलने के लिए कर रहे हैं जो सर्वर अन्यथा कर रहा होगा तो हाँ जो सर्वर कार्यक्षमता को बेहतर करेगा। हालाँकि, आप चीजों को डिज़ाइन कर सकते हैं ताकि सर्वर अभी भी उतना ही कर रहा है और अब जो कुछ AJAX के साथ हो रहा है वह सबसे ऊपर है जो सर्वर पहले से कर रहा था।
ज्यादातर यह यूआई सामान के बारे में है, क्योंकि आपको क्लाइंट-साइड पर कुछ और नहीं करना चाहिए। मूल रूप से, कुछ भी सर्वर UI का समर्थन करने के लिए कर रहा था (उदाहरण के लिए उपयोगकर्ता इनपुट के जवाब में एक अलग लेआउट के साथ पृष्ठ को फिर से लोड करें) इसके बजाय जावास्क्रिप्ट के साथ करें।
यदि HTML रेंडरिंग आपके एप्लिकेशन सर्वर के प्रदर्शन प्रोफ़ाइल का एक बड़ा हिस्सा है, तो क्लाइंट को HTML रेंडरिंग एप्लिकेशन सर्वर पर प्रदर्शन जीत हो सकती है।
हालाँकि, यदि HTML रेंडरिंग आपके एप्लिकेशन सर्वर के प्रदर्शन प्रोफ़ाइल का एक छोटा सा हिस्सा है, तो अधिक अनुरोधों का मतलब आमतौर पर स्टैक के माध्यम से अधिक यात्राएं, अधिक क्वेरीज़, एप्लिकेशन सर्वर पर सब कुछ, एक प्रदर्शन हानि होगा।
बेशक, आपके विशेष मामले में जानने का एकमात्र तरीका इसे आज़माना है।
आपको अपने समाधान को लागू करने के सर्वोत्तम तरीके पर विचार करना होगा। एक साधारण गैर गतिशील रूप को अजाक्स की आवश्यकता नहीं होती है और इसे जोड़ना वास्तव में पूर्णता को नुकसान पहुंचा सकता है। यदि आपकी समस्या खराब है, तो दुनिया में सभी अजाक्स अनुकूलन आपको एक प्रदर्शन वृद्धि नहीं मिलेगी जो स्वीकार्य होगी।
यदि आपका सर्वर ओवरवर्क हो गया है तो आपको यह पता लगाने की आवश्यकता है कि क्यों।
यदि आप हिट्स का एक बहुत कुछ कर रहे हैं, तो अजाक्स उस समस्या को ठीक करने वाला नहीं है जो आपको अधिक क्षमता की आवश्यकता है। अजाक्स जोड़ने से आपके सर्वर को संभालने के लिए अनुरोधों की संख्या बढ़ जाएगी।
यदि आपके पास एक जटिल पृष्ठ है, तो आपको यह देखना चाहिए कि क्या कुछ है जो आप अपने सर्वर पर लोड को कम करने के लिए क्लाइंट साइड कर सकते हैं। यदि आपका पेज डायनामिक है लेकिन वास्तव में एक सीमित डेटा पैकेज कैशिंग है जो क्लाइंट साइड समायोजन के लिए बेहतर भुगतान कर सकता है।
और कुछ समय अजाक्स मदद करेगा। जब आपके पास डायनामिक डेटा के साथ जटिल रूप होते हैं तो आज दिन जीतता है। लेकिन अगर आप प्रश्न जटिल हैं और दौड़ने में लंबा समय लेते हैं तो ajax अभी भी आपकी समस्या का समाधान नहीं करेगा।