Najlepsze praktyki w buforowaniu w ASP.Net

Buforowanie to strategia zarządzania stanem często stosowana w ASP.Net w celu poprawy wydajności aplikacji poprzez zminimalizowanie zużycia zasobów w systemie. Jeśli jest używany prawidłowo, może znacznie poprawić wydajność aplikacji, przechowując stronę wWb w całości lub częściowo, a nawet przechowując dane aplikacji w żądaniach HTTP. Buforowanie umożliwia szybsze renderowanie strony internetowej, a właściwe użycie buforowania minimalizuje lub zmniejsza liczbę trafień w bazie danych lub zużycie zasobów serwera.

Buforowanie w ASP.Net ma następujące trzy typy:

  1. buforowanie danych wyjściowych strony
  2. buforowanie fragmentów strony
  3. buforowanie danych

Buforowanie danych wyjściowych strony

Jest to forma buforowania w ASP.Net, która przechowuje kopię Twojej strony internetowej w pamięci podręcznej, dzięki czemu kolejne żądania dotyczące tej samej strony internetowej mogą być pobierane bezpośrednio z pamięci podręcznej - buforowane dane wyjściowe są wysyłane do aplikacji. Znacznie poprawia to wydajność aplikacji. Poniższy fragment kodu pokazuje, jak zaimplementować buforowanie danych wyjściowych strony.

Opcja VaryByParam pomaga określić zmienne w żądaniu HTTP, które wymagałyby nowego wpisu pamięci podręcznej. Inne możliwe opcje to: VaryByHeader i VaryByCustom. Możesz również określić lokalizację i czas trwania w dyrektywie OutputCache - możesz ich użyć do określenia lokalizacji pamięci podręcznej, a także czasu, przez jaki strona internetowa powinna być buforowana odpowiednio.

Buforowanie fragmentów strony

Buforowanie fragmentów strony to strategia buforowania, w której strona internetowa jest buforowana częściowo - buforowane są tylko fragmenty strony internetowej, a nie cała strona. Możesz użyć tej samej składni, co w przypadku buforowania danych wyjściowych strony. Należy jednak zastosować atrybut OutputCache do kontrolki użytkownika zamiast do strony sieci Web. Buforowanie fragmentów jest przydatne, gdy trzeba buforować tylko fragmenty swojej strony internetowej - zazwyczaj w sytuacjach, gdy strona internetowa zawiera mieszankę sekcji wspólnych i dynamicznych. Na przykład możesz mieć stronę internetową, która zawiera mieszankę elementów menu, a także pewne dynamiczne sekcje, które muszą być często wypełniane i aktualizowane z bazy danych.

Buforowanie danych

ASP.Net udostępnia Cache API, abyś mógł przechowywać dane w pamięci podręcznej do późniejszego pobrania. Poniżej podano składnię przechowywania danych w pamięci podręcznej za pomocą interfejsu API pamięci podręcznej.

Cache["key"] = "value";

Możesz również użyć metod Add lub Insert. Aby zdalnie sterować wpisem z pamięci podręcznej, można użyć metody Remove () klasy Cache. Metoda Insert () klasy Cache umożliwia określenie zależności pamięci podręcznej. Zależność pamięci podręcznej to strategia, która zapewnia, że ​​gdy dane w magazynie danych (z którego została zapełniona pamięć podręczna) ulegną zmianie, pamięć podręczna zostanie natychmiast ponownie wypełniona. Gdy dane w magazynie danych ulegną zmianie, pamięć podręczna wygaśnie, co spowoduje ponowne zapełnienie pamięci podręcznej najnowszymi danymi. Więcej informacji na ten temat można znaleźć w tym artykule MSDN.

Najlepsze praktyki

Należy buforować dane tak często, jak to możliwe, i odpowiednio buforować dane w każdej warstwie aplikacji. Korzystając z buforowania danych, należy wdrożyć odpowiednią strategię, aby zapewnić synchronizację danych w pamięci podręcznej z danymi w magazynie danych. Możesz skorzystać z rozproszonych menedżerów pamięci podręcznej, takich jak Memcached, aby Twoja strategia buforowania mogła również dobrze się skalować i zapewnić znaczny wzrost wydajności - możesz użyć Memcached do przechowywania dużych danych. Powinieneś upewnić się, że buforujesz tylko stosunkowo nieaktualne dane - nie ma sensu buforować danych, które często się zmieniają w czasie. Ponadto dane, których ponowne wykorzystanie jest mało prawdopodobne, nie powinny być przechowywane w pamięci podręcznej. Nie należy nadużywać SqlDependency lub SqlCacheDependency.

A teraz poznajmy także wady buforowania. Obiekt pamięci podręcznej jest dostępny tylko dla bieżącej domeny aplikacji. Tak więc, jeśli chcesz przechowywać dane w pamięci podręcznej i udostępniać je w farmie sieci Web, nie ma takiej możliwości. Aby dane w pamięci podręcznej były globalnie dostępne w farmie sieci Web, należałoby wykorzystać rozproszoną pamięć podręczną, taką jak buforowanie Windows Server AppFabric lub inne rozproszone struktury buforowania.

Buforowanie to potężny mechanizm zwiększający wydajność aplikacji poprzez przechowywanie stosunkowo nieaktualnych danych w pamięci, dzięki czemu można je później pobrać z pamięci podręcznej. Omówię więcej na ten temat z przykładami kodu z życia w moich przyszłych postach tutaj.