안녕하세요. 코난 김대우 입니다.
지난 2011년 1월 14일에 WebMatrix 정식버전(RTW)이 발표되었으며, 이 문서의 내용은 최신의 WebMatrix 정식버전에 맞춰 수정 되었습니다. 감사합니다.
- 최종 수정일 : 2011년 1월 19일

================================================================================


안녕하세요. 김대우 입니다.

코난이와 함께하는 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 강좌 – 디버깅

(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를 한마디로 말씀 드리자면, ASP.NET 만큼 안정적이고 빠르며 PHP만큼 개발하기 쉽다고 할까요.




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 강좌 – 디버깅
(11) Razor 강좌 - 캐시 처리
(12) Razor 강좌 – SMTP 메일전송(Live메일과 Gmail지원. SSL지원)
(13) Razor 강좌 – 웹사이트 전체, 또는 폴더 내 파일 요청 시 항상 실행 되는 모듈

(14) Razor 강좌 - URL 라우팅(Routing) 으로 SEO 최적화 구현



지난 동영상 참고 자료 :

[동영상 강좌] (1) WebMatrix 첫 실행 & Hello World까지 달려요~

[동영상 강좌] (2) WebMatrix 5분 리뷰~

[동영상 강좌] (3) Razor 강좌 - 기본 구문 및 주석 처리

[동영상 강좌] (4) Razor 강좌 - 코드 블록과 POST 처리

[동영상 강좌] (5) Razor 강좌 - 재사용 가능한 코드 생성
[동영상 강좌] (6) Razor 강좌 - 레이아웃 페이지 구조 처리

[동영상 강좌] (7) Razor 강좌 - 파일처리, 파일 업로드

[동영상 강좌] (8) Razor 강좌 - 데이터베이스 처리
[동영상 강좌] (9) Razor 강좌 - Helper 소개(이미지, 비디오)

[동영상 강좌] (10) Razor 강좌 – 디버깅

[동영상 강좌] (11) Razor 강좌 - 캐시 처리

[동영상 강좌] (12) Razor 강좌 – SMTP 메일전송(Live메일과 Gmail지원. SSL지원)

[동영상 강좌] (13) Razor 강좌 – 웹사이트 전체, 또는 폴더 내 파일 요청 시 항상 실행 되는 모듈

[동영상 강좌] (14) Razor 강좌 - URL 라우팅(Routing) 으로 SEO 최적화 구현







profile

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.

코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터