권장 : 저장된 절차를 사용하여 데이터 페이징 ASP를 구현하십시오 1. 테이블 만들기 tiku_koushiif가 존재합니다 (dbo.sysobjects에서 * select id = object_id (n '[dbo].
ASP (Active Server Page)는 Microsoft에서 시작한 PWS (Personal Web Server) 및 IIS (Internet Information Server) 플랫폼을 기반으로 한 동적 웹 페이지 개발 기술로, 이제는 더욱 성숙하고 완벽 해지고 있습니다. 여기에는 코드 최적화에 대한 간단한 토론 만 있습니다.
1. vbscript 변수를 선언합니다
ASP에서 vbscript에는 강력한 지원이 제공되며 VBScript 함수 및 메소드를 완벽하게 통합하여 ASP의 기존 기능을 확장하는 데 큰 편의를 제공합니다. ASP에서 가변 유형의 개념이 흐려 졌기 때문에 많은 프로그래머는 ASP와 VBScript 간의 상호 작용 중에 VBScript 변수를 선언하지 않아 서버의 구문 분석 부담을 증가시켜 서버의 응답 요청 속도에 영향을 미칩니다.
이를 고려할 때 사용자는 VB와 마찬가지로 VBScript에서 변수 선언을 수행하도록 강요 할 수 있습니다. 구현 방법은 ASP 프로그램 라인의 시작 부분에 <% 옵션 명시 적%>를 배치하는 것입니다.
2. URL 주소를 인코딩합니다
ASP를 사용하여 매개 변수와 점프가있는 URL 주소를 동적으로 생성 할 때 IE에서 구문 분석하는 것이 정상이지만 NetScrape를 탐색 할 때 다음과 같이 오류가 있습니다.
HTTP 오류 400
400 나쁜 요청
기형 구문으로 인해 서버에서 요청을 이해할 수 없습니다.
클라이언트는 수정없이 요청을 반복해서는 안됩니다.
솔루션은 생성 된 URL 매개 변수를 인코딩하는 URL에 ASP 내장 서버 객체의 URLENCODE 메소드를 사용하는 것입니다. 예제는 다음과 같습니다.
<%
url = xur.asp
var1 = username = & server.urlencode (xur)
var2 = & company = & server.urlencode (xurstudio)
var3 = & phone = & server.urlencode (021-53854336-186)
Response.Redirect URL &? & var1 & var2 & var3
%>
3. 개체를 지우십시오
객체를 사용한 후 먼저 가까운 방법을 사용하여 객체가 차지하는 시스템 리소스를 자유롭게합니다. 그런 다음 객체 값을 아무것도하지 않도록 설정하여 메모리를 점유 할 객체를 확보하십시오. 당시에는 명확한 개체가없는 페이지에 100 개가 넘는 레코드 세트를 만들어 IIS를 추락했습니다. 다음 코드는 데이터베이스 컨텐츠를 사용하여 드롭 다운 목록을 만듭니다. 코드 예제는 다음과 같습니다.
<% mydsn = dsn = xur; uid = xur; pwd = xur
mysql = select * au_id <100 인 저자에서
set conntemp = server.createobject (adodb.connection)
Conntemp. Mydsn을 열었습니다
rstemp = conntemp.execute (mysql) set
rstemp.eof라면
응답. 쓰기 데이터베이스가 비어 있습니다
Response.write MySQL
conntemp.close
Conntemp = 아무것도 설정하지 않습니다
응답. 엔드
%>를 종료하십시오
< %는 rstemp.eof %>까지 수행합니다
<%
rstemp.movenext
고리
rstemp.close
rstemp = 아무것도 설정하지 않습니다
conntemp.close
Conntemp = 아무것도 설정하지 않습니다
%>
4. 문자열을 사용하여 SQL 쿼리를 만듭니다
문자열을 사용하여 쿼리를 설정한다고해서 서버의 구문 분석 속도가 빨라지지는 않습니다. 반대로, 서버의 구문 분석 시간도 증가합니다. 그러나 여전히 간단한 쿼리 명령문 대신 문자열을 사용하여 쿼리를 사용하는 것이 좋습니다. 이것의 장점은 프로그램의 문제를 빠르게 발견하여 프로그램을 촉진하고 효율적으로 생성 할 수 있다는 것입니다. 예는 다음과 같습니다.
<%mysql = select *
mysql = mysql & publishers
mysql = mysql & where state = 'ny'
Response.write MySQL
rstemp = conntemp.execute (mysql) set
rstemp.close
rstemp = 아무것도 설정하지 않습니다
%>
5. 사용 케이스. 조건을 선택하십시오
조건부 선택을 할 때는 사례 진술을 사용하고 IF 문을 사용하지 마십시오. 사례 문을 사용하면 프로그램을 유동성으로 만들고 IF 문보다 더 빨리 실행할 수 있습니다. 예는 다음과 같습니다.
<%
i = 1 ~ 1000의 경우
n = i
응답. addsuffix (n) & <br>
다음
%>
<%
함수 AddSuffix (num)
Numpart = 오른쪽 (Num, 1)
케이스 Numpart를 선택하십시오
사례 1
악기 (Num, 11)라면
num = num & th
또 다른
num = num & st
끝 If
사례 2
악기 (Num, 12)라면
num = num & th
또 다른
num = num & nd
끝 If
사례 3
악기 (Num, 13)라면
num = num & th
또 다른
num = num & rd
끝 If
사례 4
num = num & th
다른 경우
num = num & th
종료 선택
AddSuffix = num
엔드 기능
%>
6. adovbs.inc 파일에 정의 된 상수를 사용하여 레코드 세트를 엽니 다.
레코드 세트를 열 때 레코드 세트가 열리는 커서 유형 및 잠금 유형을 정의 할 수 있습니다.
이러한 유형을 정의하기 위해 Adovbs.inc 파일에 정의 된 상수가 있습니다. adovbs.inc 파일은/inetpub/iissamples/iisamples 디렉토리에 저장됩니다. 다음은 일반적으로 사용되는 몇 가지 커서 유형과 잠금 유형입니다.
커서 유형 :
AbonseFowardonly 커서는 앞으로 나아갈 수 있습니다. AdopenKeyset 커서는 앞뒤로 이동할 수 있습니다. 사용자가 레코드를 추가하면 새 레코드가 레코드 세트에 나타나지 않습니다. Abonsidynamic Cursor는 역동적이고 무작위입니다. 채택 기록 레코드 세트는 다른 사용자에 의해 발생하는 레코드 수정을 반영하지 않습니다.
잠금 유형 :
AdlockReadoney는 레코드 세트에서 레코드를 수정할 수 없습니다. adlockpessimistic 레코드를 편집 할 때 그것을 잠그십시오. Adlockoptimstic 잠금 레코드 세트 업데이트 메소드는 Adlockbatchopopeimstic 레코드를 배치로만 업데이트 할 수있는 경우에만 업데이트됩니다.
<!-#포함 virtual =/adovbs.inc->
<%
ConnectMe = dsn = xur; uid = xur; pwd = xur
sqltemp = select * publishers from where name = 'xur'
set rstemp = server.createobject (adodb.recordset)
rstemp.open sqltemp, connectme, 채택, adlockoptimstic
Response.write rstemp.recordCount & Records in <br> & sqltemp
rstemp.close
rstemp = 아무것도 설정하지 않습니다
%>
7. Global.asa 파일의 객체 정의를 피하십시오
Global.asa 파일의 내용은 사이트의 모든 파일에서 참조 할 수 있으므로 의심 할 여지없이 Global.asa 파일의 객체를 정의하면 많은 복제를 저장할 수 있습니다.
예를 들어, Global.asa의 application_onstart 함수에서 다음과 같은 정의가 이루어집니다.
<%sub application_onstart
응용 프로그램 설정 (theconn) = server.createobject (adodb.connection)
종료 하위 %>;
이를 통해 사이트의 모든 코드에서 유사한 참조를 할 수 있습니다.
<%
mysql = select * publishers where state = 'xur'
set rstemp = application (theconn) .Execute (mysql)
%>
마찬가지로, 레코드 세트 객체는 세션 _onstart 함수에서 생성 할 수 있습니다.
<%sect session_onstart
세션 설정 (rstemp) = server.createObject (adodb.recordset)
종료 하위 %>
그런 다음 사이트에서 다음과 같은 인용문이 있습니다.
<%
mysql = select * publishers where state = 'xur'
세션 설정 (rstemp) = conntemp.execute (mysql)
%>
그러나 이렇게하면 부정적인 영향도 큰 영향을 미칩니다. 애플리케이션 및 세션 변수는 웹 사이트를 닫을 때 점유 리소스 만 릴리스하므로 세션 매개 변수는 많은 불필요한 메모리를 낭비하며 이때 응용 프로그램 변수는 서버 성능의 병목 현상이됩니다.
해결책:
객체를 정의하기 위해 ASP 페이지를 만들고이 객체를 호출 해야하는 페이지 에이 ASP 페이지를 소개하십시오. 정의 된 객체의 ASP 페이지 이름이 정의되었다고 가정하면 다음 문을 해당 ASP 페이지에 추가하여 페이지를 소개 할 수 있습니다.
<!-#포함 virtual =/define.asp->
페이지를 소개 할 때 ASP 파일에 <%@language = vbscript%> 문을 포함시키지 않는 것이 가장 좋습니다. ASP 파일에는 @에 의해 정의 된 언어를 구문 분석하는 스크립트가 하나만있을 수 있습니다.
8. 안전 보호
ASP는 우수한 코드 보호 메커니즘을 제공하며 모든 ASP 코드는 서버 측에서 실행되며 클라이언트 코드 실행 결과 만 리턴합니다. 그럼에도 불구하고 IIS의 기존 버전에서는 파일 이름 :: $ data 다음에 ASP의 소스 코드를 볼 수 있으며, 이는 이미 웹 서버 보안 범위에 속하며이 기사의 범위 내에 있지 않습니다. 다음은 두 가지 간단한 안전 예방 조치입니다.
INC ASP가 확장자로 파일을 도입하는 것이 좋습니다. 여기에 ASP를 확장자로 사용하여 여기에 파일을 소개하는 것이 좋습니다. 이러한 코드가 보안 메커니즘이 열악한 웹 서버에서 실행되면 주소 표시 줄을 입력하여 가져온 파일의 내용을 탐색 할 수 있습니다 (Inc는 확장자). 웹 서버에서 특정 유형 (예 : INC)을 해결하는 동적 연결 라이브러리가 정의되지 않으면 파일이 소스 코드에 표시되기 때문입니다.
악의적 인 사람이 데이터베이스 경로를 얻을 때 데이터베이스 파일을 웹 사이트 구조 내에 넣지 말고 데이터베이스를 쉽게 얻은 다음 데이터베이스 내용을 임의로 변경할 수 있습니다. 더 나은 접근 방식은 데이터베이스에 대한 DSN (날짜 소스 이름)을 설정하고 데이터베이스에 액세스 할 때 직접 DSN에 액세스하는 것입니다.
공유 : ASP 팁 : 요청 수집 효율성을 향상시킵니다 요청 컬렉션을 사용하여 ASP 컬렉션에 액세스하여 값을 추출하는 효율성을 향상시키는 것은 시간이 많이 걸리고 리소스 소비 프로세스입니다. 이 작업에는 관련 세트에 대한 일련의 검색이 포함되어 있으므로 로컬 변수에 액세스하는 것보다 훨씬 느립니다. 따라서 페이지에있을 계획이라면