문제

최근에 저는 ASP.NET의 캐싱 가능성을 조사해 왔습니다.

나는 내 자신의 "캐시"를 굴렸는데, 더 잘 알지 못했기 때문에 다음과 같이 보였습니다.

public class DataManager
{

      private static DataManager s_instance;

      public static DataManager GetInstance()
      {
      }

      private Data[] m_myData;
      private DataTime m_cacheTime;

      public Data[] GetData()
      {
            TimeSpan span = DateTime.Now.Substract(m_cacheTime);

            if(span.TotalSeconds > 10)
            {
                  // Do SQL to get data
                  m_myData = data;
                  m_cacheTime = DateTime.Now;
                  return m_myData;     
            }
            else
            {
                  return m_myData;
            }
      }

}

그래서 값은 싱글톤에 잠시 저장되었다가, 시간이 지나면 값이 갱신됩니다.시간이 만료되지 않았고 데이터 요청이 완료되면 필드에 저장된 값이 반환됩니다.

실제 방법을 사용하면 어떤 이점이 있습니까(http://msdn.microsoft.com/en-us/library/aa478965.aspx) 대신에?

도움이 되었습니까?

해결책

나는 "컴퓨터가 그것을 하게 하라;너보다 똑똑하다'라는 말이 여기에 적용됩니다.메모리 관리 및 기타 복잡한 작업과 마찬가지로 컴퓨터는 자신이 수행하는 작업에 대해 사용자보다 훨씬 더 많은 정보를 알고 있습니다.결과적으로 당신보다 더 많은 성과를 얻을 수 있습니다.

Microsoft는 이에 대해 작업하는 엔지니어 팀을 보유하고 있으며 아마도 귀하가 가능한 것보다 훨씬 더 많은 성능을 시스템에서 끌어내려고 노력했을 것입니다.또한 ASP.NET의 기본 제공 캐싱은 다른 수준(응용 프로그램에 액세스할 수 없음)에서 작동하여 속도가 훨씬 빨라질 가능성이 높습니다.

다른 팁

ASP.NET 캐싱 메커니즘은 한동안 사용되어 왔기 때문에 안정적이고 이해하기 쉽습니다.이를 최대한 활용하는 데 도움이 되는 많은 리소스가 있습니다.

요구 사항에 따라 직접 롤링하는 것이 올바른 솔루션일 수 있습니다.

캐싱에서 어려운 부분은 캐시하기에 안전한 항목과 시기를 선택하는 것입니다.데이터가 자주 변경되는 애플리케이션의 경우 캐싱으로 인해 문제를 해결하기 어려운 버그가 발생할 수 있으므로 주의하세요.

ASP.NET의 캐싱은 기능이 풍부하며 매우 세부적인 방식으로 캐싱을 구성할 수 있습니다.

귀하의 경우(데이터 캐싱) 누락된 기능 중 하나는 SQL Server의 데이터가 어떤 방식으로든 업데이트되는 경우 캐시를 무효화하고 새로 고치는 기능입니다(SQL 캐시 종속성).

http://msdn.microsoft.com/en-us/library/ms178604.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top