2012-06-18 9 views
6

मैं किसी प्रकार के ऑनलाइन बहुउद्देशीय संपादक/कोऑप इंटरफ़ेस पर काम कर रहा हूं, जो एक पृष्ठ के जीवनकाल के दौरान AJAX अनुरोधों के बहुत से (हजारों में) कर रहा है।अजाक्स-गहन पृष्ठ: एक ही XMLHttpRequest ऑब्जेक्ट का पुन: उपयोग करें या हर बार नया बनाएं?

सबसे अच्छा होगा क्या: ('सर्वश्रेष्ठ' स्थिरता, संगतता के संदर्भ में, से बचने मुसीबत)

  1. एक XMLHttpRequest ऑब्जेक्ट बनाएँ और पुन: उपयोग है कि हर HTTP अनुरोध के लिए

  2. एक नया XMLHttpRequest बनाएं प्रत्येक HTTP अनुरोध के लिए ऑब्जेक्ट

  3. XMLHttpRequest ऑब्जेक्ट्स का एक गतिशील 'पूल' प्रबंधित करें, HTTP अनुरोध प्रारंभ करते समय एक नया निर्माण करें और कोई मौजूदा ऑब्जेक्ट उपलब्ध न हो, और पहले बनाए गए टैग को टैग करना bject 'उपलब्ध' के रूप में जब अपने पिछले अनुरोध सफलतापूर्वक पूरा कर लिया गया

मुझे लगता है कि 1 एक विकल्प नहीं है, कुछ अनुरोध के कारण विफल हो सकता है, मैं नए अनुरोधों की शुरुआत की जा सकती है, जबकि पिछले एक अभी तक पूरा नहीं हुआ है, आदि

2 के लिए, मुझे लगता है कि यह एक स्मृति रिसाव है, या परिणामस्वरूप पागल स्मृति/संसाधन उपयोग हो सकता है। या जब कोई अनुरोध समाप्त हो जाता है तो क्या मैं किसी ऑब्जेक्ट को बंद या हटा सकता हूं? (कहां/कैसे?) या जेएस कचरा कलेक्टर ठीक से इस पर ख्याल रखता है?

पहले कभी 3 कोशिश नहीं की लेकिन यह दोनों दुनिया के सर्वश्रेष्ठ की तरह लगता है। या वह अनावश्यक दृष्टिकोण है, या क्या मुझे अभी भी संभावित समस्याएं आ रही हैं? वास्तव में मैं कब समाप्त होने का अनुरोध मान सकता हूं (इस प्रकार, ऑब्जेक्ट नए अनुरोध के लिए उपलब्ध है), यह है कि जब तैयार चरण 4 और http स्थिति 200 प्राप्त हो रही है? (यानी क्या मुझे यकीन है कि उसके बाद कोई और अपडेट या कॉलबैक का पालन नहीं किया जाएगा?)

+0

बस सोच रहा है कि आप किस सर्वर का उपयोग करने की योजना बना रहे हैं और आपने किस इंटरनेट को झुकाया है क्योंकि यह स्क्रिप्ट यदि आप हजारों अनुरोधों के साथ सही हैं तो – gabeio

+0

का उपयोग करके अत्यधिक संसाधन है। इसके लिए मुझे एक क्रूर समर्पित सर्वर उपलब्ध है। लेकिन हजारों अनुरोध केवल कई घंटों के दौरान किए जाने की उम्मीद है, यह हर दूसरे या तो अनुरोध की तरह नहीं है। कुछ मिनटों की तरह, लेकिन यह कई घंटों तक ऐसा कर सकता है। –

+0

आह अच्छी तरह से जावास्क्रिप्ट ठीक करेगा यदि आपको तेज़ी से आवश्यकता होती है यानि प्रति सेकंड एक अनुरोध मैं फ्लैश या जावा एप्लेट – gabeio

उत्तर

3

आपको एक की आवश्यकता होने पर एक नया बनाएं। एक बार जब जरूरत नहीं है तो जीसी पुराने लोगों से निपटेंगे।

हालांकि, सहकारी संपादक की तरह कुछ के लिए आप हर समय अनुरोध भेजने के बजाय वेबसाकेट का उपयोग करने पर विचार करना चाहेंगे। एक छोटे HTTP अनुरोध का ओवरहेड विशाल है जबकि वेबसॉकेट कनेक्शन के साथ लगभग कोई ओवरहेड नहीं है।

+0

का उपयोग करने का सुझाव दूंगा, धन्यवाद, मैं अब आसान तरीका (बस हर बार एक नई वस्तु बना रहा हूं) के लिए जाउंगा, और देखो वेबसाकेट में भी। बस सुनिश्चित करने के लिए, आप नई HTML5 जावास्क्रिप्ट वेबस्केट चीज़ का जिक्र कर रहे हैं, है ना? –

+1

हां, और संभवतः यदि आवश्यक हो तो XHR फ़ॉलबैक को संभालने के लिए 'socket.io' जैसी लाइब्रेरी। – ThiefMaster

+0

आह, इससे पहले कभी नहीं सुना, धन्यवाद! हालांकि, एक बात http://socket.io/ पर कोड उदाहरणों में जावास्क्रिप्ट कोड सर्वर-साइड का उपयोग करने लगती है? उस कोड को निष्पादित करने के लिए कौन या क्या माना जाता है? –

संबंधित मुद्दे