권장 : 최대 영화 사이트가 RSS 피드를 생성하는 코드 얼마 전에 영화 사이트에 RSS 구독 기능을 추가하기 위해 RSS 피드를 동적으로 생성하는 ASP 코드를 작성했습니다. 첨부 파일을 업로드 할 수 없으므로 코드를 붙여 넣었습니다. 어쨌든 길지 않습니다. Max를 영화 사이트로 사용하는 친구는 직접 사용할 수 있습니다. 다른 유형의 사이트를 변경합니다.
ASP 개발자는 설계 프로젝트에서 더 나은 성능과 확장 성을 얻기 위해 지속적으로 노력하고 있습니다. 다행히도, 이것에 대한 훌륭한 조언을 제공하는 많은 책과 사이트가 있습니다. 그러나 이러한 제안의 기초는 ASP 플랫폼 작업의 구조에서 도출 된 결론이며 실제 성능 향상에 대한 측정은 없습니다. 이러한 제안에는보다 복잡한 코딩 프로세스가 필요하고 코딩의 가독성을 줄이기 때문에 개발자는 실제 운영 효과를 보지 않고 ASP 응용 프로그램의 성능을 향상시키기 위해 비용을 지불 할 가치가 있는지 스스로 측정 할 수 있습니다.
이 기사는 두 부분으로 나뉘어 있으며 개발자가 특정 이니셔티브가 향후 프로젝트에 가치가있을뿐만 아니라 원래 프로젝트를 업데이트 할 수 있는지 여부를 결정하는 데 도움이되는 성능 테스트 결과를 소개합니다. 첫 번째 부분에서는 ASP 개발의 몇 가지 기본 문제를 검토 할 것입니다. 두 번째 부분에서는 ADO 함수의 일부 최적화가 관련되며 결과는 VB COM 개체를 호출하여 동일한 ADO 함수를 실행하는 ASP 페이지와 비교됩니다. 이 결과는 눈을 뜨고 때로는 놀랍습니다.
이 기사에서는 다음 질문에 답할 것입니다.
* ASP로 생성 된 컨텐츠를 응답 스트림에 작성하는 가장 효율적인 방법은 무엇입니까?
* 버퍼를 켜야합니까?
* ASP 코드에 주석을 추가하는 것을 고려해야합니까?
* 기본 언어가 페이지에 명시 적으로 설정되어야합니까?
* 필요하지 않은 경우 세션 상태를 꺼야합니까?
* 스크립트 로직은 서브 루틴과 기능 영역에 배치해야합니까?
* 포함 파일 사용의 효과는 무엇입니까?
* 오류 처리를 수행 할 때 어떤 종류의 부하가 적용됩니까?
* 컨텍스트 처리를 설정하면 성능에 영향을 미칩니 까?
모든 테스트는 여기에서 찾을 수있는 무료 도구 인 Microsoft의 Web Applications Focus Tool (WAST)을 사용하여 수행되었습니다. 아래에 설명 된 ASP 페이지 테스트를 반복적으로 호출하는 간단한 테스트 스크립트를 만들었습니다 (각각 70,000 배 이상). 반응 시간은 평균 마지막 바이트 총 시간 (TTLB)을 기준으로합니다. 우리의 테스트 서버는 196MB의 메모리가있는 Pentium 166이고 256MB의 메모리가있는 Pentium 450입니다. 이 기계의 성능이 매우 발전하지는 않지만 서버의 용량을 테스트하지 않는다는 것을 잊지 말고 서버가 한 페이지에 한 페이지를 처리하는 데 걸리는 시간을 테스트하고 있습니다. 이 기계는 테스트 중에 다른 작업을 수행하지 않습니다. WAST 테스트 스크립트, 테스트 보고서 및 모든 ASP 테스트 페이지는 ZIP 파일에 포함되어 있으며 직접 검토하고 테스트 할 수 있습니다.
ASP에서 생성 된 컨텐츠를 응답 스트림에 쓰는 가장 효율적인 방법은 무엇입니까?
ASP를 사용하는 주된 이유 중 하나는 서버에서 동적 컨텐츠를 생성하는 것입니다. 따라서 테스트의 시작점은 동적 컨텐츠를 응답 스트림에 보내는 가장 적합한 방법을 결정하는 것이 분명합니다. 많은 옵션 중에서 두 가지가 가장 기본적입니다. 하나는 인라인 ASP 태그를 사용하고 다른 하나는 응답을 사용하는 것입니다.
이러한 선택을 테스트하기 위해 일부 변수가 정의되고 해당 값이 테이블에 삽입되는 간단한 ASP 페이지를 만듭니다. 이 페이지는 간단하고 실용적이지는 않지만 별도의 질문을 분리하고 테스트 할 수 있습니다.
ASP 인라인 태그 사용
첫 번째 테스트는 인라인 ASP 태그 < %= x %>를 사용하는 것입니다. 여기서 x는 할당 된 변수입니다. 이 방법은 실행하기가 가장 쉽고 페이지의 HTML 부분을 읽고 유지 관리하기 쉬운 형식으로 유지합니다.
| <% 옵션 명시 적 Dim FirstName 희미한 마지막 이름 희미한 중간 희미한 주소 딤시 희미한 상태 희미한 전화기 듀드 팩스 희미한 이메일 희미한 생년월일 FirstName = John 중간 기간 = q lastname = public 주소 = 100 메인 스트리트 City = 뉴욕 State = NY phoneNumber = 1-212-555-1234 팩스 = 1-212-555-1234 이메일 = [email protected] Birthdate = 1/1/1950 %> <html> <헤드> <title> 응답 테스트 </ title> </head> <body> <H1> 응답 테스트 </h1> <테이블> <tr> <td> <b> 이름 : </b> </td> <td> < %= FirstName %> </td> </tr> <tr> <td> <b> 중간 초기 : </b> </td> <td> < %= 중간 값 %> </td> </tr> <tr> <td> <b> 성 : </b> </td> <td> < %= lastname %> </td> </tr> <tr> <td> <b> 주소 : </b> </td> <td> < %= 주소 %> </td> </tr> <tr> <td> <b> City : </b> </td> <td> < %= City %> </td> </tr> <tr> <td> <b> 상태 : </b> </td> <td> < %= state %> </td> </tr> <tr> <td> <b> 전화 번호 : </b> </td> <td> < %= phoneNumber %> </td> </tr> <tr> <td> <b> 팩스 번호 : </b> </td> <td> < %= 팩스 %> </td> </tr> <tr> <td> <b> 이메일 : </b> </td> <td> < %= 이메일 %> </td> </tr> <tr> <td> <b> 생년월일 : </b> </td> <td> < %= BirthDate %> </td> </tr> </테이블> </body> </html> |
/app1/response1.asp에 대한 전체 코드
이전 최고 (응답 속도) = 8.28 msec/page
HTML의 각 라인에서 응답을 사용하십시오
더 나은 학습 문서는 이전 방법을 피하는 것이 좋습니다. 주된 이유는 출력 페이지와 처리 시간을 반응 시간을 적용하는 동안 웹 서버가 순수한 HTML 전송과 처리 스크립트간에 변환 해야하는 경우 컨텍스트 변환이라는 문제가 발생하기 때문입니다. 대부분의 프로그래머 가이를 들으면 첫 번째 반응은 원래 HTML의 모든 라인을 응답으로 랩핑하는 것입니다.
| … response.write (<html>) response.write (<head>) Response.write (<title> 응답 테스트 </title>) response.write (</head>) response.write (<body>) Response.Write (<H1> 응답 테스트 </h1>) 응답 .write (<table>) response.write (<tr> <td> <b> 이름 : </b> </td> <td> & firstName & </td> </tr>) response.write (<tr> <td> <b> 중간 초기 : </b> </td> <td> & middleinitial & </td> </tr>) ... < |
/app1/response2.asp 조각
이전 최고 (응답 속도) = 8.28 msec/page
반응 시간 = 8.08 msec/page
차이 = -0.20 msec (2.4%감소)
이 접근법을 사용하는 것은 인라인 태깅을 사용하는 것과 비교하여 성능이 매우 작다는 것을 알 수 있습니다. 아마도 페이지가 작은 기능 호출로 서버에로드되기 때문일 수 있습니다. 이 접근법의 가장 큰 단점은 HTML이 이제 스크립트에 포함되기 때문에 스크립트 코드가 더 장황하고 읽고 유지하기가 더 어려워진다는 것입니다.
공유 : ASP 프로그래밍의 20 가지 매우 유용한 예제 (i) 1. 웹 사이트의 가상 물리 경로를 결정하기 위해 ASP를 사용하는 방법 답변 : Mappath 메소드를 사용하십시오 : < % = server.mappath () %> 2. 사용자가 사용하는 브라우저를 어떻게 알 수 있습니까? 답변 : 요청 객체 메소드 사용 :
총 5 페이지 이전 페이지 12345next 페이지