권장 : ASP.NET 2.0 URL 매핑을 잘 활용하십시오 소개 : URL 매핑은 ASP.NET 2.0에 제공되는 새로운 기능입니다. URL 매핑 기술을 사용하면 특정 URL을 다른 URL에 매핑하는 데 도움이됩니다. 이해하기 위해 홈페이지에 액세스하기 위해 사이트에 HomePage.aspx라는 페이지가 있다고 가정 해 봅시다.
9.3.5 데이터 캐시우선, 데이터 캐시와 레코드 세트 캐시가 모두 성능을 향상시키는 데 사용되지만 두 가지는 관련이 없다는 점에 유의해야합니다. 데이터 캐시는 새로운 데이터를 재생하는 대신 캐시에서 데이터를 사용할 수있는 임시 데이터 저장 영역입니다. 이는 자주 변경되지 않았지만 여러 번 액세스하는 데이터에만 적용됩니다.
ASP에서 데이터를 캐시하는 가장 쉬운 방법 중 하나는 응용 프로그램 및 세션 전체 변수를 사용하는 것입니다. 예를 들어, 책 유형을 선택 해야하는 웹 페이지가 있다고 가정합니다. 정상적인 상황에서는 다음 기능이있는 포함 파일을 포함시킬 수 있습니다.
<%
기능 BookTypes ()
희미한 rsbooktypes
희미한 strquote
strquote = chr (34)
set rsbooktypes = server.createobject (adodb.recordset)
'책 유형을 얻으십시오
rsbooktypes.open usp_booktypes, strconn
response.write <select name = & strquote & lstbooktype & strquote &>
rsbooktypes.eof는 아닙니다
Response.write & <옵션> & rsbooktypes (type) & </옵션>
rsbooktypes.movenext
향하게 하다
response.write & </select>
rsbooktypes.close
RSBookTypes = Nothing을 설정하십시오
엔드 기능
%>
이것은 단순히 선택 목록을 작성하는 동안 책의 유형을 얻기 위해 저장된 절차를 호출하는 것입니다. 위 코드의 단점은 함수를 호출 할 때마다 데이터베이스에 액세스해야한다는 것입니다. 따라서이 함수를 다시 수정하십시오.
<%
기능 BookTypes ()
희미한 rsbooktypes
희미한 strquote
희미한 strlist
'목록이 캐시에 있는지 확인하십시오
strlist = 응용 프로그램 (BookTypes)
strlist = 그런 다음
'캐시되지 않으므로 목록을 작성하고 캐시
strquote = chr (34)
set rsbooktypes = server.createobject (adodb.recordset)
'책 유형을 얻으십시오
rsbooktypes.open usp_booktypes, strconn
strlist = <select name = & strquote & lstbooktype & strquote &>
rsbooktypes.eof는 아닙니다
strlist = strlist & <옵션> & rsbooktypes (유형) & </옵션>
rsbooktypes.movenext
향하게 하다
strlist = strlist & </select>
rsbooktypes.close
RSBookTypes = Nothing을 설정하십시오
'목록을 확인하십시오
응용 프로그램 (BookTypes) = strlist
끝 If
BookTypes = strlist
엔드 기능
%>
이 코드는 레코드 세트를 열뿐만 아니라 Application Variable BookType의 값이 비어 있는지 확인합니다. 비어 있지 않으면 변수의 내용이 사용됩니다. 비어 있으면 레코드 세트가 이전과 같이 열립니다. 분명히, 첫 번째 사람 이이 루틴을 실행하면 데이터가 캐시되므로 자주 변경되지 않은 데이터에만 유용합니다.
사용자를 기준으로 데이터를 캐시하려면 세션 범위에서 변수를 사용할 수 있지만 세션에는 만료 날짜가 있습니다. 만료 후, 세션 계층 변수는 세션과 함께 취소되며 코드는 실행을 종료 할 수 있습니다.
웹 애플리케이션 응력 (WAS) 도구를 사용하여 표 9-4의 분석 결과를 얻었습니다.
표 9-4는 도구를 사용하여 얻은 분석 결과입니다
방법
페이지 클릭
캐시가 없습니다
190
캐시가 있습니다
11000
성능이 향상 된 것은 분명합니다. 그러나 위의 방법을 사용하여 모든 것을 캐시하지 마십시오. 결국,이 접근법은 디스플레이를 위해 형식화 된 데이터에만 적용됩니다. 또한 웹 서버가 특정 사람 만 제공하는 경우 일반적인 웹 서버 사용법이 아닙니다. 사용하면 단일 서버에서 여러 사용자를 시뮬레이션 할 수 있으므로 응용 프로그램을보다 현실적으로 테스트 할 수 있습니다.
웹 애플리케이션 응력 도구는 특정 수의 사용자를 시뮬레이션하여 웹 페이지의 공차를 테스트 할 수 있습니다. 이 도구에는 사용하기가 매우 쉬운 간단한 그래픽 인터페이스가 있습니다. 자세한 내용은 http://homer.rte.microsoft.com/에서 얻거나 도구를 다운로드 할 수 있습니다.
캐시 개체
형식화되지 않은 데이터를 캐시하려면 어떻게해야합니까? 다른 장소에서 다른 방식으로 사용할 수 있습니까? 물론 응용 프로그램 또는 세션 변수로이를 수행 할 수도 있습니다. 책의 제목을 고려하십시오. 여러 페이지 에서이 제목을 사용하거나 한 테이블에 모든 제목을 표시하거나 사용자가 선택할 수있는 목록 상자에 표시 할 수도 있습니다.
객체는 응용 프로그램 또는 세션 변수에서 캐시 할 수 있지만 다음에주의를 기울여야 할 두 가지 주요 문제가 있습니다.
· 응용 프로그램 변수에 저장된 개체는 자유 스레드를 지원해야하므로 무료 스레드 개체 또는 듀얼 스레드 개체 여야합니다. 이는 VB에 의해 생성 된 구성 요소가 애플리케이션 변수에서 캐시 할 수 없음을 의미합니다.
· 세션 상태에 단위 스레드 개체를 저장한다는 것은 객체를 생성 한 스레드가 액세스 할 수있는 유일한 스레드임을 의미합니다. 따라서 IIS는이 객체에 액세스하려는 모든 페이지가 원래 스레드가 페이지를 제공 할 때까지 기다려야하기 때문에 스레드 관리를 더 잘 완료 할 수 없습니다. 이렇게하면 응용 프로그램을 연장 할 가능성이 사라집니다.
스레딩 문제에 대한 논의는 15 장을 참조하십시오.
기본적으로 ADO는 주로 일부 OLE DB 제공 업체가 스레드 안전하지 않기 때문에 유닛 스레드 오브젝트로로드됩니다. ADO 설치 디렉토리에는 ADO를 2 스레드 모델로 변환하는 레지스트리 파일이있어 ADO 객체가 응용 프로그램 및 세션 객체에 안전하게 저장 될 수 있습니다.
다양한 유형의 객체를 사용하여 모든 문제가 해결되고 상당한 속도 증가를 달성 할 수 있다고 생각할 수도 있지만 반드시 그런 것은 아닙니다. 많은 사람들은 데이터베이스에 연결하는 것이 비교적 비싼 작업이기 때문에 연결 객체는 다시 연결할 때 많은 시간을 절약 할 수 있음을 깨달았습니다. 이것은 사실이지만 연결 객체를 캐싱한다는 것은 연결이 닫히지 않으므로 연결 캐시 풀이 비효율적입니다. 캐시 풀에 연결하는 한 가지 아이디어는 실제로 서버에서 사용되는 리소스를 줄이고 ASP 상태의 객체를 캐싱하는 것은 분명히 리소스 사용을 줄일 수 없습니다. 실제로 각 객체 캐시가 서버의 리소스를 차지하기 때문에 증가하여 바쁜 사이트의 웹 서버의 효율성을 크게 줄일 수 있습니다.
따라서 연결 객체를 저장해서는 안되지만 레코드 세트 객체, 특히 연결이 끊긴 레코드 세트는 어떻습니까? ADO가 단위 스레드에서 듀얼 스레드로 변경되었다고 가정하면, 자신이하고있는 일을 정확히 아는 한 이것을하지 않을 이유가 없습니다. 이것이 ASP 페이지의 성능을 자동으로 향상시킬 것이라고 생각하지 마십시오. 각 캐시 된 레코드 세트는 메모리 및 ASP 관리 측면에서 서버의 리소스를 차지하므로 큰 레코드 세트를 캐시하지 마십시오.
공유 : ASP 읽기 및 쓰기 등록 테이블 예 : 다음은 참조 된 내용입니다. <%dim readcomputerName set readcompetername = createobject (wscript.shell) dim computername, reg