2011-02-23 17 views
61

उपर्युक्त सभी के लिए उचित उपयोग केस क्या है? ऐसा लगता है कि सत्र और कैश काफी समान हैं, और मैं आवेदन के लिए ज्यादा उपयोग नहीं कर सकता।आवेदन बनाम सत्र बनाम कैश

+12

आप कुकी, क्वेरी स्ट्रिंग, और viewstate – CarneyCode

+0

जोड़ने के लिए चाहते हो सकता है यह यहाँ चर्चा की है: http://www.velocityreviews.com/forums/t113590-caching-vs-session.html – CarneyCode

उत्तर

96

आवेदन और सत्र स्थिति एक बहुत ही महत्वपूर्ण अंतर है:

एप्लीकेशन स्टेट ASP.NET अनुप्रयोग में सभी वर्गों के लिए उपलब्ध डेटा संग्रह होता है। एप्लिकेशन स्थिति सर्वर पर स्मृति में संग्रहीत है और डेटाबेस में जानकारी संग्रहीत करने और पुनर्प्राप्त करने से तेज़ है। सत्र स्थिति के विपरीत, जो एक एकल उपयोगकर्ता सत्र के लिए विशिष्ट है, आवेदन स्थिति सभी उपयोगकर्ताओं और सत्र पर लागू होती है। इसलिए, आवेदन राज्य अक्सर इस्तेमाल डेटा की थोड़ी मात्रा है कि एक उपयोगकर्ता से दूसरे

Application State Overview
Session State Overview

कैशिंग करने के लिए परिवर्तन नहीं करता है, दूसरे हाथ पर स्टोर करने के लिए एक उपयोगी जगह है, आप वस्तुओं को संग्रहीत करने देता स्मृति में को बनाने के लिए व्यापक सर्वर संसाधनों की आवश्यकता होती है - यह शक्तिशाली सुविधाएं प्रदान करता है जो आपको अनुकूलित करने की अनुमति देता है कि आइटम कैसे कैश किए जाते हैं और कितने समय तक कैश किए जाते हैं - आप प्राथमिकता और समाप्ति जैसे व्यापक गुण सेट कर सकते हैं।

Caching Application Data Overview

हालांकि वे समान दिखाई दे सकता है, उन्हें स्पष्ट रूप अलग-अलग हैं और अलग-अलग भूमिकाओं अपने व्यापक अर्थों में ASP.NET अनुप्रयोग में खेलने के लिए है।

+0

'स्मृति में ऑब्जेक्ट्स' के लिए हमारा क्या मतलब है जिसके लिए व्यापक सर्वर संसाधन बनाने की आवश्यकता है? अगर मुझे स्ट्रिंग की-वैल्यू जोड़ी (सभी उपयोगकर्ताओं द्वारा एक्सेस किया जा सकता है) को स्टोर करना है तो मैं इसे एप्लिकेशन स्टेटस में संग्रहीत करूँगा और अगर मुझे अक्सर इस्तेमाल की गई फाइल की सामग्री को स्टोर करना होता है तो मैं इसे एप्लिकेशन में स्टोर करूंगा कैश। क्या यह एक उचित उदाहरण है? यदि सबकुछ केवल एप्लिकेशन की मुख्य मेमोरी में संग्रहीत हो रहा है तो कैश में इसे क्यों सहेजना, समाप्ति जैसी सुविधाओं के अलावा कोई अच्छा नहीं होगा। दिन के अंत में आवेदन स्थिति और कैश दोनों आवेदन की मुख्य स्मृति को छेड़छाड़ कर रहे हैं। यही है ना – RBT

19

सत्र प्रति उपयोगकर्ता है। यह उपयोगकर्ताओं के बीच साझा नहीं है।

एप्लिकेशन और कैश स्कोप आवेदन व्यापक हैं। कैश की समय सीमा समाप्त हो सकती है। यदि आपके पास डेटा है जिसे बदला जा सकता है तो 5 मिनट कहें, आप इसे कैश में रख सकते हैं, जबकि यदि आपके पास डेटा है जो नियमित रूप से अपडेट नहीं होता है, तो यह एप्लिकेशन वैरिएबल में रखने का उम्मीदवार है।

+0

यह है कि सत्र लगता है कि आप कुछ है समय का 95% उपयोग करेंगे। मुझे लगता है कि कैश का उपयोग उन पृष्ठों पर घटकों के लिए किया जा सकता है जो प्रश्नों का उपयोग करते हैं। मुझे आवेदन स्थिति – chobo

+1

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

+0

