Rozumiem, że każda odświeżana strona, szczególnie w "AjaxLand", powoduje, że moja klasa z tyłu/zza kodu jest wywoływana od zera ... To jest problem, ponieważ mój klasa (która jest obiektem członkowskim w System.Web.UI.Page) zawiera DUŻO danych pochodzących z bazy danych. Więc teraz każde odświeżenie strony w AjaxLand powoduje, że wykonuję duże wywołania backendu DB, a nie tylko ponowne wykorzystanie obiektu klasy z pamięci. Jakieś poprawki do tego? Czy w tym miejscu wchodzą zmienne sesji? Czy zmienne sesji są jedyną opcją, którą muszę zachować obiekt w pamięci połączony z instancją pojedynczego użytkownika i jedną sesją?"Buforowanie" dużej tabeli w ASP.NET
Odpowiedz
Spójrz na ten MS article na różne mechanizmy buforowania ASP.NET. Istnieje sekcja o nazwie "Pamięć podręczna dowolnych obiektów w pamięci serwera", która może Cię zainteresować.
Potrzebujesz ASP.Net Caching.
W szczególności Data Caching.
Skoro wspomniałeś Ajax, myślę, że warto wziąć pod uwagę następujące kwestie:
zakładamy to duży zbiór danych jest statyczna i nie przemijające, w pierwszym wywołaniu Ajax, aplikacja wysyła zapytanie do bazy danych, pobiera dużo danych i zwrotów do klienta (np. przeglądarka/JavaScript działający w przeglądarce itp.), klient ma już wszystko to w pamięci. Następnie nie trzeba wracać do serwera dla tych samych danych, które klient już posiada w pamięci. Co musisz zrobić, to użyć JavaScript do przebudowania DOM lub cokolwiek innego. Wszystko można zrobić na kliencie od tego momentu.
Załóżmy teraz, że dane nie są statyczne, ale przejściowe, buforowanie na serwerze przez umieszczenie ich w sesji nie będzie rozwiązaniem, które i tak chcesz. Za każdym razem, gdy twój klient wysyła żądanie do serwera, a serwer po prostu zwraca to, co jest w pamięci podręcznej (sesji), dane są już nieaktualne i nie ma żadnej różnicy od danych, które klient już posiada w pamięci.
Chodzi o to, że jeśli dane są statyczne, zapisz podróż w obie strony na serwer, gdy już masz dane w pamięci. Jeśli dane są przejściowe, obawiam się, że nie ma taniego rozwiązania, z wyjątkiem ponownego wysyłania zapytań lub ponownego pobierania danych i wysyłania wszystkiego z powrotem do klienta.
Jeśli twoje dane są specyficzne dla użytkownika, to jest to droga, którą można przejść od Session. Zachowaj ostrożność, jeśli masz farmę internetową lub ogród internetowy. W takim przypadku będziesz potrzebować serwera sesji lub bazy danych dla swojej sesji.
Jeśli twoje dane są na poziomie aplikacji, to może być jedna droga do uzyskania Application Data Cache. Bądź ostrożny, jeśli masz ograniczoną pamięć RAM i twoje dane są ogromne. Pamięć podręczna może się opróżnić w nieodpowiednim momencie.
Tak czy inaczej, będziesz musiał sprawdzić, jak twoja aplikacja wykonuje swoje zmiany. Możesz nawet znaleźć powrót do bazy danych, aby być najmniej złym rozwiązaniem.
Ponadto, niektóre dane można przejrzeć pod kątem Lazy Loading, aby było mniej ciężkie.
- 1. Buforowanie w asp.net-mvc
- 2. Aktualizacja dużej tabeli MySQL
- 3. Usuwanie duplikatów z dużej tabeli
- 4. Utrzymywanie dużej tabeli unikalnych wartości w MySQL
- 5. Widoki częściowe Buforowanie w ASP.NET MVC 3
- 6. Warunkowe buforowanie danych wyjściowych w środowisku ASP.NET
- 7. Buforowanie obrazu po stronie klienta z ASP.Net
- 8. Sortowanie tabeli w asp.net MVC
- 9. Asp.net - buforowanie a zmienna statyczna do przechowywania słownika
- 10. Błąd CS0433 w dużej skompilowany projektu Asp.net WWW
- 11. Częściowe buforowanie Page i VaryByParam w ASP.NET MVC 3
- 12. Czy buforowanie pączków jest dostępne w ASP.NET MVC 3
- 13. ASP.NET MVC Wyłącz buforowanie widoku w przesłoniętym obiekcie VirtualPathProvider
- 14. Dodaj kolumnę do dużej tabeli MySQL podczas online
- 15. Jak poprawić wydajność INSERT na bardzo dużej tabeli MySQL
- 16. MySQL działa wolno podczas usuwania rekordów z dużej tabeli
- 17. Buforowanie w burzach
- 18. Buforowanie danych w Web API
- 19. Dodaj kolumnę w tabeli z tożsamością ASP.NET
- 20. Pokaż dane w tabeli html ASP.NET
- 21. Buforowanie tablicy PHP
- 22. Pytając przeglądarki o buforowanie naszych obrazów (ASP.NET/IIS)
- 23. Jak wyłączyć buforowanie dla całej mojej witryny ASP.NET MVC 3?
- 24. Buforowanie nie działa poprawnie na mojej stronie ASP.NET MVC?
- 25. Jak działa buforowanie ASP.NET MVC dla żądania AJAX?
- 26. Buforowanie obrazów w Memcached
- 27. Buforowanie DNS w Linuksie
- 28. Podwójne buforowanie w WPF?
- 29. Rails.cache.fetch buforowanie w rozwoju
- 30. Czy buforowanie pączków działa poprawnie z ASP.NET MVC?
Każde odświeżenie strony spowoduje, że strona zostanie (ponownie) oceniona, niezależnie od tego, czy używana jest AJAX. Twój kod AJAX NIE powinien odświeżać całej strony, powinien ponownie wykorzystywać odpowiednie dane * po stronie klienta * (tj. NIE jako obiekt .NET w pamięci [serwer]). –