2012-11-17 18 views
7

के लिए बेहतर है, मुझे डेटा तालिका में हजारों रिकॉर्ड्स का डेटा स्टोर करना होगा और पोस्टबैक पर बनाए रखना होगा। कौन सा विकल्प मेरे लिए व्यूस्टेट (जिसे मैंने उपयोग किया) या सत्र के लिए उपयुक्त है। जब मैंने व्यूस्टेट का उपयोग किया तो यह इसे संग्रहीत करने के लिए छिपे हुए फ़ील्ड बनाएगा और पृष्ठ लोडिंग को धीमा कर देगा। तो सत्र में इसे संग्रहीत करने में कोई ओवरहेड (सर्वर साइड मेमोरी खपत और प्रतिक्रियाओं में देरी) है। कृपया मुझे समाधान देंप्रदर्शन व्यूस्टेट या सत्र

+1

आप सत्र या दृश्य-राज्य में रिकॉर्ड की हजार की दुकान नहीं करना चाहिए। –

+0

सर्वोत्तम अभ्यास क्या है तो –

+1

पृष्ठ पर केवल आवश्यक डेटा प्राप्त करें। जैसे कि आप ग्रिड बांधने के लिए डेटा-टेबल का उपयोग कर रहे हैं। फिर डेटा-टेबल में केवल वे डेटा होना चाहिए जो ग्रिडव्यू के वर्तमान पृष्ठ पर आवश्यक हैं। –

उत्तर

12

बड़ी मात्रा में डेटा के लिए, सत्र रास्ता अधिक कुशल है। यदि आप पता लगा सकते हैं कि उपयोगकर्ता डेटा के किसी विशेष ब्लॉक के साथ कब किया जाता है, तो मेमोरी ओवरहेड की सहायता के लिए सत्र परिवर्तक को शून्य पर सेट करें। आप हमेशा ऐसा नहीं कर सकते हैं, लेकिन सत्र अंततः समाप्त हो जाएगा और फिर स्मृति को पुनः दावा किया जाएगा। सत्र टाइमआउट को कम करने से कुछ मदद मिल सकती है, लेकिन इसे बहुत छोटा सेट न करें, आप अपने उपयोगकर्ताओं को काटना नहीं चाहते हैं। सत्र को आपकी Web.config फ़ाइल में सक्षम होना आवश्यक है।

ViewState:

यहाँ बनाम ViewState सत्र के लिए बुनियादी दिशा निर्देशों है ViewState की बाइनरी डेटा संरचना Base64 पेज है, जो इसका मतलब है में रखा जाना इनकोडिंग 1.3333 बार (8/6) आकार है मूल बाइनरी डेटा का। यह डेटा प्रत्येक पृष्ठ दृश्य के लिए अपलोड और डाउनलोड किया जाता है। तो यदि आपके पास व्यूस्टेट में बहुत कुछ है तो यह पेज प्रतिक्रिया समय को प्रभावित करता है। बेस 64 एन्कोडिंग शायद अत्यधिक अनुकूलित है, इसलिए यह एक प्रदर्शन हिट नहीं है। प्रत्येक पृष्ठ अनुरोध व्यूस्टेट के लिए स्थान आवंटित करेगा, फिर फ्री अप करेगा, इसलिए यह दीर्घकालिक स्मृति हिट नहीं है। चूंकि डेटा पृष्ठ में है, इसलिए यह समाप्त नहीं होता है।

सत्र: सत्र में सभी डेटा पृष्ठ लोड के बीच वेब सर्वर में संरक्षित है। यह पृष्ठ को छोटा रखता है, इसे केवल सत्र पहचानकर्ता को ले जाना पड़ता है। नीचे की ओर, सत्र में डेटा स्टोर करने के लिए उपयोग की जाने वाली कोई भी स्मृति सत्र समाप्त होने तक आवंटित रहती है। मैंने सोचा है कि सत्र द्विआधारी डेटा की प्रतिलिपि बनाता है या सिर्फ एक सूचक रहता है। बेस 64 एन्कोडिंग की तरह, इसे अत्यधिक अनुकूलित किया जा सकता है, इसलिए यदि ऐसा होता है तो यह प्रदर्शन हिट नहीं होता है। यदि सत्र पृष्ठ दृश्यों के बीच उपयोगकर्ता बहुत लंबा इंतजार कर रहा है, तो सत्र समाप्त हो सकता है। यदि सत्र समाप्त हो जाता है, तो उसे उपयोगकर्ता को वेब पेज में कुछ ज्ञात स्थिति में वापस कर देना चाहिए।

यदि आप सत्र में जानकारी संग्रहीत कर रहे हैं, तो एक अन्य समस्या, सत्र आईडी क्लाइंट ब्राउज़र में एकाधिक टैब के बीच साझा की जा सकती है। आपको सावधान रहना होगा कि आप सत्र में संग्रहीत डेटा का उपयोग कैसे कर रहे हैं। सुनिश्चित करें कि आप इसके लिए परीक्षण करें ताकि आपके उपयोगकर्ताओं को अप्रत्याशित परिणाम न मिले।

(नोट: का प्रयोग ViewState RESTful है, सत्र नहीं है।)

+0

क्या होगा यदि मैं व्यूस्टेट के बजाय पूरी तरह से सत्र चर का उपयोग करता हूं? –

+0

व्यूस्टेट अधिक टिकाऊ है, क्योंकि यह उपयोगकर्ता के ब्राउज़र द्वारा बनाए रखा जाता है। तो यदि कोई उपयोगकर्ता एक घंटे के लिए एक पृष्ठ पर बैठता है, तो कहीं भी क्लिक करता है, पृष्ठ अभी भी व्यूस्टेट बनाए रखेगा, जबकि सत्र शायद समाप्त हो जाएगा। चाल सही संतुलन को ढूंढना है। – gmlobdell

+0

हाँ आप सही हैं लेकिन मुझे कुछ अलग चाहिए, दोनों मामलों में पेज लोड करते समय स्मृति खपत और समय की आवश्यकता होगी –