정적 페이지 vs 동적 페이지

DATE : 2023/10/26

지금까지 살펴본 내용을 쭉 돌아봤을 때

어떤 사용자가 요청 하더라도 동일한 페이지를 제공해왔다.

하.지.만

누가 요청하든 세상의 모든 페이지가 동일한 정보를 제공할까??

만약 자신의 계정으로 로그인 한 학생에게 성적표를 제공해주는 서버가 있다고 상상해보자.

학생이 100명이면 100개의 성적표 파일을, 학생이 1,000명이면 1,000개의 성적표 파일을

하나 하나 만들어야 하며 성적표 파일 양식이 변경된 날에는..

그 많은 성적표 파일을 하나씩 수정해야 할 것이다.

이 타이밍에 고민을 해보자!! 어떻게 하면 1,000개의 성적표를 하나 하나 수정하지 않고

효율적으로 파일을 생성하고 관리할 수 있을까??

그 정답이 바로 동적 페이지이다.


동적 페이지를 이해하기 위해

이름과 학번을 입력하면, 입력한 정보를 출력하는 페이지를 만들어보자.

<form method="post" action="./info.php">
    <input type="text" name="name" placeholder="student_name">
    <input type="text" name="id" placeholder="student_id">
    <input type="submit" value="SUBMIT">
</form>

학생 이름 & 학번을 입력할 form을 만들고 페이지를 확인해보면

위와 같이 <input> 두 개로 구성된 form을 볼 수 있다.

학생 정보를 입력한 후 Enter를 누르면

사용자가 입력한 정보를 기반으로 학생 정보를 출력해주는 페이지를 얻을 수 있다.

만약 hanhoo가 아닌 다른 학생이 자신의 정보를 입력하면

info.php 내용은 달라지게 된다.

이처럼 사용자에 따라 내용이 변하는 페이지를 동적 페이지,

반대로 누구에게나 고정된 형태의 페이지를 정적 페이지라고 한다.


동적 페이지가 사용자에 따라 페이지 내용이 달라지는 이유는

서버가 사용자의 요청을 처리하는 과정에서 실행되는 코드 결과가 다르기 때문이다.

[+] 이때 "실행되는 코드"는 서버 측에서 사용자의 요청을 처리하기 위해

페이지를 만드는 과정에서 실행되는 코드를 말한다. (ex. php, asp, jsp...)

<?php
$student = $_POST['name'];
$student_id = $_POST['id'];

echo "Student Name : ".$student."<br>";
echo "Student ID : ".$student_id;
?>

info.php 코드를 확인해보면 글로벌 변수 $_POST에서 사용자가 입력한 name & id 값을 가져온다.

그렇다 보니 "어떤 값을 입력하는가"에 따라서 이 코드의 결과가 달라지면서

페이지 내용이 변하는, 동적 페이지를 만들 수 있게 되는 것!


동적 페이지가 만들어지는 과정을 좀 더 세세하게 드려다 보려면,

WAS에 대해 간단히 언급할 필요가 있다.

WAS : Web Application Server는 동적 페이지를 담당하는 서버로

client가 ".php file 줘!" 라는 요청을 Web server에게 보내면

Web server는 해당 파일을 보고 "동적 페이지잖아? WAS야 처리해줘"하고 WAS에게 요청을 넘긴다.

(client -> web server -> WAS)

WAS는 자신이 처리해야 하는 파일 내용을 쭉 읽어서 PHP code와 같이

자신이 실행해야 하는 코드를 찾아 페이지를 만들고 Web server에게 돌려준다.

(WAS -> web server)

그러면 Web server는 자신에게 요청을 보낸 client에게 만들어진 최종 페이지를 보내주는 것이다.

(web server -> client)

따라서 동적 페이지는 WAS가 담당하며, WAS가 실행하는 코드는 php, jsp, asp와 같이

서버 내부적으로 데이터를 저장, 처리, 관리하는 내용과 연결된다고 할 수 있다.

[ summary ]

(1) 동적 페이지 : 페이지 내용이 변하는 페이지

(2) 정적 페이지 : 내용이 고정되어 있는 페이지

(3) 정적 페이지는 Web server가, 동적 페이지는 WAS가 담당한다.

Last updated