Mam potrzebę buforowania kolekcji obiektów, które są w większości statyczne (mogą mieć zmiany 1x dziennie), które są dostępne w mojej usłudze API ASP ASP.NET Web OData. Ten zestaw wyników jest używany w odniesieniu do wywołań (co oznacza, że nie jest zależny od klienta), więc musi być buforowany na poziomie aplikacji.Buforowanie danych w Web API
Zrobiłem kilka wyszukiwania na "buforowanie w Web API", ale wszystkie wyniki dotyczyły "buforowania danych wyjściowych". Nie tego tutaj szukam. Chcę przechowywać w pamięci podręcznej kolekcję "Ludzie" do ponownego użycia w kolejnych połączeniach (może mieć wygaszenie poślizgu).
Moje pytanie brzmi, ponieważ jest to po prostu ASP.NET, czy używam tradycyjnych technik buforowania aplikacji do utrzymywania tej kolekcji w pamięci, czy jest coś innego, co muszę zrobić? Kolekcja ta jest , a nie bezpośrednio zwracana do użytkownika, ale raczej używana jako źródło za kulisami zapytań OData za pośrednictwem wywołań API. Nie ma powodu, abym przychodził do bazy danych podczas każdego połączenia, aby uzyskać dokładne informacje o każdym połączeniu. Wygasanie co godzinę powinno wystarczyć.
Ktoś wie, jak poprawnie buforować dane w tym scenariuszu?
Tak po napisaniu tego znalazłem 'MemoryCache' w' System.Runtime.Caching' nazw że wygląda idealnie. Zastrzeżenie, że mogę stracić dane, jeśli App Recover jest w porządku, ponieważ próbuję zapobiec ponownemu wywołaniu bazy danych w * każdym * wywołaniu API. Używanie 'MemoryCache.Get()' i 'MemoryCache.Add()' wydaje się działać dobrze dla mnie. 'AddOrGetExisting()' wyglądało fajnie, ale nie działało dla mojej sytuacji; nadal wymagałoby pobierania danych z DB przed wywołaniem. Ustawiłem "AbsoluteExpiration" na 30 minut. – atconway
Tak jak znacznik, który pomaga ludziom po drodze, zalecaną technologią buforowania na Azure jest teraz Redis. Redis lub inna rozproszona pamięć podręczna jest wymagana, jeśli masz więcej niż 1 wystąpienie swojego API. Azure Managed Cache jest teraz bardzo ukryty, dostępny tylko z Powershell. Po prostu go tam trzymają, aby pomóc ludziom, którzy wcześniej go używali. –
Redis jest zbyt kosztowny, jeśli wszystko, co robisz, polega na buforowaniu kilku wywołań danych WebApi. –