2013-02-01 14 views
5

często używamy sesji, pamięci podręcznej i profilu w projekcie webowym asp.net. często przechowujemy dane w sesji, pamięci podręcznej i profilu w projekcie webowym asp.net, ale lubię wiedzieć, kiedy powinniśmy przechowywać dane w sesji lub kiedy powinniśmy przechowywać w pamięci podręcznej i profilu. jaki jest zakres pamięci podręcznej lub profilu. te dwa specyficzne dla sesji czasy życia lub specyficzne zastosowania.jaka jest różnica między sesją, pamięcią podręczną i profilem w asp.net

Załóżmy, że jeśli przechowuję dane w pamięci podręcznej lub profilu z sesji 1, to mogę uzyskać dostęp do tych danych z sesji 2 lub nie. po prostu poprowadź mnie scenariuszem & przykład, kiedy powinniśmy przechowywać dane w sesji, pamięci podręcznej i profilu. Dzięki

+0

Widziałeś to? Http: //forums.asp.net/t/983735.aspx –

Odpowiedz

14

użyć cache zazwyczaj gdy chcesz poprawić skuteczność witryny: ograniczyć połączenia z bazą danych, dostępu do plików w systemie plików, nazywając usług zewnętrznych, itp

Scenario 1: Załóżmy, że istnieje aplikacja, która ma stronę z listą wszystkich produkty przechowywane w bazie danych. Użytkownicy potrzebują funkcji filtrowania listy produktów (na przykład w serwisie eBay lub Amazon). Wiadomo również, że lista produktów i funkcji produktu zmienia się rzadko w porównaniu do częstotliwości używania strony listy produktów.

Solution 1: W tym miejscu można użyć cache, aby zmniejszyć liczbę wywołań bazy danych. Umieszczasz listę produktów i funkcje produktu na cache, aby wykonać filtrowanie w pamięci i uniknąć zbędnych wywołań bazy danych. Cache powinno zostać unieważnione po każdej zmianie listy produktów lub funkcji. To rozwiązanie powinno być w porządku, dopóki obsługa pamięci nie będzie tańsza niż uzyskanie lepszej wydajności.

Jako dobry zasób sugeruję przeczytanie artykułu MSDN ASP.NET Caching: Techniques and Best Practices.


W profile zazwyczaj zapisać dane, które jest specyficzne dla użytkownika i betonu powinny być dostępne o każdej porze użytkownik loguje się do systemu.

Scenario 2: Rozważyć masz ten sam wniosek jak w Scenario 1 ale teraz trzeba zapewnić możliwość dla użytkowników, aby zapisać swoje preferencje filtra (niby listy ulubionych filtrów).

Solution 2: Można utworzyć rodzaj klasy stanu filtru i zapisać ją w użytkowniku profile. W rezultacie użytkownicy nie będzie przeszkadzał w kółko określający parametry filtra i preferencje te byłyby dostępne co użytkownik loguje czas w.


Session służy do informacji o użytkowniku specyficzny sklep, który może być dostępny ze wszystkich sieci strony i nie będą potrzebne przy następnym logowaniu użytkownika.

Scenario 3: Załóżmy, że istnieje aplikacja e-commerce i ludzie marketingu chcą zobaczyć, co dzieje się na stronie w czasie rzeczywistym, czyli zobacz, jakie strony zostały odwiedzone przez niektórych użytkowników, którzy byli już zalogowani. Rozważ ten scenariusz jako migawkę aktywności wybranych użytkowników.

Solution 3: Tutaj można użyć numeru session, aby zarejestrować, które adresy URL odwiedzili użytkownicy, a następnie wygenerować raport dla marketingowców.

Jeśli chodzi o zarządzanie państwem, można również odwołać się do innego artykułu MSDN ASP.NET State Management Overview.


Another good answer, która podkreśla różnicę między obiektami zarządzającymi stanem aplikacji asp.net.


Mam nadzieję, że to ci pomogło.

+0

profil jest zależny od sesji ... jeśli nie, to w jaki sposób możemy uzyskać dostęp do danych jednego profilu z innej sesji. możesz to poprowadzić z przykładowym kodem. – Thomas

+1

@Thomas Profile to dane specyficzne dla użytkownika, które można utrwalić, aby nie zostały utracone między sesjami. Domyślny dostawca profilu przechowuje dane profilu w bazie danych. Spójrz na http://stackoverflow.com/questions/426609/how-to-assign-profile-values. To pytanie zawiera próbki kodu. –