2013-10-21 3 views
0

나는 여러 페이지가있는 웹 응용 프로그램이 있습니다. 각 페이지는 데이터베이스에서 데이터를 가져 오는 클래스 메소드를 호출합니다. 이러한 호출 중 일부는 중복되므로 동일한 데이터를 가져 오기 위해 데이터베이스에 쿼리를 여러 번 실행합니다. 데이터베이스를 한 번 쿼리하고 결과가 세션이 아닌 일부 전역 변수에 저장되므로 페이지에서 해당 변수에 액세스 할 수 있습니다. 이미 싱글 톤 패턴 디자인을 시도했지만 객체 생성 중에는 매개 변수를 허용하지 않습니다. 도와주세요asp.net C에서 전역 변수를 만들려면 C#

+1

세션을 피하는 이유는 무엇입니까? – Steve

+0

이것은 세션을 사용하기에 완벽한 시간 같아 보입니까? –

+2

사용자 당 상태 변경을 암호화하지 않기 때문에 사용 사례가 아닙니다. –

답변

3

Application.Cache을 사용하여 결과를 저장 한 다음 여러 페이지에 액세스하십시오. 그러나이 정보는 사이트의 모든 사용자가 공유하게됩니다.

DataTable dataTable = GetDataFromDatabase(); 
HttpContext.Current.Cache["CahcedTable"] = dataTable; 

에 액세스하려면 (모든과가 정적 속성/필드의 함께) 당신은 매우 몇을 제외하고

DataTable dataTable = HttpContext.Current.Cache["CachedTable"] as DataTable; 
if(dataTable != null) 
{ 
    //your code e.g. gridView1.DataSource = dataTable; 
} 
+0

또한 SQL Server를 사용하는 경우 서버 측에서 캐싱하는 쿼리를 사용할 수 있습니다 (기본적으로 사용하도록 설정되지 않은 경우). 쿼리의 결과는 잠시 동안 캐시 될 것이고 다음 * 동일한 * 쿼리에서 IO는 실행되지 않을 것이지만 반환 된 결과는 메모리에 저장됩니다 : 훨씬 빠릅니다. – Tigran

0

정적 클래스를 사용하여, 그것은 단지, 그래서 applucation 도메인 (당 한 번만 존재합니다 특정 웹 사이트 당 한 번)

관련 문제