2013-09-21 13 views
22

Piszę webAPI MVC, który będzie używany do zwracania wartości, które będą wiązały się z listami rozwijanymi lub używane jako wyniki pola tekstowego z wyprzedzeniem na stronie internetowej, i chcę buforować wartości w pamięci, aby nie musieć wykonywać żądań bazy danych za każdym razem, gdy API zostanie trafiony.Buforowanie danych aplikacji w pamięci: MVC Web API

Mam zamiar użyć klasy MemoryCache i wiem, że mogę zapełnić pamięć podręczną, gdy przychodzi pierwsze żądanie, ale nie chcę, aby pierwsze żądanie API było wolniejsze niż inne. Moje pytanie brzmi: czy istnieje sposób, aby automatycznie zapełnić pamięć podręczną po uruchomieniu WebAPI? Widzę folder "App_Start", może po prostu coś tu wyrzucę?

Po początkowej populacji prawdopodobnie wykonam godzinę/dziennie żądanie zaktualizowania pamięci podręcznej zgodnie z wymaganiami.

MemoryCache: http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx

UDPATE

odpowiedź Eli poniżej wystarczyły, w zasadzie po prostu potrzebne, aby spojrzeć na umiejętności Global.asax. Dziękuję za szybką pomoc, oto oddzielne pytanie dla mnie o plusy/minusy różnych typów buforowania.

Pros/Cons of different ASP.NET Caching Options

Odpowiedz

22

Można użyć global.asax metodę startu appplication zainicjować zasobów. Zasoby, które będą szeroko stosowane w aplikacji.

Poniższy link powinien pomóc znaleźć więcej informacji: http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-at-application-startup-cs

Podpowiedź: przypadku korzystania z buforowania procesu (który jest zwykle w przypadku, jeśli w pamięci podręcznej coś wewnątrz internetowej kontekstowego/gwintu), należy Pamiętaj, że twoja aplikacja internetowa jest kontrolowana przez IIS. Standardowa konfiguracja IIS wyłączy twoją aplikację internetową po 20 minutach, jeśli nie trzeba będzie obsługiwać żądań użytkowników. Oznacza to, że wszelkie zasoby, które masz w pamięci, zostaną zwolnione.

Po tym czasie następnym razem, gdy użytkownik uzyska dostęp do aplikacji internetowej, globalny asax, uruchomienie aplikacji zostanie ponownie zakończone, ponieważ IIS ponownie zainicjuje twoją aplikację internetową. Aby zapobiec temu zjawisku, należy skonfigurować limit czasu bezczynności puli aplikacji, aby po upływie 20 minut nie upłynął limit czasu. Lub używasz innej strategii pamięci podręcznej (trwała pamięć podręczna, rozproszona pamięć podręczna ...).

Aby skonfigurować IIS do tego, tutaj można znaleźć więcej informacji: http://brad.kingsleyblog.com/IIS7-Application-Pool-Idle-Time-out-Settings/

+0

Jeszcze raz dziękuję za odpowiedzi! Doceniam dodatkowe informacje, możesz przesłać wszelkie dodatkowe informacje o buforowaniu, jakie możesz mieć w nowym pytaniu, które zadałem (link w moim oryginalnym pytaniu tutaj). Będę bezwzględnie musiał wziąć pod uwagę limity czasu pracy nad usługami IIS. – vesuvious

+0

Lub możesz skonfigurować usługę "pulsu", w której pinguje twoją witrynę co 15 minut. Używam BinaryCanary.com (bezpłatnie), aby to zrobić, ponieważ moja usługa hostingu chmur nie zmieni czasu bezczynności z 20 minut, chyba że uaktualnię swój plan. – ganders

Powiązane problemy