관리 메뉴

I LOVE EJ

[ IsPostBack ] IsPostBack 간단한 설명 본문

Web Development/.NET

[ IsPostBack ] IsPostBack 간단한 설명

BeOne 2007. 10. 15. 15:48

IsPostBack

IsPostBack 이 true 이면 리로드 된것이다. 근데 데이터를 불러오는 작업이면 한번이면 충분하다

리로드 될때마다 불러오는건 오바!


if( !IsPostBack ){ } = 처음 로드된것이므로 한번만 해주면 되는 작업을 실행하자


   if(!IsPostBack )
   {


    Test(); //데이터 호출


   }


Page.IsPostBack 프로퍼티

 

Page_Load 이벤트는 페이지가 읽혀질 때마다 발생하기 때문에 그 때마다 페이지를 초기화하는 작업을 수행하는 것은 낭비일 수 있다. 웹 환경에서는 클라이언트와 웹 서버사이에 라운드 트립이 자주 발생하므로 이러한 페이지 초기화 작업은 매우 비효율적이다. 특히 페이지 초기화를 위해서 데이터베이스에 여러 쿼리문을 실행시키고 많은 양의 데이터를 랜더링해야 한다면 웹 서버와 데이터베이스 서버 그리고 네트워크 부하등 많은 부분에서 리소스를 낭비하게 된다.


이 문제를 해결하기 위해서 Page 클래스는 IsPostBack이라는 불린(Boolean)형 프로퍼티를 제공하는데 이 값이 True면 해당 페이지는 이미 렌더링된 페이지가 사용자에 의해서 다시 호출된 것을 의미한다. 따라서 다음과 같이 코드를 작성하면 페이지가 처음 호출되었을 때만 페이지의 초기화 작업을 수행함으로써 서버의 부하를 줄일수 있다.


Page 클래스의 IsPostBack의 값이 True일 때에는 데이터베이스를 사용하지 않고 각 컨트롤에 저장된 상태 값(viewstate)을 이용해서 페이지를 구성하게 된다. 이것은 컨트롤들이 자신의 값을 기억하고 있다는 의미이다. 하지만 웹 환경은 상태 값을 보존하지 않는 stateless환경이지 않은가?

어디에 이러한 상태값을 저장한다는 말인가?

각 서버 컨트롤들의 상태 값이 인코딩된 상태로 hidden태구의 값으로 저장된다.

랜더링된 html페이지 소스에서 _VIEWSTATE값을 디코딩해서 페이지에 포함된 서버 컨트롤의 값을 초기화하게 되는 것이다.

'Web Development > .NET' 카테고리의 다른 글

ASP.NET 파일 업로드  (0) 2007.10.15
ASP.NET을 하기 위한 기본 설정 및 오류 사항에 대한  (0) 2007.10.15
if (Page.IsPostBack)  (0) 2007.10.15
ASP.NET 2.0 테마  (0) 2007.10.15
ASP.NET 2.0의 마스터 페이지  (0) 2007.10.15