यहाँ कुछ अनुकूलन किए गए हैं जिनसे आप चीजों को गति दे सकते हैं। बस जोर से सोच रहा था।
चूंकि पंक्तियों की संख्या लाखों में हो सकती है, इसलिए आप सर्वर से केवल JSON डेटा के लिए एक कैशिंग सिस्टम चाहते हैं। मैं किसी को भी सभी एक्स मिलियन आइटम डाउनलोड करने की इच्छा नहीं कर सकता, लेकिन अगर उन्होंने किया, तो यह एक समस्या होगी। 20M + सरणी पर सरणी के लिए Chrome पर यह थोड़ा परीक्षण मेरी मशीन पर लगातार क्रैश होता है।
var data = [];
for(var i = 0; i < 20000000; i++) {
data.push(i);
}
console.log(data.length);
आप LRU या कुछ अन्य कैशिंग एल्गोरिथ्म का उपयोग कर सकते हैं और एक ऊपरी सीमा है कि आप कितना डेटा कैश करने के लिए तैयार हैं।
स्वयं तालिका कोशिकाओं के लिए, मुझे लगता है कि DOM नोड्स का निर्माण / विनाश महंगा हो सकता है। इसके बजाय, आप केवल X संख्या की कोशिकाओं को पूर्व-परिभाषित कर सकते हैं, और जब भी उपयोगकर्ता किसी नई स्थिति पर स्क्रॉल करता है, तो JSON डेटा को इन कक्षों में इंजेक्ट करता है। स्क्रॉलबार का वास्तव में कोई सीधा संबंध नहीं होता है कि संपूर्ण डेटासेट का प्रतिनिधित्व करने के लिए कितनी जगह (ऊंचाई) की आवश्यकता होती है। आप मनमाने ढंग से टेबल कंटेनर की ऊँचाई सेट कर सकते हैं, 5000px कह सकते हैं, और कुल पंक्तियों की संख्या के अनुसार मैप कर सकते हैं। उदाहरण के लिए, यदि कंटेनरों की ऊँचाई 5000px है और कुल 10M पंक्तियाँ हैं, तो कंटेनर के ऊपर से स्क्रॉल की दूरी starting row ≈ (scroll.top/5000) * 10M
कहाँ है scroll.top
। यहां छोटा डेमो ।
अधिक डेटा का अनुरोध करने के लिए पता लगाने के लिए, आदर्श रूप से एक वस्तु को एक मध्यस्थ के रूप में कार्य करना चाहिए जो घटनाओं को स्क्रॉल करने के लिए सुनता है। यह ऑब्जेक्ट इस बात पर नज़र रखता है कि उपयोगकर्ता कितनी तेज़ी से स्क्रॉल कर रहा है, और जब यह दिखता है कि उपयोगकर्ता धीमा हो रहा है या पूरी तरह से बंद हो गया है, तो संबंधित पंक्तियों के लिए एक डेटा अनुरोध करता है। इस तरह से डेटा को पुनः प्राप्त करने का अर्थ है कि आपका डेटा खंडित होने वाला है, इसलिए कैश को उसी के साथ डिज़ाइन किया जाना चाहिए।
साथ ही अधिकतम आउटगोइंग कनेक्शन पर ब्राउज़र की सीमा एक महत्वपूर्ण भूमिका निभा सकती है। एक उपयोगकर्ता एक निश्चित स्थिति पर स्क्रॉल कर सकता है जो AJAX अनुरोध को आग देगा, लेकिन इससे पहले कि उपयोगकर्ता किसी अन्य भाग को स्क्रॉल कर सके। यदि सर्वर उत्तरदायी नहीं है, तो अनुरोध कतारबद्ध हो जाएंगे और एप्लिकेशन अप्रतिसादी लगेगा। आप एक अनुरोध प्रबंधक का उपयोग कर सकते हैं जिसके माध्यम से सभी अनुरोधों को रूट कर दिया जाता है, और यह स्थान बनाने के लिए लंबित अनुरोधों को रद्द कर सकता है।