Mam do przechowywania danych tysięcy rekordów w tabeli danych i utrzymywane na odświeżenie. Która opcja jest odpowiednia dla mnie stanu widoku (którego użyłem) lub sesji. Kiedy użyłem stanu widoku, utworzy on ukryte pole do przechowywania i spowolni ładowanie strony. Czy jest tam jakiś narzut (zużycie pamięci po stronie serwera i opóźnienie w odpowiedziach) w przechowywaniu go w sesji. Proszę zasugerować mi rozwiązanieCo jest lepsze dla stanu wydajności lub sesji
Odpowiedz
W przypadku dużych ilości danych sesja jest bardziej wydajna. Jeśli możesz wykryć, kiedy użytkownik wykonuje określony blok danych, ustaw zmienną Session na wartość null, aby pomóc w narzucie pamięci. Nie zawsze można to zrobić, ale sesja ostatecznie wygasa, a pamięć zostanie odzyskana. Obniżenie limitu czasu sesji może pomóc niektórym, ale nie ustawiaj go zbyt małego, nie chcesz odciąć użytkowników. Sesja musi być włączona w pliku Web.config.
Poniżej znajduje się podstawowe informacje o sesji porównaniu ViewState:
ViewState: binarny struktury danych ViewState jest kodowany base64 być umieszczony na stronie, co oznacza, że 1.3333 razy (8/6) wielkość oryginalnych danych binarnych. Te dane są przesyłane i pobierane dla każdego widoku strony. Więc jeśli masz dużo w ViewState, wpływa to na czas odpowiedzi strony. Kodowanie Base64 jest prawdopodobnie wysoce zoptymalizowane, więc nie jest to trafienie wydajnościowe. Każde żądanie strony przydzieli, a następnie zwolni miejsce dla ViewState, więc nie jest to trafienie pamięci długoterminowej. Ponieważ dane znajdują się na stronie, nie wygasa.
Sesja: Wszystkie dane w sesji są zachowywane na serwerze sieciowym między ładowaniami stron. Dzięki temu strona jest mała, musi tylko mieć identyfikator Sesji. Z drugiej strony pamięć wykorzystywana do przechowywania danych w sesji zostaje przydzielona do czasu wygaśnięcia sesji. Zastanawiałem się, czy sesja kopiuje dane binarne, czy po prostu utrzymuje wskaźnik. Podobnie jak w przypadku kodowania Base64, można to zoptymalizować, więc jeśli tak się stanie, nie jest to trafienie wydajnościowe. Sesja może wygasnąć, jeśli użytkownik zbyt długo czeka na odsłony strony. Jeśli sesja wygasa, powinna zwrócić użytkownika z powrotem do jakiegoś znanego stanu na stronie internetowej.
Innym problemem tutaj, jeśli przechowujesz informacje w sesji, identyfikator sesji może być współdzielony przez wiele kart w przeglądarce klienta. Musisz uważać, jak używasz danych przechowywanych w Sesji. Upewnij się, że to testujesz, aby Twoi użytkownicy nie otrzymywali nieoczekiwanych wyników.
(Uwaga: Korzystanie z ViewState jest relaksującego, Sesja nie jest.)
Co się stanie, jeśli użyję zmiennych sesyjnych zamiast viewstate? –
Viewstate jest bardziej trwały, ponieważ jest obsługiwany przez przeglądarkę użytkownika. Więc nawet jeśli użytkownik siedzi na stronie przez godzinę, a następnie kliknie gdzieś, strona będzie nadal utrzymywać stan przeglądania, a sesja prawdopodobnie wygasła. Sztuką jest znalezienie właściwej równowagi. – gmlobdell
Tak, masz rację, ale chcę czegoś innego, jakie będzie zużycie pamięci i czas wymagany do załadowania strony w obu przypadkach. –
- 1. AngularJS $ watch vs $ watchCollection: co jest lepsze dla wydajności?
- 2. SQLServer vs StateServer dla wydajności stanu sesji ASP.NET
- 3. co jest lepsze: getSingleResult lub getResultList JPA
- 4. Co jest lepsze, setEnabled lub setUserInteractionEnabled?
- 5. Co jest lepsze dla wydajności - wiele plików w jednym katalogu lub wiele podkatalogów z jednym plikiem?
- 6. Co jest lepsze? OpenCyc lub ConceptNet?
- 7. itertools lub odręczny generator - co jest lepsze?
- 8. Co jest lepsze, curl lub wget?
- 9. Co jest lepsze? private static vs prywatnej
- 10. co jest lepsze pod względem wydajności, wczesne wiązanie lub późnego wiązania w Delphi COM obiektów
- 11. Co jest lepsze w przypadku systemu Windows? pthreads lub CreateMutex?
- 12. Co jest lepsze i dlaczego? RaphaelJS lub HTML5 Canvas?
- 13. Różnica w wydajności dla stanu pętli?
- 14. co jest lepsze, aby dodać dwie nazwy (-) lub (_)
- 15. Co jest lepsze w użyciu AsyncTask lub HandlerThread (wątek rurociągu)?
- 16. Co jest lepsze, a = [] lub a = new Array()?
- 17. Co jest lepsze/szybsze? Spróbuj złapać lub uniknąć wyjątku?
- 18. Źródło danych obiektu lub jego kod: co jest lepsze?
- 19. Co jest lepsze LinkedBlockingQueue nieograniczone lub LinkedBlockingQueue o pojemności
- 20. Hbase vs Cassandra: Co jest lepsze dla przechowywania danych Timeseries?
- 21. MAX vs Top 1 - co jest lepsze?
- 22. Docker Compose vs. Dockerfile - co jest lepsze?
- 23. Denormalizacja dla zdrowia psychicznego lub wydajności?
- 24. tryb stanu sesji asp.net "SQLServer"
- 25. Monitorowanie stanu ASP.NET lub ELMAH, co wybrać?
- 26. Co jest nazywane składnicą sesji?
- 27. Znaleźć wszystkie wykorzystanie stanu sesji
- 28. javascript: void (0) lub onclick = "return false" dla <a> - co jest lepsze?
- 29. Rx 2 Android, co jest lepsze Single lub zauważalne dla połączeń API?
- 30. Co jest lepsze - użycie ciągu lub pliku jako typu parametru dla metod, które pobierają nazwy plików
Nie należy przechowywać tysiące zapisów w sesji lub zobacz Państwie. –
Co to jest najlepsza praktyka wtedy –
Pobierz tylko te dane, które są wymagane na stronie. Podobnie jak w przypadku używania tabeli danych do wiązania siatki. Następnie tabela danych powinna zawierać tylko te dane, które są wymagane na bieżącej stronie widoku siatki. –