2013-09-21 1 views
22

웹 사이트에서 드롭 다운 상자에 바인딩되거나 선행 입력란 결과로 사용되는 값을 반환하는 데 사용할 MVC webAPI를 작성하고 있습니다. 메모리에 저장되므로 API가 실행될 때마다 데이터베이스 요청을 수행 할 필요가 없습니다.메모리에 응용 프로그램 데이터 캐싱 : MVC 웹 API

MemoryCache 클래스를 사용할 예정이며 첫 번째 요청이 들어올 때 캐시를 채울 수 있지만 다른 요청보다 느린 API에 대한 첫 번째 요청을 원하지 않습니다. 내 질문은 : WebAPI가 처음 시작될 때 자동으로 캐시를 채울 수있는 방법이 있습니까? "App_Start"폴더가있는 것을 볼 수 있습니다. 아마 여기에 뭔가를 던져 넣을 수 있을까요?

초기 채우기 후에는 필요에 따라 시간별/매일 요청을 실행하여 캐시를 업데이트 할 것입니다.

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

UDPATE

엘라의 대답은 아래에 기본적으로 난 그냥 Global.asax에의 능력을 보는 데 필요한 트릭을했다. 빠른 도움말을 보내 주셔서 감사합니다. 다른 캐시 유형의 장단점에 대해 별도의 질문을 던졌습니다.

Pros/Cons of different ASP.NET Caching Options

답변

22

당신은 자원을 초기화하기 위해 Global.asax에 appplication 시작 방법을 사용할 수 있습니다. 기본적으로 응용 프로그램에 사용되는 리소스입니다.

더 많은 정보를 찾아 도움이 다음 링크 : 가 http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-at-application-startup-cs

힌트 : 당신이 (당신이 웹 컨텍스트/스레드 내에서 뭔가를 캐시하면 보통의 경우) 프로세스 캐싱에 사용하는 경우 가에 계속 웹 응용 프로그램이 IIS에 의해 제어된다는 것을 기억하십시오. 표준 IIS 구성은 사용자 요청이 제공되지 않으면 20 분 후에 웹 응용 프로그램을 종료합니다. 이것은 메모리에있는 모든 리소스가 해제된다는 것을 의미합니다.

그런 다음 IIS가 웹 응용 프로그램을 다시 초기화하기 때문에 다음에 사용자가 웹 응용 프로그램에 액세스 할 때 전역 asax 응용 프로그램 시작이 다시 실행됩니다. 이 동작을 방지하려면 응용 프로그램 풀 유휴 시간 제한이 20 분 후에 시간 초과되지 않도록 구성하십시오. 또는 다른 캐시 전략 (영구 캐시, 분산 캐시 ...)을 사용합니다.

여기에 당신이 더 많은 정보를 찾을 수 있습니다,이를 위해 IIS를 구성하려면 다음 http://brad.kingsleyblog.com/IIS7-Application-Pool-Idle-Time-out-Settings/

+0

감사를 다시 응답을! 추가 정보에 감사 드리며, 제가 물어 본 새로운 질문에 추가 캐싱 정보를 게시 해주십시오. (원래의 질문에 대한 링크). IIS 워커 시간 초과를 고려해야합니다. – vesuvious

+0

또는 15 분마다 사이트에 핑을 걸 수있는 "하트 비트"서비스를 설정할 수 있습니다. 내 계획을 업그레이드하지 않으면 내 클라우드 호스팅 서비스가 idle_timeout을 20 분에서 변경하지 않기 때문에 BinaryCanary.com (무료)을 사용합니다. – ganders

관련 문제