2010-07-02 4 views
1

클라이언트에서 ASP.NET UserControl을 캐시 할 수 있는지 알고 싶습니다.클라이언트에서 ASP.NET 사용자 컨트롤 캐싱

DB를 쿼리하고 GridView를 렌더링하는 사용자 정의 컨트롤이 있습니다. 쿼리 결과가 사용자마다 다를 수 있으므로 (User.Identity.Name에 의해) 클라이언트에 있어야합니다. 페이지가 인트라넷 용입니다.

도움이 될 것입니다.

미리 감사드립니다.

추신 : 사용자 컨트롤이 기본적으로 캐시되는 위치는 어디입니까? 서버, 프록시?

+0

캐싱을 사용하는 경우 기본적으로 서버에서 메모리에 캐시 된. – IsmailS

+0

클라이언트에있는 것이 아니라 세션 상태에 gridview 데이터 소스를 추가하는 옵션이 있습니까? – JohnC

+0

@ johnc : 분리 된 DTO를 DataTable처럼 Session 상태에 추가 할 수 있습니다. DataReaders와 같은 "연결된"개체를 추가하지 않도록주의하십시오. 그렇지 않으면 열려있는 데이터베이스 연결을 유지하고 연결 풀을 오버로드 할 수 있습니다. –

답변

0

사용자 컨트롤은 항상 프록시 서버 나 웹 브라우저가 아닌 웹 서버에 캐시됩니다.

의도를 해결하기 위해 OutputCache 지정 문의 VaryBy 속성을 기반으로 다른 캐시 결과를 렌더링 할 수 있습니다. 이들은 다음을 포함한다 :

  • VaryByParam 특성을
  • VaryByControl을
  • 는 VaryByCustom
+0

고마워요! VaryByCustom 지시문을 사용하여 현재 사용자 만 캐시를 사용할 수 있도록 지정해야합니다. – Meryovi

1

프록시 서버와 클라이언트는 정적 데이터 만 캐시 할 수 있습니다. 동적 데이터는 항상 IIS에서 제공해야하지만 모든 요청에 ​​대해 데이터베이스를 쿼리하는 대신 메모리 내 캐시에 데이터를 저장하여 효율성을 향상시킬 수 있습니다.

"캐싱"이란 용어는 ASP.NET과 관련하여 서버의 메모리에 데이터를 저장하는 것을 의미합니다. User.Identity.Name과 같은 키 값을 사용하여 다른 사용자에게 다른 데이터를 제공합니다. 서버에서 사용자의 결과를 캐시하려면 사용자의 ID를 키로 사용하여 Cache.Add를 사용하여 DataSet (또는 다른 DTO)을 Cache 사전에 추가 할 수 있습니다. 문제의 데이터가 자주 변경되지 않는 경우 이는 사용자 별 데이터를 효율적으로 처리하는 방법이 될 수 있습니다. 데이터가 자주 변경되는 경우 (예를 들어) 파일이 변경 될 때 Cache 객체의 콜백 메커니즘을 사용하여 캐시 항목을 만료시킬 수 있습니다.

IIS/ASP.NET은 쿼리 문자열에 기반한 페이지 캐싱과 부분 캐싱을 지원합니다. 이들은 .aspx 페이지의 페이지 지시문과 web.config의 사이트 별 제어에 의해 제어됩니다.