(11) Razor 강좌 - 캐시 처리
안녕하세요. 김대우 입니다.
코난이와 함께하는 Razor & WebMatrix 시리즈 강좌리스트
(1) WebMatrix와 Razor! 이제 시작합니다.
(2) WebMatrix 설치부터 Hello World까지
(9) Razor 강좌 - Helper 소개(이미지, 비디오)
(11) Razor 강좌 - 캐시 처리 - (지금 보고 계신 내용)
지난 시간에는 “(10) Razor 강좌 – 디버깅” 강좌를 진행 했습니다.
이번 시간에는 바로 이어서, “ (11) Razor 강좌 - 캐시 처리 ” 강좌를 진행 하도록 하겠습니다.
웹 개발에서 캐시(Cache)란? –캐시 소개
웹 개발에서 캐시를 간단히 소개해 드리자면, 엄청나게 많은 사용자가 몰리는 웹사이트에서 매번 웹 페이지 정보를 데이터베이스나 외부의 서버와 연동해 동적으로 생성해 사용자에게 제공할 경우 웹 서버의 성능이 아무리 좋아도 사용자가 몰리게 되면 성능이 저하될 수밖에 없습니다.
캐시는 이렇게 대규모 트래픽이 몰리는 웹사이트에서 웹 페이지를 웹서버의 메모리에 일정시간, 또는 특정 조건으로 저장하고 있다가 재사용 하는 기술입니다.
예를 들어, 나의 웹사이트에서 날씨 정보를 보여주는 경우를 생각해 보세요. 날씨 정보가 기상청 등에서 전달되지만, 매분, 매초마다 새로운 정보가 오는 건 아닐 거에요. 아마도, 대략, 한두 시간 정도에 한번 정도 정보가 오겠죠. 이 정보를 매번 동적으로 우리 웹사이트에서 제공하는 것보다 캐시로 한 시간에 한번만 동적으로 정보를 만들고, 한 시간 동안은 캐시된 정보를 제공해도 문제 없으실 거에요.
어떠세요? 캐시 기능 좋아 보이시죠?
하지만, 캐시 기능을 잘 못 사용할 경우에는 더 큰 문제가 발생할 수 도 있습니다.
캐시 사용시 주의사항
예를 들어, 초단위로 정보 신속성을 주로 제공해야 하는 증권 시세 정보 제공이나 속보 뉴스를 제공해야 하는 포털의 뉴스 속보 섹션 같은 경우에는 이런 캐시 기능을 이용해 “한 시간 동안 캐싱 해라~” 이렇게 설정한다면 문제가 될 겁니다. 정보의 성격과 서비스 성격에 따라 캐시 구성을 달리 하셔야 합니다.
이제 대략 캐시에 대해 감이 잡히셨는지요?
이렇게 캐시는 웹개발에서 트래픽이 몰리는 대규모 웹사이트에 필수적인 기능이고, 캐시를 사용해도 괜찮을지 결정 여부가 매우 중요한 포인트 입니다. 그렇다면 Razor와 캐시가 어떤 관계가 있을까요?
Razor의 캐시 지원 – WebCache Helper
Razor는 가장 최신의 웹 개발 방식으로 페이지에 대해 손쉽게 이용 가능한 캐시 기능을 제공합니다. 이는 WebCache Helper를 통해 구현 가능하며 아래의 예제를 통해 살펴 보도록 하겠습니다.
@{
var cacheItemKey = "Time";
var cacheHit = true;
var time = WebCache.Get(cacheItemKey);
if (time == null) {
cacheHit = false;
}
if (cacheHit == false) {
time = DateTime.Now;
WebCache.Set(cacheItemKey, time, 1, false); //1분 동안 캐시
}
}
<!DOCTYPE html>
<html>
<head>
<title>WebCache Helper 예제</title>
</head>
<body>
<div>
@if (cacheHit) {
@:캐시에서 정보를 찾았습니다.
}
else {
@:캐시에서 정보를 찾지 못했습니다.
}
</div>
<div>
이 페이지는 @time 에 캐시 되었습니다.
</div>
</body>
</html>
웹사이트 최상위에 Cache라는 폴더를 만들고 cache.cshtml 파일로 저장해 실행 했습니다.
WebCache는 캐시 설정을 돕는 Helper입니다.
시간을 1분으로 구성해 캐시 되도록 구성 했기 때문에 처음 요청하면 캐시가 잡히고, 1분간은 캐시된 페이지를 보시게 될겁니다. 이어서, 1분이 지나 한번 더 리프레시 하시면 캐시가 만료(Expire)되었기 때문에 새로운 페이지를 보시게 될겁니다.
Razor는 우리 웹 개발자에게 손쉬운 페이지 캐싱 제어를 위해 이런 WebCache Helper 캐시 기능을 사용하기 간편하게 제공하고 있습니다.
Razor & WebMatrix 기본 시리즈 강좌를 마치면서
짧은 시간이지만, 시리즈 Razor 기본 강좌를 제공해 보았습니다.
강좌를 하면서 받은 느낌은 참 웹 개발자를 위한 깔끔한 작한 기능 들을 제공하는 녀석이구나… 생각이 들었어요.
Razor를 한마디로 말씀 드리자면, ASP.NET 만큼 안정적이고 빠르며 PHP만큼 개발하기 쉽다고 할까요.
다음으로는 컬럼이나 팁 강좌 형태로 부족했던 내용을 보충해 드리려고 생각하고 있습니다. ASP나 ASP.NET 그리고 여건이 된다면 PHP개발자 분들을 위한 Razor 강좌도 생각해 보고 있구요. 다음 강좌도 기대해 주세요~
앞으로도 계속 Razor와 WebMatrix의 발전이 기대됩니다. ^_^
우리 모두 화이팅!
참고자료 :
(1) WebMatrix와 Razor! 이제 시작합니다.
(2) WebMatrix 설치부터 Hello World까지
(3) Razor 강좌 - 기본 구문 및 주석 처리
(4) Razor 강좌 - 코드 블록과 POST 처리
(5) Razor 강좌 - 재사용 가능한 코드 생성
(6) Razor 강좌 - 레이아웃 페이지 구조 처리
(7) Razor 강좌 - 파일처리, 파일 업로드
(8) Razor 강좌 - 데이터베이스 처리
(9) Razor 강좌 - Helper 소개(이미지, 비디오)
(10) Razor 강좌 – 디버깅
[동영상 강좌] (1) WebMatrix 첫 실행 & Hello World까지 달려요~
[동영상 강좌] (2) WebMatrix 5분 리뷰~
[동영상 강좌] (3) Razor 강좌 - 기본 구문 및 주석 처리
[동영상 강좌] (4) Razor 강좌 - 코드 블록과 POST 처리