Microsoft IIS Performance 지도자, George V. Reilly
개발자 기술 엔지니어
Nancy Cluts의 기사 에서 발췌
팁 1: 웹 서버에서 자주 사용되는 데이터 캐시
팁 2: 응용 프로그램 및 세션 개체에서 자주 사용되는 데이터 캐시
팁 3: 웹 서버의 디스크 상에서 데이터 및 HTML 캐시
팁 4: 응용 프로그램 또는 세션 개체에서 활발하지 않은 구성 요소 캐싱 방지
팁 5: 응용 프로그램 또는 세션 개체에서 데이터베이스 연결 캐시 금지
팁 6: 세션 개체의 현명한 사용
팁 7: COM 개체에서 코드 간략화
팁 8: 늦은 리소스 획득, 이른 해제
팁 9: 안정성과 성능을 교환하는 종속 프로세스 실행
팁 10: Option Explicit 사용
팁 11: 서브루틴 및 함수에서 지역 변수 사용
팁 12: 자주 사용되는 데이터를 스크립트 변수로 복사
팁 13: 배열 재정의 방지
팁 14: 응답 버퍼링 사용
팁 15: 일괄 처리 인라인 스크립트 및 Response.Write 문
팁 16: 긴 이동을 시작하기 전에 Response.IsClientConnected 사용
팁 17: 태그를 사용한 개체 인스턴스화
팁 18: ADO 및 다른 구성 요소를 위한 TypeLib 바인딩 사용
팁 19: 사용자 브라우저의 유효성 검사 기능 이용
팁 20: 루프에서 문자열 연결 방지
팁 21: 브라우저 및 프록시 캐싱 사용
팁 22: 가능한 한 Response.Redirect대신 Server.Transfer 사용
팁 23: 디렉터리 URL에서 후행 슬래시 사용
팁 24: 서버 변수 사용 방지
팁 25: 최신 및 최고급으로 업그레이드
팁 26: 웹 서버 조정
팁 27: 성능 테스트
팁 28: 리소스 연결 읽기
소개
팁 1: 웹 서버에서 자주 사용되는 데이터 캐시
팁 2: 응용 프로그램 및 세션 개체에서 자주 사용되는 데이터 캐시
Application_OnStart()
또는 Session_OnStart()
에 각각 적당한 코드를 추가합니다. 이러한 함수는 Global.asa에 있어야 하며 없을 때는 이 함수를 추가할 수 있습니다. 가장 필요할 때 데이터를 로드할 수도 있습니다. 이렇게 하려면 데이터가 있는지 확인하고 없을 경우 데이터를 로드하도록 ASP 페이지에 몇 가지 코드를 추가하십시오.(또는 재사용할 수 있는 스크립트 함수 작성) 이것은 필요하다는 것을 알 때 까지 계산을 하지 않는 지연 평가라는 전형적인 성능 기술의 예입니다. 예를 들면 다음과 같습니다.![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
GetRows()
를 사용하는 한가지 함수의 예를 들면 다음과 같습니다.- ADO는 빈 스레드로 표시되어야 합니다.
- 연결이 끊어진 레코드 집합을 사용해야 합니다.
![](http://blog.naver.com/korea/msdn/images/toUS.gif)
팁 3: 웹 서버의 디스크 상에서 데이터 및 HTML 캐시
- FileSystemObject를 스크립트
하면 파일을 생성, 읽기 및 작성할 수 있습니다.
- Internet Explorer와 함께 제공되는 Microsoft?? XML 파서인 MSXML은 XML 문서를 저장 및 로드할 수 있도록 합니다.
- The LookupTable 개체(예제, MSN에서 사용)는 디스크에서 단순한 목록을 로드하는 데 가장 적합합니다.
![](http://blog.naver.com/korea/msdn/images/toUS.gif)
![](http://blog.naver.com/korea/msdn/images/toUS.gif)
팁 4: 응용 프로그램 또는 세션 개체에서 활발하지 않은 구성 요소 캐싱 방지
ThreadingModel=Both
로 표시된 구성 요소 또는 ThreadingModel=Neutral
로 표시된 구성 요소입니다.(Neutral 모델은 Windows?? 2000 and COM+에 새로 도입된 것입니다.) 다음과 같은 구성 요소는 활발하지 않습니다.- 빈 스레드 구성 요소(FTM을 모으지 않는 경우)
- 아파트 스레드 구성 요소
- 단일 스레드 구성 요소
ThreadingModel=Both
가 표시된 구성 요소가 활발한 것이었습니다. 그러나 IIS 5.0에서는 이것이 더 이상 충분하지 않고 Both가 표시될 뿐 아니라 FTM을 모아야 합니다. 활발함에 대한 기사 ![](http://blog.naver.com/korea/msdn/images/toUS.gif)
ThreadingModel=Neutral
로 표시할 수 있습니다. 대신 IIS가 활발함 검사를 수행하지 않게 하려면(따라서 활발하지 않은 구성 요소를 응용 프로그램 또는 세션 범위에 저장하려면) 메타베이스에 AspTrackThreadingModel
을 True
로 설정할 수 있습니다. AspTrackThreadingModel
을 변경하는 것은 바람직 하지 않습니다.Server.CreateObject
로 작성된 활발하지 않은 구성 요소를 저장하려고 하면 IIS 5.0은 오류를 표시합니다. 이때 Global.asa에서
를 사용하여 이 오류를 피해갈 수 있지만 이렇게 하면 아래에 설명하는 마샬링 및 직렬화가 될 수 있기 때문에 바람직 하지 않습니다.![](http://blog.naver.com/korea/msdn/images/toUS.gif)
![](http://blog.naver.com/korea/msdn/images/toUS.gif)
팁 5: 응용 프로그램 또는 세션 개체에서 데이터베이스 연결 캐시 금지
팁 6: 세션 개체의 현명한 사용
![](http://blog.naver.com/korea/msdn/images/toUS.gif)
@EnableSessionState=False
지시어를 사용하도록 하십시오.팁 7: COM 개체에서 코드 간략화
- COM 개체는 프리젠테이션 논리와 비즈니스 논리를 분리하는 데 유용합니다.
- COM 개체는 코드를 재사용 할 수 있도록 합니다.
- VB, C++ 또는 Visual J++로 작성된 코드는 ASP로 작성된 것보다 디버그하기 쉽다는 것을 많은 개발자들이 알아냈습니다.
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
팁 8: 늦은 리소스 획득, 이른 해제
Nothing
으로 설정하는 것이 가장 좋습니다. 레코드 집합이 단순히 범위를 벗어나게 하지는 마십시오. 관련된 명령 및 연결 개체를 모두 해제하십시오.(레코드 집합에서 Close()
를 호출하거나 레코드 집합을 Nothing
으로 설정하기 전의 연결을 호출하는 것을 잊지 마십시오) 이렇게 하면 데이터베이스가 리소스를 다루는 시간을 줄여주며 가능한 빨리 데이터베이스 연결을 연결 풀로 해제합니다.팁 9: 안정성과 성능을 교환하는 종속 프로세스 실행
ASP 옵션
- 낮은 격리. 이것은 모든 IIS 버전에서 지원되며 가장 빠릅니다. 이것은 주요 IIS 프로세스인 Inetinfo.exe에서 ASP를 실행합니다. ASP 응용 프로그램이 작동을 중지하면 IIS도 작동을 중지합니다.(IIS 4.0에서 IIS를 다시 시작하기 위해 웹 마스터는 InetMon과 같은 도구를 사용하여 사이트를 모니터하고 실패한 서버를 다시 시작하기 위해 배치 파일을 실행시킵니다. IIS 5.0에는 안정적인 재시작
이 도입되어 실패한 서버를 자동으로 다시 시작합니다.)
- 보통 격리. ASP가 IIS 프로세스 밖에서 실행하기 때문에 독립 프로세스라고 하는 새로운 수준을 IIS 5.0에 도입했습니다. 보통 격리에서는 보통으로 실행하도록 구성된 모든 ASP 응용 프로그램이 단 하나의 프로세스 공간을 공유합니다. 이렇게 하면 하나의 상자에서 여러 개의 독립 프로세스 ASP 응용 프로그램을 실행하는 데 필요한 프로세스의 수를 줄일 수 있습니다. 보통은 IIS 5.0에서 기본 격리 수준입니다.
- 높은 격리. IIS 4.0과 IIS 5.0에서 지원되는 높은 격리도 독립 프로세스입니다. ASP이 작동을 중지해도 웹 서버는 계속 작동합니다. ASP 응용 프로그램은 자동으로 다음 ASP 요청을 다시 시작합니다. 높은 격리를 사용하면 High로 실행하도록 구성된 각 ASP 응용 프로그램은 각자 고유한 공간에서 실행합니다. 이렇게 하면 ASP 응용 프로그램을 다른 ASP 응용 프로그램으로부터 보호합니다. 이 것의 단점은 각 ASP 응용 프로그램에 대해 개별적인 프로세스를 해야 한다는 것입니다. 하나의 상자에 십여 개의 응용 프로그램을 호스트해야 할 때 오버헤드가 많이 추가될 수 있습니다.
COM 옵션
ByVal
을 전달하여 MBV를 구현할 수 없습니다. MBV는 원래 구성 요소 작성자만이 구현할 수 있습니다.무엇을 해야 합니까?
- IIS 4.0에서, ASP의 낮은 격리 수준과 MTS 서버 패키지를 사용하십시오.
- IIS 5.0에서, ASP의 보통 격리 수준과 COM+ 라이브러리 응용 프로그램을 사용하십시오.
팁 10: Option Explicit 사용
Option Explicit
을 사용하십시오. .asp 파일의 상단에 위치하는 이 지시어는 개발자가 사용할 모든 변수를 선언하도록 합니다. 이렇게 하면 변수를 잘 못 입력하거나 불필요한 새 변수를 만드는 것을 방지할 수 있기 때문에(예를 들어, MyXMLStirng=
대신MyXLMString=…
) 많은 프로그래머가 응용 프로그램을 디버깅할 때 유용하다고 생각합니다.Option Explicit
은 반드시 변수 선언을 하도록 하기 때문에 모든 변수가 선언되고 빨리 액세스할 수 있습니다.팁 11: 서브루틴 및 함수에서 지역 변수 사용
팁 12: 자주 사용되는 데이터를 스크립트 변수로 복사
요청("UserID")
을 12번 호출하는 대신 UserID를 ASP 페이지 상단에서 변수로 지정하고 이 페이지에서 이 변수를 사용하면 11번의 COM 메서드 호출을 절약할 수 있습니다.- 변수
Foo
는 전역 개체로 확인됩니다. - 변수
bar
는Foo
의 구성원으로 확인됩니다. 이것은 COM 메서드 호출이 됩니다. - 변수
blah
는Foo.bar
의 구성원으로 확인됩니다. 이것 역시 COM 메서드 호출이 됩니다. - 변수
qaz
는foo.bar.blah
의 구성원으로 확인됩니다. 물론 COM 메서드 호출이 됩니다. Foo.bar.blah.quaz(1)
를 불러옵니다. 또 하나의 COM 메서드 호출입니다. 그림을 이해하시겠습니까?baz
를 확인하기 위해 1-3 단계를 다시 합니다. 이 시스템은qaz
호출이 개체 모델을 변경한 것을 모르기 때문에baz
를 확인하려면 1-3 단계를 다시 해야 합니다.baz
를Foo.bar.blah
의 구성원으로 확인합니다. 속성을 입력합니다.- . 1-3 단계를 다시 실행하고
zaq
를 확인합니다. - 1-3 단계를 다시 실행하고
abc
를 확인합니다.
With
문을 사용하여 이것을 작성할 수 있습니다.팁 13: 배열 재정의 방지
재정의
하지 않도록 하십시오. 물리적인 메모리 크기에 제약이 있는 컴퓨터를 사용하는 경우 성능에 관한한 최악의 경우에 배열의 초기 정의를 설정하는 것이 가장 좋습니다. 그렇지 않으면 정의를 가장 적합하게 설정하고 필요한 경우에는 재정의합니다. 이것은 불필요한 몇 MB의 메모리를 직접 할당해야 한다는 것을 의미하지는 않습니다.정의
및 재정의
의 불필요한 사용을 보여줍니다.재정의
하는 것보다는 처음에 정확한 사이즈(이 경우에는 5)로 배열을 정의
하는 것이 훨씬 바람직합니다. 약간의 메모리가 낭비될 수 있지만(모든 요소의 사용을 중단하지 않으면) 속도가 빨라집니다.팁 14: 응답 버퍼링 사용
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
Response nulls
컬렉션을 사용하여 nulls가 설정되기 전에) 일반적으로 전체 응용 프로그램에 응답 버퍼링을 켜놓는 것이 가장 좋습니다. 이렇게 하면 모든 페이지에 위의 코드 줄을 넣지 않아도 됩니다.Response.Flush
Response.Buffer = False
를 설정하여 응답 버퍼링을 끌 수 있습니다. 하지만 이것 보다는 Response.Flush
메서드를 사용하는 것이 더 훌륭한 전략입니다. 이 메서드는 ASP가 브라우저로 페인트한 모든 HTML을 플러시합니다. 예를 들어, 천 개의 행(row)이 있는 테이블 중 백 개 행을 페인트한 다음 ASP는 페인트한 결과를 브라우저로 보내기 위해 Response.Flush
를 호출할 수 있습니다. 이렇게 하면 나머지 행이 준비되기 전에 사용자는 우선 백 개 행을 볼 수 있습니다. 이러한 기술은 데이터를 브라우저로 점차적으로 프리젠테이션하는 것과 결합된 응답 버퍼링을 제공합니다.Response.Flush
를 호출해 보십시오. 새로운 Internet Exploer 버전은 테이블을 완전히 다운로드하기 전에 테이블을 페인트하며 테이블의 열(column)의 폭을 지정하면 특히 빨리 페인트합니다. 이렇게 하면 Internet Explorer가 모든 셀의 컨텐츠 폭을 측정하여 열의 폭을 계산하지 않도록 도와줍니다.)Response.Flush
를 신중히 사용하여 해결할 수 있습니다.팁 15: 일괄 처리 인라인 스크립트 및 Response.Write 문
<% = expression %>
은 "expression"
의 값을 ASP 출력 스트림에 씁니다. 응답 버퍼링을 켜지 않으면 이 문(statement)이 여러 작은 패킷으로 네트워크를 통해 브라우저로 데이터를 쓰게 됩니다. 이 과정은 매우 느립니다. 작은 양의 스크립트 및 HTML을 여기 저기 배치하면 스크립트 엔진과 HTML간의 전환이 일어나서 성능이 떨어집니다. 그러므로 다음과 같은 팁을 사용하십시오. 가깝게 모여있는 인라인 식(expression)을 Response.Write
를 한 번 호출하는 것으로 교체합니다. 예를 들어 다음의 예제처럼 행의 필드마다 응답 스트림에 쓰기가 하나 있고 행마다 VBScript 및 HTML 사이에 많은 스위치가 있습니다.<% = fld.Name %> |
---|
<% = fld.Value %> |
" & fld.Name & " |
---|
" & fld.Value & " |
Response.Write
를 일괄 처리하면 성능이 향상되는지 살펴 봅니다.팁 16: 긴 이동을 시작하기 전에 Response.IsClientConnected 사용
Response.IsClientConnected
속성을 사용하여 이러한 상태를 확인할 수 있습니다. 이것이 False
를 반환하면 Response.End
를 호출하고 나머지 페이지를 중지해야 합니다. 사실 IIS 5.0은 이러한 것을 모두 집대성합니다. ASP가 새로운 요청을 실행하려고 할 때마다 그 요청이 대기열에서 얼마나 오래 있었는지를 알기 위해 확인합니다. 이 요청이 대기열에 3초 이상 있었다면 ASP는 클라이언트가 여전히 연결되어 있는지 확인한 다음 연결되어 있지 않을 때는 즉시 요청을 종료합니다. 이 3초 제한 시간을 조정하려면 메타베이스에서 AspQueueConnectionTestTime
설정을 사용할 수 있습니다.Response.IsClientConnected
를 확인하고 싶을 수도 있습니다. 응답 버퍼링을 사용하고 있다면 사용자에게 무언가가 진행중이라는 것을 알리기 위해 중간에 Response.Flush
를 사용하는 것도 좋습니다.Response.Write
를 실행하지 않으면 Response.IsClientConnected
가 정확하게 실행되지 않습니다. 버퍼링을 사용하고 있다면 Response.Flush
를 사용해야 합니다. IIS 5.0에서는 이렇게 하지 않아도 Response.IsClientConnected
가 잘 작동합니다. 어떤 경우에나 Response.IsClientConnected
는 약간의 비용이 들기 때문에 적어도 500 밀리초(초당 12 페이지의 처리량을 유지하려면 이것도 긴 시간입니다.)가 소요되는 작업 앞에만 사용해야 합니다. 일반적인 경험에 따라 테이블의 행(row)을 페인팅할 때와 같이 복잡한 루프의 모든 반복에 호출하지 마십시오. 대신 테이블의 20번째 또는 50번째 행에서 호출하십시오.팁 17: 태그를 사용한 개체 인스턴스화
Server.CreateObject
메서드를 사용하기 보다는 Global.asa에서
태그를 사용하여 개체를 선언하십시오. Server.CreateObject
는 즉시 개체를 만듭니다. 이 개체를 나중에 사용하지 않는다면 결국 리소스를 낭비하는 것입니다.
태그는 objname을 선언하지만 이 개체의 메서드 또는 속성 중 하나가 처음 사용될 때까지 objname은 실제로 만들어지지 않습니다.팁 18: ADO 및 다른 구성 요소를 위한 TypeLib 선언 사용
adovbs.txt
를 포함합니다. 이 파일은 상수를 사용할 모든 페이지에 포함되어야 합니다. 이 상수 파일은 매우 커서 모든 ASP 페이지의 컴파일 시간 및 스크립트 크기에 상당한 오버헤드를 추가합니다.팁 19: 사용자 브라우저의 유효성 검사 기능 이용
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
팁 20: 루프에서 문자열 연결 방지
" & fld.Name & " |
---|
" & fld.Value & " |
"A"
을 얻습니다. 두번째 반복에서 VBScript는 문자열을 재할당하고 두 문자("AB"
)를 s
로 복사해야 합니다. 세번째 반복에서 VBScript는 s
를 다시 재할당하고 3개 문자를 s
로 복사합니다. N번째(26번째) 반복에서 s
를 재할당하고 N개 문자를 s
로 복사합니다. 이것이 N*(N+1)/2 복사본이 있는 1+2+3+…+N의 합계입니다.Response.Write()
또는 인라인 스크립트(<% = fld.Value %>
)와 교체하여 코드를 향상시킬 수 있습니다. 응답 버퍼링이 켜있다면(켜있어야 함) Response.Write
는 응답 버퍼의 끝에 데이터를 추가할 뿐이기 때문에 교체하는 것이 빠릅니다. 재할당이 포함되지않기 때문에 매우 효과적입니다.![](http://blog.daum.net/korea/msdn/images/toUS.gif)
+=
연산자를 사용하는 것이 바람직합니다. 예를 들어 s = s + "some string"
이 아닌 s += "some string"
을 사용하십시오.팁 21: 브라우저 및 프록시 캐싱 사용
- 날씨가 매 5분 마다 업데이트되는 일기예보 페이지.
- 하루에 두 번 업데이트되는 뉴스 또는 출판물을 게시하는 홈 페이지.
- 근간이 되는 통계를 몇 시간마다 업데이트하는 뮤츄얼 펀드 성과 목록.
Response.Expires
속성을 설정하십시오. 다음 예는 브라우저가 컨텐츠를 10분 후에 만료하도록 지시합니다.Response.Expires
를 음수 또는 0으로 설정하면 캐싱을 사용할 수 없게 됩니다. -1000(하루가 약간 넘음)과 같이 큰 음수를 사용하여 서버와 브라우저 클럭 사이의 불일치를 해결하십시오. 두 번째 속성인 Response.ExpiresAbsolute
를 사용하면 컨텐츠가 만료되는 특정 시간을 설정할 수 있습니다.Response.CacheControl
속성을 사용하여 HTTP 프록시가 캐시하기에 컨텐츠가 유효한지의 여부를 나타낼 수 있습니다. 이 속성을 "Public"으로 설정하면 프록시가 컨텐츠를 캐시할 수 있게 됩니다.팁 22: 가능한 한 Response.Redirect 대신 Server.Transfer 사
Response.Redirect
는 브라우저가 다른 페이지를 요청하도록 지시합니다. 이 기능을 종종 사용하여 사용자를 로그온 또는 오류 페이지로 다시 연결시킵니다. 다시 연결되면 새 페이지 요청이 강제되기 때문에 결과적으로 브라우저는 웹 서버에 두 번 왕복해야 하며 웹 서버는 추가 요청을 처리해야 합니다. IIS 5.0은 동일 서버상에서 다른 ASP 페이지로 실행을 전달하는Server.Transfer
라는 새 기능을 도입합니다. 이 기능으로 브라우저와 웹 서버 간의 불필요한 왕복을 피할 수 있기 때문에 결과적으로 전체 시스템이 향상될 뿐만 아니라 사용자에게는 빠른 반응 시간을 제공하게 됩니다. Server.Transfer
및 Server.Execute
에 관한 내용이 있는 New Direction in Redirection ![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
팁 23: 디렉터리 URL에서 후행 슬래시 사용
/
)를 사용하는 것입니다. 후행 슬래시를 생략하면 브라우저는 서버에 요청하여 디렉터리를 요구하고 있다는 응답을 받습니다. 그러면 브라우저는 URL에 슬래시를 첨가하여 두번째 요청을 하며 이때서야 서버가 그 디렉터리(또는 기본 문서가 없거나 디렉터리 브라우징을 사용할 수 없는 경우 디렉터리 목록)에 대한 기본 문서로 응답합니다. 슬래시의 첨가는 처음의 쓸데없는 왕복을 제거합니다. 편리한 사용을 위해서는 표시 이름에 후행 슬래시를 생략하고 싶을 것입니다.팁 24: 서버 변수의 사용을 피함
Request("Data")
)에 절대 액세스하지 마십시오. Request.nulls
, Request.Form
, Request.QueryString
또는Request.ClientCertificate
에 있지 않은 항목의 경우, Request.ServerVariables
에 대한 암시적 호출이 있습니다.Request.ServerVariables
집합은 다른 집합보다 훨씬 느립니다.팁 25: 최신 및 최고급으로 업그레이드.
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
![](http://blog.daum.net/korea/msdn/images/toUS.gif)
팁 26: 웹 서버 조정.
팁 27: 성능 테스트
다음은 몇 가지 아주 유용한 성능 관련 리소스 링크들입니다. Developing Scalable Web Applications은 반드시 읽어보는 것이 좋습니다.
리소스
ASP 스크립트 최적화 | IIS 조정 | ADO 및 SQL Server |
ASP 구성 요소 및 스레딩 모델 | 딕셔너리 구성 요소 | 세션 상태 |
성능 및 확장성 | 도구 | 문서 |
ASP 웹 사이트 | ASP 스타일 | XML |
ASP 스크립트 최적화
Developing Scalable Web Applications
Got Any Cache? 저자: Nancy Winnick Cluts
Maximizing the Performance of Your Active Server Pages 저자: Nancy Winnick Cluts
15 Seconds: Performance Section
Enhancing Performance in ASP - Part I 저자: Wayne Plourde
When is Better Worse? Weighing the Technology Trade-Offs 저자: Nancy Winnick Cluts
Speed and Optimization Resources 저자: Charles Carroll
IIS 조정
The Art and Science of Web Server Tuning with Internet Information Services 5.0
Leveraging ASP in IIS 5.0 저자: J.D. Meier
Tuning IIS 4.0 for High Volume Sites 저자: Michael Stephenson
Tuning Internet Information Server Performance 저자: Mike Moore
Navigating the Maze of Settings for Web Server Performance Optimization 저자: Todd Wanke
Managing Internet Information Server 4.0 for Performance 저자: Hans Hugli
ADO 및 SQL Server
Top Ten Tips: Accessing SQL Through ADO and ASP 저자: J.D. Meier
Improve the Performance of your MDAC Application 저자: Suresh Kannan
Pooling in the Microsoft Data Access Components 저자: Leland Ahlbeck 및 Don Willits
SQL Server: Performance Benchmarks and Guides
Improving the Performance of Data Access Components with IIS 4.0 저자: Leland Ahlbeck
Microsoft Data Access Components (MDAC) and ActiveX Data Objects (ADO) Performance Tips 저자: Leland Ahlbeck
Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Server Perspective 저자: Damien Lindauer
Microsoft SQL Server 7.0 Practical Performance Tuning and Optimization - The Application Perspective 저자: Damien Lindauer
Accessing Recordsets over the Internet 저자: Dino Esposito
ASP 구성 요소 및 스레딩 모델
ASP Component Guidelines 저자: J.D. Meier
Q243548: INFO: Design Guidelines for VB Components under ASP
Threading Models Explained 저자: Nancy Winnick Cluts
So Happy Together? Using ActiveX components with Active Server Pages 저자: Nancy Winnick Cluts
Developing Active Server Components with ATL 저자: George Reilly
Agility in Server Components 저자: Neil Allain
Building High-Performance Middle-Tier Components with C++ 저자: Jon Flanders
Active Server Pages and COM Apartments 저자: Don Box
House of COM: Active Server Pages 저자: Don Box
House of COM: Contexts 저자: Don Box
House of COM: Performance Trade-offs of the Windows 2000 Component Execution Environment 저자: Don Box
Building COM Components That Take Full Advantage of Visual Basic and Scripting 저자: Ivo Salmre
Component Design Principles for MTS
딕셔너리 구성 요소
Creating a Page Cache Object 저자: Robert Coleridge
Abridging the Dictionary Object: The ASP Team Creates a Lookup-Table Object 저자: Robert Carter
Caprock Dictionary
Site Server Commerce Edition에는 딕셔너리 구성 요소가 들어 있습니다.
세션 상태
Q175167: HOWTO: Persisting Values Without Sessions
Q157906: HOWTO: How To Maintain State Across Pages with VBScript
XML-based Persistence Behaviors Fix Web Farm Headaches 저자: Aaron Skonnard
House of COM: Stateless Programming 저자: Don Box
성능 및 확장성
Blueprint for Building Web Sites Using the Microsoft Windows DNA Platform
Server Performance and Scalability Killers 저자: George Reilly
Microsoft Visual Studio Scalability Center
Fitch & Mather Stocks 2000
Tuning the FMStocks Application
High-Performance Visual Basic Apps 저자: Ken Spencer
Duwamish Books, Phase 4
Top Windows DNA Performance Mistakes and How to Prevent Them 저자: Gary Geiger 및 Jon Pulsipher
Building from Static HTML to High-Performance Web-Farms 저자: Shawn Bice
도구
Microsoft Web Application Stress Tool
I Can't Stress It Enough -- Load Test Your ASP Application 저자: J.D. Meier
Windows DNA Performance Kit
Monitoring Events in Distributed Applications Using Visual Studio Analyzer 저자: Mai-lan Tomsen
문서
Professional Active Server Pages 3.0, Wrox Press. (특히, Chapter 26:Optimizing ASP Performance, 저자: George Reilly 및 Matthew Gibbs 참조)
Microsoft Internet Information Services 5.0 Resource Guide(Windows 2000 Server Resource Kit와 함께 제공됨), Microsoft Press.
Microsoft Internet Information Server Resource Kit (for IIS 4.0), Microsoft Press.
Programming Distributed Applications with COM and Microsoft Visual Basic 6.0 저자: Ted Pattison, Microsoft Press.
Effective COM 저자: Don Box, Keith Brown, Tim Ewald, Chris Sells 및 Addison-Wesley.
Developing Web Usability: The Practice of Simplicity 저자: Jakob Nielsen, New Riders.
ASP 웹 사이트
Microsoft TechNet for IIS
LearnASP.com
4GuysFromRolla.com
15Seconds.com
AspToday.com
Asp101.com
AspLists.com. 여기에는 다음과 같은 특수 메일 목록이 들어 있습니다.
- Fast Code!
- ASP Advanced
- Not NewbieState Management
- Scalability
- Visual Basic Components
- XML
- C++/ATL Component Building
UseIt.com: Web Usability
ASP 스타일
ASP Best Practices 저자: George Reilly
ASP Quick Lessons 저자: Charles Carroll
Planning for ASP 저자: John Meade
ASP Guidelines 저자: J.D. Meier
XML
Inside XML Performance 저자: Chris Lovett
Inside MSXML3 Performance 저자: Chris Lovett
[출처] [본문스크랩] 성능 및 스타일 향상을 위한 25+ ASP 팁|작성자 수유산장
'Computer > ASP' 카테고리의 다른 글
효율적인 페이징 기법 (0) | 2011.11.29 |
---|---|
ASP 에서 UTF-8 처리 (0) | 2011.11.29 |
URLEncode (0) | 2011.11.29 |
ASP 서버 변수 출력 (0) | 2011.11.29 |
펌) 페이징 쿼리문 비교 (0) | 2011.11.29 |