팁 1: 요청 컬렉션 사용의 효율성 향상
값을 추출하기 위해 ASP 컬렉션에 액세스하는 것은 시간이 많이 걸리고 계산 리소스를 많이 사용하는 프로세스입니다. 이 작업에는 관련 컬렉션을 통한 일련의 검색이 포함되므로 지역 변수에 액세스하는 것보다 훨씬 느립니다. 따라서 페이지에서 요청 컬렉션의 값을 여러 번 사용하려는 경우 해당 값을 로컬 변수로 저장하는 것을 고려해야 합니다. 예를 들어, 스크립트 엔진 처리 속도를 높이려면 다음 형식으로 코드를 작성하십시오.
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("성")
If Len(strTitle) 그러면 strTitle=strTitle & " "
strFirstName=""이면 strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 그런 다음
strFullName=strTitle & strFirstName & ". " & strLastName
또 다른
strFullName=strTitle & strFirstName & " " & strLastName
종료 조건
??팁 2: 적절한 컬렉션에 직접 액세스
??선택의 여지가 없는 경우 매개변수를 얻기 위해 strPage=Request("page")를 사용하지 마십시오. 이렇게 하면 모든 컬렉션을 순서대로 검색하게 됩니다(QueryString, Form, Cookies, ClientCertificate, 첫 번째 일치하는 값의 이름이 발견될 때까지 ServerVarible입니다. 이렇게 하면 해당 컬렉션에 직접 액세스하는 것보다 효율성이 떨어지며 해당 값이 다른 컬렉션에 나타나지 않는다는 절대적 보장이 없으면 안전하지 않습니다.
예를 들어 클라이언트의 요청을 이행하는 웹 서버의 이름을 검색하려는 경우 각 쿼리에 나타나는 Request.ServerVarables 컬렉션에서 "SERVER_NAME"을 검색하면 됩니다. 그러나 다른 컬렉션에도 "SERVER_NAME"이라는 값이 포함되어 있는 경우(키 이름은 대소문자를 구분하지 않음) Request("server_Name")를 사용할 때 잘못된 결과를 얻게 됩니다. 요약하자면, 가능할 때마다 적절한 컬렉션에 직접 액세스해야 합니다.
팁 3: 시간이 많이 걸리는 작업 전에 Response.IsClientConnected 속성을 사용하십시오
. Response.IsClientConnected를 사용하는 것은 사용자가 여전히 서버에 연결되어 있고 ASP에서 만든 웹 페이지를 로드하고 있는지 관찰하는 유용한 방법입니다. 사용자가 연결을 끊거나 다운로드를 중지하면 IIS에서 버퍼 내용을 삭제하므로 더 이상 웹 페이지를 만드는 데 서버 리소스를 낭비할 필요가 없습니다. 따라서 많은 리소스를 계산하거나 사용하는 데 많은 시간이 필요한 페이지의 경우 방문자가 오프라인인지 여부를 모든 단계에서 확인하는 것이 좋습니다.
… 페이지의 첫 번째 부분을 생성하는 코드
Response.IsClientConnected인 경우
응답.플러시
또 다른
응답.종료
종료 조건
...... 페이지의 다음 부분을 생성하는 코드
?? 팁 4: ASP에서 ADO 작업 최적화
?? 일반적으로 데이터는 웹 사이트의 실제 콘텐츠를 구성합니다. 따라서 ADO 작업을 최적화하여 ASP 코드 실행 속도를 높이는 것은 매우 유용합니다.
??a. 필수 열만 선택: ADO 레코드 집합을 열 때 모든 열을 가져와야 하는 경우가 아니면 자동으로 테이블 이름(예: SELECT *)을 사용하면 안 됩니다. 별도의 열을 사용한다는 것은 서버로 보내거나 서버에서 가져오는 데이터의 양이 줄어든다는 것을 의미합니다. 모든 열을 사용해야 하는 경우에도 각 열의 이름을 개별적으로 지정하면 서버가 열 이름을 해석할 필요가 없으므로 최상의 성능을 얻을 수 있습니다.
b. 가능한 한 저장 프로시저를 사용하십시오. 저장 프로시저는 준비된 실행 계획이 포함된 미리 컴파일된 프로그램이므로 SQL 문보다 빠르게 실행됩니다.
??c. 적절한 커서 및 잠금 패턴을 사용하십시오. 레코드세트에서 데이터를 읽고 화면에 표시하는 것이 전부라면 기본 전달 전용, 읽기 전용 레코드세트를 사용하세요. ADO가 레코드 및 잠금의 세부 사항을 유지하기 위해 수행해야 하는 작업이 적을수록 성능은 더 높아집니다.
??d. 개체 변수를 사용합니다. 레코드 세트를 반복할 때 성능을 향상시키는 확실한 방법은 개체 변수를 사용하여 컬렉션의 멤버를 가리키는 것입니다. 예:
RsGc.EOF가 아닌 동안
Response.Write "프로젝트 이름:" & RsGc("GcMC") & "(프로젝트 코드: " & RsGc("GcCode") & ")
"
RsGc.MoveNext
Wend를
다음
코드로 다시 작성할 수 있습니다.
GcCode=RsGc("GcCode") 설정
rsGc.EOF Response.Write가 아닌 동안 "프로젝트 이름: " & GcMc & "(프로젝트 코드: " & GcCode & ")
" RsGc.MoveNext
Wend
?? 새 코드는 개체 변수에 대한 참조를 설정하므로 실제 변수 대신 개체 변수를 사용할 수 있습니다. 즉, 컬렉션에 대한 인덱스가 적기 때문에 스크립트 엔진의 작업량이 줄어듭니다.
??팁 5: 스크립트 엔진을 혼합하지 마십시오
. ??우리는 VBScript와 JScript를 모두 ASP 페이지에서 사용할 수 있다는 것을 알고 있습니다. 그러나 같은 페이지에서 JScript와 VBScript를 동시에 사용하는 것은 바람직하지 않습니다. 서버는 하나가 아닌 두 개의 스크립트 엔진을 인스턴스화하고 캐시해야 하므로 이로 인해 시스템의 로드가 어느 정도 증가합니다. 따라서 성능상의 이유로 동일한 페이지에 여러 스크립트 엔진을 혼합하면 안 됩니다.