2012-06-11 23 views
6

एक व्यूस्टेट संग्रहीत कहां है? क्या यह सर्वर या क्लाइंट साइड में संग्रहीत है?व्यूस्टेट कहां संग्रहीत किया जाता है?

मेरे पास एक विशाल डेटा है जिसे कुछ प्रक्रिया के लिए संग्रहीत किया जाना चाहिए। मैं सत्र का उपयोग कर रहा था। लेकिन जब एक पृष्ठ से दूसरे में स्थानांतरित हो जाता है तो मैं सत्र को साफ़ करने में सक्षम नहीं हूं। तो मैंने व्यूस्टेट को लागू करने के बारे में सोचा। लेकिन जब बड़ी मात्रा में डेटा चल रहा है ViewState त्रुटि फेंक रहा है?

मैं इसे कैसे हल कर सकता हूं?

+0

आप बेहतर एएसपी.NET कैश में देखते हैं, तो आप इसे अपनी आवश्यकताओं के लिए उपयुक्त पाते हैं। –

उत्तर

8

व्यूस्टेट पृष्ठ पर स्वयं को एन्कोडेड रूप में संग्रहीत किया जाता है। आप क्लाइंट साइड में सीधे तरीके से व्यूस्टेट तक नहीं पहुंच सकते हैं। क्लाइंटसाइड कोड में इस व्यूस्टेट से मूल्यवान डेटा लाने के लिए आपको एन्कोडिंग/डिकोडिंग एल्गोरिदम को जानने की आवश्यकता है।

आप डेटा को संग्रहीत करने के लिए छुपे हुए चर का उपयोग कर सकते हैं जिसका उपयोग केवल उस पृष्ठ पर किया जाएगा। छुपे हुए चर क्लाइंट साइड और सर्वर साइड कोड से सुलभ हैं।

आप डेटाटेबल (बड़े डेटा) को स्टोर करने के लिए कैश या सत्र का उपयोग कर सकते हैं। व्यूस्टेट की तुलना में उनके पास अच्छा प्रदर्शन होगा।

कैश हमेशा मशीन की स्मृति उपयोग कर रहा है, सत्र का उपयोग करता है क्या कॉन्फ़िगर किया गया है:

एक वेब खेत सत्र स्थानीय हो सकता है (जो केवल यदि आत्मीयता सेट किया गया है काम करता है) में, या दूरदराज के (राज्य सर्वर या डेटाबेस, या कस्टम), लेकिन कैश हमेशा स्थानीय है।

तो, कैश में डेटाटेबल संग्रहीत करने से स्मृति का उपभोग होगा, लेकिन यह क्रमबद्धता का उपयोग नहीं करेगा।

पीएस: डेटाटेबल के बजाय डेटासेट स्टोर करना लगभग कुछ भी नहीं बदलेगा।

Refer Cache Implementation

+0

http://msdn.microsoft.com/en-us/library/bb386448.aspx और http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- से व्यूस्टेट के बारे में और पढ़ें एएसपी-नेट -4-0.aspx –

+0

"आप क्लाइंट साइड में व्यूस्टेट तक नहीं पहुंच सकते हैं।" वास्तव में, आप इसे एक्सेस कर सकते हैं, क्योंकि यह एन्क्रिप्ट नहीं किया गया है (डिफ़ॉल्ट रूप से)। हालांकि, इसे बदला नहीं जा सकता है, क्योंकि इसमें एक हैश है जिसे एएसपी.नेट द्वारा सत्यापित किया जाएगा। – Steven

+0

@ स्टीवन, मैं आपसे सहमत हूं कि हम व्यूस्टेट तक पहुंच सकते हैं लेकिन यह उन तक पहुंचने के लिए उपयोगी नहीं होगा क्योंकि हम व्यूस्टेट चर से वास्तविक/डीकोडेड मूल्य कैसे प्राप्त करेंगे। –

7

ViewState दोनों तरफ संग्रहीत नहीं है, इसे आगे और पीछे सर्वर और हर अनुरोध और प्रतिक्रिया पर ब्राउज़र के बीच भेजने के लिए, तो यह एक अच्छा विचार ViewState में डेटा की एक बड़ी राशि डाल करने के लिए नहीं है ।

1

अपनी साइट के दृश्य-राज्य मंदी में बड़ी मात्रा में डेटा बचाएं। पिछले पृष्ठ से पूरी जानकारी सहेजने के बजाय प्रत्येक पृष्ठ पर डेटाबेस से ताजा प्रति प्राप्त करने के लिए क्वेरी स्ट्रिंग का उपयोग करें।

0

छिपा फ़ील्ड में राज्य सूचना स्टोर देखें। जानकारी इस छिपे हुए फ़ील्ड में सर्वर और क्लाइंट के बीच यात्रा करती है।

एएसपीनेट नियंत्रण के लिए, डिफ़ॉल्ट रूप से .नेट लागू करता है, इसके सभी नियंत्रणों के लिए राज्य को देखते हैं, इसलिए जब हम उस पृष्ठ के बटन पर क्लिक करते हैं तो टेक्स्टबॉक्स मान खो नहीं जाता है।

3

व्यूस्टेट संग्रहीत किया जाता है जहां आप इसे बताते हैं। डिफ़ॉल्ट रूप से, यह क्लाइंट को भेजे गए पृष्ठ पर एक छिपे हुए फ़ील्ड में है।

ASP.NET can also store ViewState inside the Session, यानी सर्वर पर, यदि आप इसे बताते हैं।