1. Session 변수의 사용을 줄여라.
필요 시에만 Session변수를 사용하고 사이즈가 큰 Dynamic Array나 ADO 개체,
Business개체를 Session변수로 사용하지 않도록 한다.
2. Stored Procedure를 사용하라.
DataBase 성능을 높이기 위해서 ASP에서 SQL 쿼리문을 직접 사용하기 보다는
Stored Procedure를 이용한다.
SQL 저장 프로시저가 한번 실행되면 SQL서버의 메모리에 캐쉬되기 때문에
다음 번에 실행될 때 훨씬 속도가 빨라지는 장점을 가진다.
3. Connection Pooling을 On한다.
데이터베이스에 연결하기 위해 드는 시간과 리소스는 큰 비중을 차지한다.
그러므로 데이터 연결이 필요한 매 페이지마다 새로운 데이터베이스 연결을 하고
페이지가 실행을 마친 다음에 연결이 삭제되는 것은 특히 웹 서버에 동시 사용자가
많은 경우 성능은 매우 떨어질 것이다.
Connection Pooling은 특정 페이지에서 사용된 Connection을 Pool에 가지고 있다가,
이 것이 필요할 때 재 사용할 수 있게 하는 것이다.
ASP 웹 응용프로그램이 Connection Pooling을 사용하게 하려면 레지스트리에서 설정을 확인해야 한다.
IIS 3.0인 경우에는 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\ASP\Parameters 에서
StartConnectionPool 엔트리의 값을 1로 설정해야 한다.
IIS 4.0에서는 디폴트로 Connection Pooling이 On 되어 있다.
4.Option Explicit를 사용한다.
선언되지 않은 로컬 변수는 선언된 변수보다 2배 정도 속도가 느리다.
이 옵션을 On함으로써 속도 뿐만 아니라 코드상에서 Mis-Spelling으로 인한 에러를 쉽게 발견할 수도 있다.
5.생성된 개체를 Close하고 파괴하라.
ADO 개체인 경우 Connection Pooling이 사용되면 가능한 한 빨리 ADO Connection 개체를
Pool로 되돌려 주는 것이 좋기 때문에 명시적으로 Close와 Set 변수명 = Nothing을 사용해야 한다.
만약 ADO Connection개체를 Close하지 않고 Nothing만 하면 Connection Pooling이 적용되지 않으므로
Close와 Nothing을 모두 명시해야 한다.
6. ADO의 GetRows를 사용하라.
데이터베이스의 쿼리를 실행하여 웹 페이지에 표시하는 작업은 레코드 수가 많아질 때
ASP의 스크립트 프로세싱 타임을 느리게 하는 원인이 된다.
Do..Loop문을 이용해 EOF를 체크하는 대신 Getrows를 이용해 레코드를 배열형태로 저장한 후
For i=LBound(array) To UBound(array) 방식으로 출력하면 속도를 높일 수 있다.
(페이징과 같은 기능은 이용할 수 없음)
7. Collection의 값을 로컬 변수로 복사한다.
반복적으로 사용되는 Collection의 값은 변수에 미리 저장해 둔 후 변수를 이용한다.
사용자가 Collection의 값을 사용할 때마다 서버가 Collection에서 값을 찾아오는 작업에 대한
시간을 적게 줄임으로써 스크립트 실행속도를 향상시킨다.
8. 데이터베이스 연결에 대해서 include파일을 이용하라.
반복작업을 피하기 위해 Session변수를 이용하는 것은 바람직하지 않으므로 asp파일로 만들고 Include하여 사용한다.
이때 확장자를 dbcon.inc와 같이 inc확장자로 만들 경우,
에러가 발생하거나 파일의 경로 및 파일명을 알아 주소창에 파일경로를 치게되면
데이터베이스의 위치(ip), 연결 계정, 비밀번호들이 노출되는 위험이 있으므로 asp 확장자로 파일을 생성해야 한다.
9. Session변수를 사용하지 않는 페이지라면 @ENABLESESSIONSTATE 를 False로 설정하라.
ASP웹 페이지의 성능을 높이는 방법중의 하나는 @ENABLESESSIONSTATE 를 False로 설정하는 것이다.
만약 ASP페이지가 Session변수를 사용하지 않는다면 ASP 페이지의 가장 윗부분에 꼭 다음을 명시한다.
10. ADO 상수 사용시 가독성을 높이려면 Numeric 상수 대신 Named 상수를 사용한다.
ADOVBS.INC를 Include하여 ADO의 Named 상수를 사용하면 가독성을 높일 수 있다.
Named상수를 사용하는 것이 속도면에서는 Numeric상수보다 오히려 떨어지나, 가독성은 높다.
11. 클라이언트-사이드 폼 Validation을 사용한다.
사용자가 폼에 데이터를 입력하였을 때, 유효한 데이터가 입력되었는지 확인하기 위해서
클라이언트-사이드 스크립트를 사용하거나, ASP의 서버-사이드 스크립트에서 각 필드의 값을 확인할 수 있다.
서버 사이드 스크립트를 사용하는 경우, 유효하지 않은 데이터가 입력된 경우 다시 ASP파일로 Redirection이 일어난다.
이 작업은 서버에 Round Trip을 발생시키기 때문에 성능에 좋지 않다.
클라이언트-사이드 Validation을 이용하여 폼이 Submit될 때 동시에 데이터 Validation이 일어나게 하는 것이 좋다.