SMS처리 도우미
E-mail
  ldwin@naver.com
제목
  [ASP 함수] Response.Buffer , Response.flush 버퍼링설명 (From. 소스놀이터)


혹시 특정 사이트에 접속했는데, 어떤 곳은 바로 사이트가 뜨기 시작하고, 또 다른 곳은 한참 있다가... 한 번에 사이트가 뜨지 않던가요?

기다리다 한 번에 사이트가 뜨는 것은, 버퍼링 기능을 활용한 경우입니다.

 

1. 버퍼링 기능이란?

버퍼링하면 동영상 플레이어를 생각하면 이해가 쉽습니다.

보통 플레이어에서 미리 동영상을 읽어놓습니다.

이 읽어놓은 게 버퍼링해 놓은 것입니다.

동영상이 계속 진행되다가, 인터넷이 느려지면..... 어느 순간부터 버퍼링해 놓은 (미리 읽어놓은) 동영상을 재생하게 되죠.

그래도 계속 느려진다면 결국 버퍼링해놓은 것까지 다 쓰게 되어 화면이 멈추고 맙니다.

 

2. 웹에서의 버퍼링이란?

동영상 플레이어처럼 웹에서 버퍼링 설정을 해 놓으면, 데이터를 미리 읽습니다.

여차하면 보여주겠죠.

하지만, 다 로딩되기 전에 (혹은 프로그래머가 지정한 특정 시점 전에는) 보여주지 않습니다. 단지 준비된 상태인 거죠.

만약, 모든 웹페이지를 다 불러왔으면 버퍼링 된 것을 보여주게 됩니다.

 

그리고, 버퍼링 설정이 없다면.... 읽는 즉시 읽은 만큼 보여주게 됩니다.

그럼 버퍼링을 쓰려면, 어떻게 해야할까요?  (ASP)

페이지 상단에 다음과 같이 적어줍니다.

Response.Buffer = true

이제부터는 버퍼링이 적용되는 것입니다.

그리고 코드의 3/1 지점에서 버퍼링해놓은 걸 불러올 수 있습니다.

Response.flush

이렇게 하면 불러옵니다. 그럼 그 다음, 화면이 딱 멈춰있겠죠.

왜냐하면, 그 이후에 다시 버퍼링하게 되기 때문입니다.

3. 그럼 왜 버퍼링 기능이 필요한가?

먼저 순서대로 내용을 보여주고 싶은 경우가 있을 수 있습니다.

보통 웹페이지가 매우 클 때 그렇게 하죠.

순서대로 보여주면 정리되어 보여지는 것 같고, 사용자도 기다림에 지치지 않습니다. 짜임새 있게 보여줄 수 있는 거죠.

또 다른 이유로 버퍼링을 한 후 flush 시켜주기도 하는데요.

굉장히 긴 시간동안 (예를 들어, 10분동안 페이지가 실시간으로 계속 실행되는 경우) 실행되는 경우,버퍼링을 쓰면 좋습니다.

만약, 버퍼링 기능과 flush 기능을 쓰지 않으면, 어떻게 될까요?

익스플로러 응답 없음이라는 경고창이 뜨게 됩니다.

그리고, 사용자는 창을 닫아버릴지 모릅니다.

하지만, 버퍼링 해놓고 5초단위로 flush 해준다면 이야기는 달라집니다.

익스플로러에서 계속 데이터가 들어오기 때문에 "응답없음"이 뜨지 않죠.

그리고, 실시간으로 계속 보여주는 기능이 있을 때, 문제 없이 작동됩니다.

참 매력적인 기능이 버퍼링 아닐까요?

 

언젠가 프로그램 년차가 오래 안 되었을때 메일을 만든 적이 있었습니다.

대부분 다 잘되는데, 많은 부하가 걸리는 경우가 있었습니다. 

어떤 사용자가 몇 달에 한번씩 접속하는 경우입니다.  그 기간 얼마나 메일이 쌓여있었겠습니까?

그걸 한 번에 다운받아야 하는데... 이때 제가 버퍼링 기능 활용법을 몰랐습니다.

그래서, 웹페이지가 멈춘 듯하여 분란을 일으킨 경험이 있습니다.

뭐 제가 직접 문제를 수동으로 해결해주곤 했지만, 여튼 그땐 정말 힘들었습니다. 

(당시 백그라운드 프로그램을 실행하지 않은 것이 문제의 원인이기도 했습니다.)

버퍼링은 단지 웹에만 있는 것이 아니라, 어느 프로그램에도 모두 있는 것이기에 잘 활용하시기 바랍니다.

최적화한 버퍼링은 어떤 프로그램이라도 최적의 속도를 낸답니다!!

트위터, 페이스북 공유 부탁드립니다~!
트위터   페이스북


  • 패스워드
           
X