एप्लिकेशन ऑब्जेक्ट का शानदार उपयोग उसी उपयोगकर्ता के लिए बहुआयामी को प्रतिबंधित करना है। जब भी उपयोगकर्ता लॉग इन करता है, तो उसकी प्रविष्टि को एप्लिकेशन में बनाएं और सत्र_एंड पर इसे हटा दें। अब जब एप्लिकेशन पहले से ही उपयोगकर्ता आईडी में प्रवेश करता है जिसका अर्थ है कि एक सक्रिय सत्र पहले ही प्रगति पर है –

6

सत्र उपयोगकर्ता उपयोग की जानकारी के लिए उपयोग किया जाता है। आम तौर पर आप उपयोगकर्ता नाम, उपयोगकर्ता नाम जैसे स्क्रीन नाम, कार्ट आईडी (यदि आप कुछ बेच रहे हैं), ईमेल आदि

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

अनुप्रयोग चर वैरिएबल जानकारी के लिए अच्छा है जो आप सर्वर पर सहेजना चाहते हैं। यह एक स्थान हो सकता है जहां मीडिया फाइलें स्थित हैं।

1

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

I just discovered why all ASP.Net websites are slow, and I am trying to work out what to do about it

9

> अनुप्रयोग

1)Application object always stores data on the server side RAM 
example: Application["hits"]=1; 
(key-value pair). 

2)Application object maintains its data till the web application is shut down or we release the data manually by assigning null or Clear() method is called. 

3)Application object has no Timeouts or File Dependencies. 

4)Its data can be assigned using Global.asax file 

5)Application object is not used for performance optimization. 

USED in maintaining hit counters, data from readonly files/tables which can then 
be displayed on varrious web pages. 

> सत्र

A session is defined as a period of time that is shared between the web application 
and the user. Each user that is using the web application has their own session. 
Items/Objects can be placed into the Session which would only define these object 
for that user. Session contains key variables which help to identify the related values. 
This can be thought of as a hash table. Each user would represent a different key node 
in the hash identifying unique values. The Session variables will be clear by the 
application which can clear it, as well as through the timeout property in the 
web config file. Usually the timeout is 20 minutes by default. 

> कैश

01: इस मामले में, कैश एक बेहतर विकल्प है
The Cache can be thought of as the memory. It is simply, the memory of the machine/server 
from which the source code is running from. This is an extremely important feature which 
can allow you to store difficult and complex constructed data which can be reused. 

Imaging you had to query a large set of different databases, which may consist records 
from databases ranging from MySQL, MSSQL, to ORACLE which were joined using some VB.NET 
or C# code. Now if the records where changing insignificantly every couple of hours, 
why would we need to do a live fetch/lookup every time the user wanted to get some 
information? It would first be slow, and resource intensive as we would have to 
reconstruct all the data before displaying it to the user. By using Cache, we can store 
it in memory, and directly bind the data. This would be a more elegant and efficient way 
to retrieve data, while maintaining optimal performance. 

अधिक Here

0

सेशन स्टेट चर सभी पृष्ठों पर उपलब्ध हैं पढ़ें करने के लिए, लेकिन केवल एक दिए गए एक सत्र के लिए। सत्र चर एकल-उपयोगकर्ता वैश्विक डेटा की तरह हैं। केवल वर्तमान सत्र के सत्र सत्र तक पहुंच है।

आवेदन राज्य चर सभी पृष्ठों और सभी सत्रों में उपलब्ध हैं। आवेदन राज्य चर बहु-उपयोगकर्ता वैश्विक डेटा की तरह हैं। सभी सत्र आवेदन राज्य चर पढ़ और लिख सकते हैं।

0

सत्र राज्य चर सभी पृष्ठों पर उपलब्ध हैं, लेकिन केवल एक दिए गए एकल सत्र के लिए। सत्र चर एकल-उपयोगकर्ता वैश्विक डेटा की तरह हैं। केवल वर्तमान सत्र में अपने सत्र राज्य तक पहुंच है।

0

इनमें से कोई भी जवाब कैश की एक बहुत ही महत्वपूर्ण संपत्ति को स्पष्ट नहीं करता है - इसमें एप्लिकेशन का दायरा है और सभी उपयोगकर्ताओं द्वारा साझा किया गया है! आपके द्वारा कैश में संग्रहीत कोई भी डेटा सभी उपयोगकर्ताओं के लिए उपलब्ध है। आप अभी भी उस कैश में डेटा स्टोर कर सकते हैं जिसे आप केवल विशिष्ट उपयोगकर्ता के लिए उपलब्ध होना चाहते हैं, लेकिन आपको उस कैश कुंजी मान का उपयोग करना चाहिए जो उस उपयोगकर्ता के लिए अद्वितीय है। Cache.Add("UserData" + userID, data...

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