2012. 1. 8. 00:38
출처 : http://weblab.tistory.com/218
웹페이지 전체 혹은 일부 페이지 내에 쓰이는 데이터의 캐싱은 가상화와 더불어 비싼 서버자원을 효율적으로 사용하기 위한 훌륭한 방법 중 하나입니다.
그래서 이번에 살펴보고 적용한 코드를 메모해두려고 합니다.
ASP.NET에서 캐싱은 크게 세 가지 방식으로 나눠집니다.
- 페이지 단위 캐싱
- 페이지에 세션값에 따른 분기가 있다면 캐싱된 데이터가 그대로 뿌려지므로 동작하지 못합니다. - 데이터 단위 캐싱
- 고정적으로 출력할 데이터만 콜렉션에 관리하므로 세션값이나 기타 파라미터에 따라 페이지 내 동적인 요소를 관리할 수 있습니다. - 컨트롤 단위 캐싱
- 사용자가 작성한 컨트롤 단위로 캐싱을 선언할 수 있습니다.
<%@ OutputCache Duration="60" VaryByParam="None" %>
요렇게 선언적으로 프로그래밍하시거나
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
요렇게 C# 코드로 작성하셔도 됩니다.
그리고 좀 더 자주 쓰지 않을까 싶은 데이터 단위 캐싱을 하려면 Context.Cache 객체에 의존해야 합니다.
//using System.Web.Caching
Cache cache = Context.Cache;
cache.Insert("Pls-Remember-Me", "캐시에 담을 객체 - 지금은 스트링", null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromHours(4));
Cache cache = Context.Cache;
cache.Insert("Pls-Remember-Me", "캐시에 담을 객체 - 지금은 스트링", null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromHours(4));
이렇게 저장해두면 4시간 동안은 IIS가 데이터를 보관해둡니다.
(String)cache["Pls-Remember-Me"]
처럼 접근해서 데이터를 가져올 수 있습니다. 간편하죠? ^^a
사용자 정의 컨트롤의 경우 System.Web.UI.UserControl을 상속받았으면 [PartialCaching(120)]처럼 선언적 프로그래밍이 가능합니다만, 필요에 따라 골라 쓰시면 되겠습니다.
'PP > ASP.NET' 카테고리의 다른 글
[캐싱] ASP.NET 캐싱 기능을 살펴보자. (0) | 2012.01.08 |
---|---|
[캐싱] 웹사이트 캐싱전략 (0) | 2012.01.08 |
[캐싱] 데이터 캐싱 - Response.Cache.XXX (0) | 2012.01.08 |
[asp.net] ashx 이미지 섬네일 (0) | 2012.01.06 |
[asp.net] 이미지 섬네일 (0) | 2012.01.06 |