lang/asp

서버에 부담을 줄이려면 고려하라

C/H 2006. 10. 20. 00:11
Response.Redirect 대신 Server.Transfer를 사용하라
Response.Redirect는 Server에서 브라우저에 요청 후 Server로 돌아오나.
Server.Transfer는 Server내부에서 처리됩니다.

Directory URL에 후행 슬러시 사용
후행 슬래시를 생략하면 브라우저는 서버에 요청하여 디렉터리를 요구하고 있다는 응답을 받습니다.
그러면 브라우저는 URL에 슬래시를 첨가하여 두번째 요청을 하며
이때서야 서버가 그 디렉터리에 대한 기본 문서로 응답합니다.

Sever 변수사용금지
서버 변수에 액세스하면 웹 사이트가 서버에 특별한 요청을 하게 되어 요청한 것만이 아니라
모든 서버 변수를 수집하게 됩니다. 속도가 저하됨
ex :

<object> Tag를 사용하라
Server.CreateObject는 즉시 개체를 만듭니다.
이 개체를 나중에 사용하지 않는다면 결국 리소스를 낭비하는 것입니다.
<object id="objname"> 태그는 objname을 선언하지만
이 개체의 메서드 또는 속성 중 하나가 처음 사용될 때까지 objname은 실제로 만들어지지 않습니다.
<object runat="server" progid="ADODB.Connection" id="dbcon"> 

일괄 처리 인라인 스크립트 및 Response.Write 문
응답버퍼링을 켜지 않으면 이 문(statement)이 여러 작은 패킷으로 네트워크를 통해 브라우저로 데이터를 쓰게 됩니다. 이 과정은 매우 느립니다. 작은 양의 스크립트 및 HTML을 여기 저기 배치하면 스크립트 엔진과 HTML간의 전환이
일어나서 성능이 떨어집니다. 가깝게 모여있는 인라인 식(expression)을 Response.Write를 한 번 호출하는 것으로 교체합니다. 특히 게시판과 같이 Until 문을 사용할 때 사용하시면 좋은 효과를 보것입니다.
Ex)

<% For Each fld in rs.Fields %>

<%
Next
While Not rs.EOF
%>

<% For Each fld in rs.Fields %>

<% Next

<% rs.MoveNext
Wend %>
<% = fld.Name %>
<% = fld.Value %>

아래에 있는 더 효율적인 코드는 행마다 응답 스트림에 쓰기가 하나 있습니다.
모든 코드는 하나의 VBScript 블록에 포함됩니다.

<%
For each fld in rs.Fields
Response.Write ("" & vbCrLf)
Next
While Not rs.EOF
Response.Write ("")
For Each fld in rs.Fields %>
Response.Write("" & vbCrLf)
Next
Response.Write ""
End
%>
" & fld.Name & "
" & fld.Value & "



세션 개체의 현명한 사용
ASP는 자동으로 웹 서버에 접근하는 모든 사용자를 위한 세션을 작성합니다. 각 세션은 약 10 KB의 메모리 오버헤드(세션에 저장된 모든 데이터의 상단에 있는)를 갖고 있어서 모든 요청을 약간 늦춥니다. 세션은 구성할 수 있는 시간 제한기간동안 유효하며 이 제한 시간은 일반적으로 20분입니다.
세션이 필요하지 않은 컨텐츠(도움말 화면, 방문자 영역 등)를 세션이 꺼진 별도의 ASP 응용 프로그램으로 옮길 수 있습니다. 각 페이지를 기초로 해당 페이지에 세션 개체가 필요 없다는 것을 알리기 위해 다음과 같은 지시어를 ASP
페이지 상단에 놓을 수 있습니다.
<% @EnableSessionState=False %>
이 지시어를 사용하게 되는 이유 중 하나는 세션이 프레임셋과 관심있는 문제를 만드는 것입니다.
ASP는 언제나 한번에 한 세션에서 하나의 요청만이 실행되도록 보장합니다. 따라서 브라우저가 한 사용자를 위해 여러 페이지를 요청하면 한번에 단지 하나의 ASP 요청만이 세션에 전달되기 때문에 세션 개체에 액세스할 때 멀티스레딩 문제를 방지하지만 모든 페이지는 동시에 페인트되지 않고 차례로 순차적 방법으로 페인트됩니다.
어떤 프레임셋 페이지가 세션에 의지하지 않는다면
ASP가 @EnableSessionState=False 지시어를 사용하도록 하십시오

출처 : http://blog.naver.com/duraboys
반응형