대부분의 ASP (Active Server Pages) 응용 프로그램은 문자열 연결을 통해 사용자에게 제시된 HTML 형식 데이터를 만듭니다. 이 기사는이 HTML 데이터 스트림을 생성하는 몇 가지 방법을 비교하며, 어떤 경우에는 일부 방법이 다른 방법보다 성능을 능가합니다. 이 기사에서는 이미 ASP 및 Visual Basic 프로그래밍에 대한 지식이 있다고 가정합니다.
ASP 페이지를 작성할 때 개발자는 실제로 ASP가 제공 한 응답 객체를 통해 웹 클라이언트에 기록 된 형식의 텍스트 스트림을 만듭니다. 이 텍스트 스트림을 만드는 다양한 방법이 있으며 선택한 방법은 웹 응용 프로그램의 성능 및 확장성에 큰 영향을 미칩니다. 클라이언트가 웹 응용 프로그램의 성능을 최적화하는 데 도움이되면 여러 번 효과적인 방법 중 하나는 HTML 스트림이 만드는 방식을 변경하는 것임을 알았습니다. 이 기사는 몇 가지 일반적인 기술을 소개하고 간단한 ASP 페이지의 성능에 미치는 영향을 테스트합니다.
많은 ASP 개발자는 우수한 소프트웨어 엔지니어링 원칙을 따르고 가능한 한 코드를 모듈화합니다. 이 디자인에는 일반적으로 페이지의 특정 불연속 부분을 형식화하는 기능이 포함 된 파일이 포함됩니다. 이러한 함수의 문자열 출력 (일반적으로 HTML 테이블 코드)은 다양한 조합을 통해 전체 페이지를 생성 할 수 있습니다. 일부 개발자는 이러한 HTML 기능을 Visual Basic Com 구성 요소로 이동하여 컴파일 된 코드가 제공하는 추가 성능을 활용 하여이 접근법을 개선했습니다.
이 설계 접근법이 좋지만, 이러한 불연속 HTML 코드 구성 요소를 구성하는 문자열을 만드는 데 사용되는 방법은 웹 사이트의 성능 및 확장성에 큰 영향을 미칩니다. 실제 작업이 파일 또는 시각적 기본 COM 구성 요소에서 실제 작업이 수행되는지 여부에 관계없이 웹 사이트의 성능 및 확장 성에 큰 영향을 미칩니다.
WriteHtml 함수의 다음 코드 스 니펫을 참조하십시오. 데이터 이름이 지정된 매개 변수는 일부 데이터를 포함하는 문자열 배열 일뿐입니다 (예 : 데이터베이스에서 반환 된 데이터).
함수 WRITHTML (데이터) dim nrepfor nrep = 0 ~ 99 shtml = shtml & vbcrlf _ & "<tr> <td>"& (nrep + 1) & "</td> <td>"_ & data (0, nrep) & "</td> <td>"_ & data (1, nrep) & "</td>" 데이터 (2, nrep) & "</td> <td>"_ & data (2, nrep) & "</td> <td>"_ & data (3, nrep) & "</td> <td>"_ & data (4, nrep) & "</td> <td>"_ & data (5, nrep) & "</td> </tr>"NextWriteHtml = shtmlend 함수
이것은 HTML 코드를 만들 때 많은 ASP 및 Visual Basic 개발자가 사용하는 일반적인 방법입니다. SHTML 변수에 포함 된 텍스트는 호출 코드로 반환되고 response.write를 사용하여 클라이언트에게 기록됩니다. 물론 이것은 또한 WriteHtml 함수를 포함하지 않는 페이지를 직접 포함시키는 유사한 코드로 표현 될 수 있습니다. 이 코드의 문제점은 ASP 및 Visual Basic에서 사용하는 문자열 데이터 유형 (BSTR 또는 기본 문자열)이 실제로 길이를 변경할 수 없다는 것입니다. 이는 문자열 길이가 변경 될 때마다 메모리에 문자열의 원래 표현이 손상되고 새로운 문자열 데이터가 포함 된 새로운 표현이 생성 될 것임을 의미합니다. 이는 메모리 할당 및 거래 메모리를 할당하는 작업이 증가합니다. 물론 ASP와 Visual Basic이이를 해결 했으므로 실제 오버 헤드가 즉시 나타나지 않습니다. 할당 및 할당되지 않은 메모리를 사용하려면 기본 런타임 코드가 각 전용 잠금 잠금 장치를 잠금 해제하므로 많은 오버 헤드가 필요합니다. 이 문제는 문자열이 크고 큰 기억의 덩어리가 큰 문자열 연결 중에 발생하므로 빠르고 연속적인 방식으로 할당되고 거래 될 때 특히 분명해집니다. 이 문제는 단일 사용자 환경에 거의 영향을 미치지 않지만 서버 환경 (예 : 웹 서버에서 실행되는 ASP 응용 프로그램)에서 심각한 성능 및 확장 성 문제를 일으킬 수 있습니다.