2014-01-06 2 views
0

GridView이있는 웹 페이지가 데이터베이스 테이블에서 채워집니다. 사용자는 필터를 선택할 수있는 고유 한 값의 옵션을 제공하는 열 이름을 클릭 할 수 있습니다. AutoFilter 옵션이있는 방법과 마찬가지로 Excel에 있습니다. 사용자 필터 선택 및 Gridview 채우기를 기반으로 동적 쿼리를 작성합니다.gridview에서 동적 데이터 asp.net에서 캐싱

데이터가 하루에 한 번 변경되므로이 웹 페이지에 Caching 메커니즘을 사용해야합니다.

처음 채워지는 필터를 선택할 때 <%@ OutputCache Duration=3600 VaryByParam="None" %>을 사용해 보았습니다. 그러나 추가 필터를 선택하면 IE에서 오류가 발생합니다. 'Internet Explorer에서 웹 페이지를 표시 할 수 없습니다.'

쿼리가 동적 인 것처럼이 웹 페이지에서 캐싱이 가능한지 확실하지 않습니다. 이를 달성하거나 웹 사이트 성능을 향상시키는 다른 방법이 있는지 알려 주시기 바랍니다.

답변

0

출력 캐시는 원하는 상황이 아니므로 ASP.NET에서 다시 생성 할 필요가 없도록 페이지의 HTML 출력을 캐시합니다.

주어진 시간 동안 임의의 개체를 저장할 수있는 Cache 클래스가 내장되어있는 것처럼 들리는군요.

쿼리 속도에 따라 전체 데이터 집합을 캐시 한 다음 LINQ를 사용하여 필터링하거나 SQL Server에서 가져온 필터링 된 버전을 저장할 수 있습니다.

나는 이런 식으로 뭔가를 사용 :

var cachedList = HttpContext.Current.Cache["cacheKey"]; 
if (cachedList == null) 
{ 
    var db = new YourDataContext(); 

    //get your data from the db here somehow 
    cachedList = db.table 
     .Where(x => true) 
     .ToList(); 

    HttpContext.Current.Cache.Add(
     "cacheKey", 
     cachedList, 
     null, 
     DateTime.Now.AddMinutes(10), 
     System.Web.Caching.Cache.NoSlidingExpiration, 
     CacheItemPriority.Normal, 
     null); 
} 
return (List<YourDataType>)cachedList; 
+0

나는 당신의 제안이 .. 감사합니다 노력 할게요! – Interstellar