권장 : ASP 코드 및 페이지의 분리 정보 ASP 프로그램 TML 코드의 오해로 인한 유지 보수 어려움을 피하기 위해이 기사는 템플릿을 사용하여 프로그램과 페이지를 더 쉽게 할 수 있도록하는 방법을 소개합니다. ASP를 사용하여 사이트를 만들 때 ASP 파일이 종종 나타나고 프로그램 코드 및 HTM이 나타납니다.
HTML 웹 페이지 생성과 같은 정적 HTML 파일을 생성하기 위해 동적 페이지를 변환하는 데는 많은 이점이 있습니다. 검색 엔진 (특히 동적 매개 변수를 허용하는 페이지의 경우)에 포함됩니다. 프론트 데스크에 액세스 할 때 데이터 액세스와 분리되어 데이터베이스 액세스 압력을 완화하고 웹 페이지 오프닝 속도를 높입니다.
물론 모든 것은 장점과 단점이 있습니다. HTML 페이지를 생성하면 이러한 정적 파일을 저장할 수있는 많은 디스크 공간이 보이지 않습니다. 편집 프로세스 중에 데이터베이스를 읽고 쓰는 것 외에도 서버 디스크를 읽고 작성해야합니다. 페이지 스타일로의 변경 사항은 모든 HTML 파일 등을 재생해야합니다.
예를 들어, 많은 검색 엔진에서 웹 사이트 페이지 주소 목록을 제출할 수 있습니다. 동적 파일을 포함시키는 것은 더 이상 문제가되지 않습니다 (예 : Google siteemap). 우리는 스스로 이익과 손실을 측정하고 파악해야하지만, 무엇이든 관계없이 여전히 운영 방법을 알아야합니다. 여기서는 다른 사람들의 기사를 인용하여 귀하의 참조에 대한 몇 가지 일반적인 세대 아이디어를 설명합니다.
1. 다음 예제는 FSO를 직접 사용하여 html 코드를 파일에 쓰고 .html 파일 형식을 생성합니다. 이것은 가장 원시적입니다. 장점은 간단하고 단점은 페이지 수정이 불편하다는 것입니다. 내가 일반적으로 사용하는 장소는 전체 사이트 매개 변수 파일을 생성하는 데 사용하는 것입니다. (일반적으로 제목, 이름 등과 같은 웹 사이트는 데이터베이스에 저장됩니다. 데이터베이스에 자주 액세스하지 않도록 이러한 변수 호출을 저장하기 위해 config.asp를 생성합니다).
| 다음은 인용 된 내용입니다. <% filename = test.htm 요청 (Body))>라면 set fso = server.createobject (scripting.filesystemobject) set htmlwrite = fso.createtextfile (server.mappath (& filename &)) htmlwrite.write < html> < head> < title> & request.form (title) & </title> </head> htmlwrite.write < 바디> 출력 제목 내용 : & request.form (title) & < br/> 출력 본문 내용 : & request.form (body) & </body> </html> htmlwrite.close fout = 아무것도 설정하지 않습니다 FSO = 아무것도 설정하지 않습니다 끝 If %> form 형식 이름 = 양식 메소드 = 사후 조치 => < 입력 이름 = 제목 값 = 제목 크기 = 26> <BR> < Textarea Name = Body> Body/Textarea> <BR> <BR> < 입력 유형 = 제출 이름 = 제출 값 = html 생성> </양식> |
2. 그러나 위의 방법에 따라 HTML 파일을 생성하는 것은 매우 불편합니다. 두 번째 방법은 템플릿 기술을 사용하여 템플릿의 특수 코드 값을 양식 또는 데이터베이스 필드에서 수용된 값으로 바꾸고 템플릿 기능을 작성하며 최종적으로 대체 된 모든 템플릿 코드로 HTML 파일을 생성하는 것입니다. 이 기술은 더 자주 사용되며 대부분의 CMS는이 방법을 사용합니다.
| 다음은 인용 된 내용입니다. template.htm '// 템플릿 파일 html> < 머리> Cuoxin.com의 title> $ title $ $. </title> </헤드> body> $ body $ </바디> </html> testtemplate.asp '// html을 생성합니다 <% dim fso, htmlwrite 희미한 스트리트 타이틀, 스트론트, 스트라우트 '// 파일 시스템 객체를 만듭니다 set fso = server.createobject (scripting.filesystemobject) '// 웹 템플릿 파일을 열고 템플릿 내용을 읽으십시오. set htmlwrite = fso.opentextfile (server.mappath (template.htm)) Strout = F. Readall htmlwrite.close strtitle = 생성 된 웹 페이지 제목입니다 strcontent = 생성 된 웹 페이지 컨텐츠 '// 템플릿의 태그를 실제 콘텐츠로 바꾸십시오. Strout = Replace (Strout, $ title $, strtitle) Strout = replace (Strout, $ body $, strcontent) '// 생성 할 정적 페이지를 만듭니다 set htmlwrite = fso.createtextfile (server.mappath (test.htm), true) '// 웹 페이지에 컨텐츠를 작성합니다 htmlwrite.writeline Strout htmlwrite.close 응답. 정적 페이지가 성공적으로 생성되었습니다! '// 파일 시스템 객체를 해제합니다 htmlwrite = nothing을 설정하십시오 FSO = 아무것도 설정하지 않습니다 %> |
3. 세 번째 방법은 XMLHTTP를 사용하여 동적 페이지에서 생성 된 HTML 컨텐츠를 얻은 다음 adodb.stream 또는 scripting.filesystemobject를 사용하여 HTML 파일에 저장하는 것입니다. XMLHTTP 용 HTML을 생성 할 코드를 찾으십시오.
| 다음은 인용 된 내용입니다. <% '일반적인 기능 '1. URL 대상 웹 페이지 주소를 입력하고 반환 값 GethttpPage는 대상 웹 페이지의 HTML 코드입니다. 기능 gethttppage (URL) 희미한 HTTP set http = server.createobject (msxml2.xmlhttp) http.open get, url, false http.send () http.readystate <> 4 인 경우 종료 기능 끝 If gethttppage = bytestobstr (http.responsebody, gb2312) HTTP = 아무것도 설정하지 않습니다 err.number <> 0 인 경우 err.clear 엔드 기능 '2. Lanma를 변환하고 xmlhttp로 한자로 웹 페이지를 직접 호출하면 Adodb.stream 구성 요소를 통해 변환 할 수있는 Lanma를 얻게됩니다. 기능 bytestobstr (body, cset) 희미한 objstream set objstream = server.createobject (adodb.stream) objstream.type = 1 objstream.mode = 3 objstream.open objstream.write body objstream.position = 0 objstream.type = 2 objstream.charset = cset bytestobstr = objstream.readtext objstream.close objstream = 아무것도 설정하지 않습니다 엔드 기능 txturl = server.mappath (../ index.asp) stext = gethttppage (txturl) set fileobject = server.createobject (scripting.filesystemobject) filename = ../index.htm SET OPENFILE = FILEOBJECT.OPENTEXTFILE (Server.MAPPATH (FILENAME), 2, TRUE) 'True가 존재하지 않으면 자체적으로 생성됩니다. OpenFile.WriteLine (Stext) OpenFile = 아무것도 설정하지 않습니다 %> script> 경고 (정적 웹 페이지 생성이 완료됨); history.back (); </스크립트> |
요약하면,이 세 가지 방법은 HTML 파일을 생성하는 가장 일반적으로 사용되는 방법입니다. 페이지 변경이 매우 편리하기 때문에 세 번째 방법을 사용하는 것이 좋습니다. 동적 페이지가 변경 되더라도 좋습니다. xmlhttp를 사용하여 다시 읽고 생성하십시오.
공유 : 웹 애플리케이션을위한 캐시 호환성 설계 프록시를 통과 한 후 클라이언트와 서비스 사이에 중간 계층이 추가되므로 서버는 클라이언트의 IP를 직접 얻을 수 없으며 서버 측 응용 프로그램은 전달 주소를 통해 클라이언트에게 직접 반환 할 수 없습니다. 그러나 전달 요청의 HTTP 헤더 정보에서 HTTP_X가 추가됩니다.