2016-06-02 12 views
0

모든 사용자 로그인에 대해 응용 프로그램에서 유지해야하는 데이터베이스의 정적 값이 있습니다. (ASP.Net MVC 4 응용 프로그램) 내가 (이 HttpApplicationState 또는 System.Web.HttpContext.Current.Cache를 사용하는 것보다 더 나은 있는지 확실하지 않습니다.) MemoryCache 을 구현 한 것을 들어MemoryCache가 Ajax 호출에 대한 객체 (데이터 세트)를 유지하지 않습니다. - ASP.Net MVC 응용 프로그램

. 힌트가 있으면이 점을 이해할 수있을 것입니다.

//Create a custom policy as per the business need 
CacheItemPolicy wkflPolicy = new CacheItemPolicy(); // I dont want to set expiration 


if (wkflCache.Get("MyKey") == null) 
     { 
      // Caching all static DB values. 
      DataSet myDS= objEditComponent.GetDBValues(); 
      wkflCache.Add("MyKey", myDS, wkflPolicy); 
     } 

그 모든 포스트 백에 대한 지속하지만 난 내 cshtml에서 Ajax 호출을 만드는 중이라서 때 (보기) 페이지 내가 캐시 값이 이렇게 널 (null) 상태를 확인한 후, 다른 DB 통화를 할 수 없었다.

메모리 부족으로 인해 발생합니까 (아약스 전화를 할 때마다 메모리 부족이 발생할 때마다 어떻게되는지 궁금합니다) 아니면 여기에 뭔가 빠졌습니까?

답변

0

캐시에 저장 한 내용을 임의로 삭제할 수 있다고 가정하는 것이 가장 좋습니다.

항상 필요한 것이고 모든 사용자가 공유하는 항목이면 정적 변수로 이동하십시오. (모든 속성을 읽기 전용으로 만드는 동안 이상적입니다.)

캐시는 약간의 시간이 필요하지만 다시 가져와야하는지에 대해서는별로 신경 쓰지 않습니다.