최근 친구의 웹사이트에서 정적 웹사이트를 생성해야 하는데 때로는 정적 웹사이트를 생성할 때 문제가 발생할 수 있습니다. 우리는 몇 가지 방법을 컴파일했으며 웹사이트 요구 사항에 따라 선택할 수 있습니다. 1. ASP에서 정적 홈 페이지를 생성하는 두 가지 간단한 방법
정적 홈 페이지를 생성하는 이유는 무엇입니까?
1. 홈 페이지에서 데이터베이스를 많이 읽는 경우 속도가 매우 느리고 서버 리소스를 많이 차지합니다. 물론 정적 페이지 접근 속도를 사용하는 것이 훨씬 빠릅니다.
2. 검색엔진에서 쉽게 찾을 수 있습니다.
3. 프로그램에 문제가 있는 경우 홈페이지에 접속할 수 있습니다.
4. 그 밖에도 너무 많으니 스스로 생각해 보세요 :)
신청 방법:
홈페이지가 index.asp인 경우 index.htm을 생성할 수 있습니다(기본 액세스 순서는 index.htm, index.asp여야 함). 이런 방식으로 방문자가 처음으로 웹 사이트를 방문하면 index.htm이 열립니다. 웹사이트 홈페이지의 링크를 index.asp로 만들 수 있으므로 웹사이트의 어느 페이지에서나 홈페이지 링크를 클릭하면 index.asp가 나타나게 됩니다. 이렇게 하면 정보 업데이트가 적시에 이루어질 수 있습니다. , index.htm은 매번 수동으로 업데이트해야 합니다).
방법 1:
양식 텍스트 상자에 홈페이지 파일을 직접 포함시키고, 홈페이지 코드를 데이터로 제출한 후 정적 페이지를 생성합니다.
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
<%
'------------------------------------------------ - ---------
'양식 제출을 사용하여 정적 홈 페이지용 코드 생성
'귀하의 공간이 FSO를 지원하고 홈페이지에 코드 내용이 적은지 확인하세요.
'------------------------------------------------ - ---------
희미한 내용
content=Trim(Request.Form(content))
내용<>이면
makeindex() 호출
종료하면
하위 makeindex()
Fso = Server.CreateObject(Scripting.FileSystemObject) 설정
Filen=Server.MapPath(index.htm)
Site_Config=FSO.CreateTextFile(Filen,true, False) 설정
Site_Config.Write 콘텐츠
Site_Config.Close
Fso = 없음 설정
Response.Write(<script>alert('홈페이지가 성공적으로 생성되었습니다!')</script>)
서브 끝
%>
<양식 이름=form1 방법=포스트 작업=>
<텍스트 영역 이름=콘텐츠>
<!-- #i 파일=index.asp 포함 -->
</textarea>
<br>
<입력 유형=제출 이름=제출 값=제출>
</form>
결점:
1. 홈 페이지에 <@ ..> 태그가 포함되어 있으면 오류 메시지가 표시됩니다.
2. 홈페이지 코드가 너무 길면 양식으로 제출할 수 없습니다. (양식 데이터 길이에 일정한 제한이 있습니다.)
해결책:
1. index.asp에서 <@ > 태그를 제거합니다.
2. eWebEditor를 활용해 빅데이터 제출 및 지원 (자동 분할 가능)
이점:
콘텐츠는 생성되는 즉시 실시간으로 수정될 수 있습니다.
방법 2:
XMLHTTP를 직접 사용하여 index.asp의 코드를 얻습니다.
다음과 같이 코드 코드를 복사합니다.
<%
'------------------------------------------------ - ---------
'XMLHTTP를 사용하여 정적 홈 페이지 코드 생성
'Curl은 귀하의 홈페이지 주소입니다. 귀하의 공간이 FSO를 지원하는지 확인하세요.
'------------------------------------------------ - ---------
희미한 읽기,컬,컨텐츠
컬=http://www.xx0123.com/index.asp
읽기=getHTTPage(컬)
<> 읽으면
내용=읽음
makeindex() 호출
종료하면
하위 makeindex()
Fso = Server.CreateObject(Scripting.FileSystemObject) 설정
Filen=Server.MapPath(index.htm)
Site_Config=FSO.CreateTextFile(Filen,true, False) 설정
Site_Config.Write 콘텐츠
Site_Config.Close
Fso = 없음 설정
Response.Write(<script>alert('홈페이지가 성공적으로 생성되었습니다!')</script>)
서브 끝
함수 getHTTPPage(url)
희미한 http
http=Server.createobject(Microsoft.XMLHTTP)를 설정합니다.
Http.open GET,URL,false
Http.send()
Http.readystate<>4이면
종료 기능
종료하면
getHTTPPage=bytesToBSTR(Http.responseBody,GB2312)
http=아무것도 설정하지 않음
err.number<>0이면 err.Clear
기능 종료
함수 BytesToBstr(body,Cset)
희미한 객체 스트림
objstream = Server.CreateObject(adodb.stream) 설정
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write 본문
objstream.위치 = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 아무것도 설정하지 않음
기능 종료
%>
2. 템플릿 분리 및 일괄 생성
템플릿 파일에서 교체할 내용은 {...}로 묶입니다.
단순화를 위해 오류 처리 코드가 제거되었습니다(replace에서 대체될 문자열 매개변수는 null 값이 될 수 없으며 물론 fso도 오류 검사를 수행해야 합니다).
다음과 같이 코드 코드를 복사합니다.
<%
'------------------------------------------------ - ------------------------------------------------- - -----------------
' 보낸 사람: 케빈 펑 http://www.yaotong.cn
' 저작자 : kevin fung Laggard ID : kevin2008, 재인쇄시에는 그대로 유지해주세요
' 시간: 2006/07/05 Laggard Forum 첫 번째 릴리스
'------------------------------------------------ - ------------------------------------------------- - ------------------
Dim start '이 변수는 포인터가 가리키는 레코드 세트 위치이며 매개변수를 통해 동적으로 획득됩니다.
Dim Template '템플릿 파일은 이 변수를 문자열로 읽어 들입니다.
희미한 콘텐츠 '교체된 문자열 변수
Dim objConn '연결 개체
Dim ConnStr '연결 문자열
Dim SQL '쿼리 문
Dim cnt:cnt = 1 '이 사이클의 루프 카운터를 초기화합니다.
start = request(start) '현재 라운드 포인터의 시작 위치를 가져옵니다.
IsNumeric(start)이면 start = CLng(start) 그렇지 않으면 start=1
start=0이면 start = 1 '시작하면
ConnStr = 공급자 = Microsoft.Jet.OLEDB.4.0;데이터 원본 = & Server.MapPath(DataBase.mdb)
sql = table_name에서 * 선택
objConn = Server.CreateObject(ADODB.Connection) 설정
objConn.Open ConnStr
rs = Server.CreateObject(ADODB.Recordset) 설정
rs.open sql,objConn,1,1 '데이터 세트 열기
rs.AbsolutePosition = start '가장 중요한 단계는 포인터가 시작을 가리키는 것입니다. 이는 매개변수를 통해 동적으로 획득됩니다.
Template = getTemplate(Server.MapPath(template.html))' template.html은 템플릿 파일이며, getTemplate 함수를 통해 문자열을 읽어온다. 템플릿 파일에서 교체할 내용은 {...}로 묶인다.
Not rs.eof And cnt<= 500 '500은 페이지 생성 요청에 대한 주기 수를 설정하는 것입니다. 실제 상황에 맞게 수정하십시오. 너무 높으면 시간 초과 오류가 발생합니다. 기록 세트.
content = 바꾸기(Template,{filed_name_1},rs(filed_name_1)) '템플릿 내용을 필드 값으로 바꿉니다.
콘텐츠 = 바꾸기(콘텐츠,{filed_name_2},rs(filed_name_2))
...
콘텐츠 = 바꾸기(콘텐츠,{filed_name_n},rs(filed_name_n))
genHtml content,Server.MapPath(htmfiles/&rs(id)&.html) '템플릿 문자열을 대체하여 HTML 문서를 생성합니다. htmfiles는 정적 파일이 저장되는 디렉터리입니다.
cnt = cnt + 1 '카운터 더하기 1
start = start + 1 '포인터 변수 증가
rs.movenext
향하게 하다
If Not rs.eof Then '새로 고침을 통해 다음 요청 라운드를 만들고 포인터 변수 시작을 다음 라운드로 전달합니다.
response.write <meta http-equiv='refresh' content='0;URL=?start=&start&'>
또 다른
response.write HTML 파일 생성이 완료되었습니다!
다음과 같은 경우 종료
RS.닫기()
설정자=아무것도 없음
objConn.Close()
objConn = 없음 설정
함수 getTemplate(template)' 함수는 템플릿을 읽고 문자열을 반환하며 템플릿은 파일 이름입니다.
희미한 fso,f
fso=CreateObject(Scripting.FileSystemObject) 설정
f = fso.OpenTextFile(템플릿) 설정
getTemplate=f.ReadAll
f.닫기
f=아무것도 설정하지 않음
fso=아무것도 설정하지 않음
기능 종료
Sub genHtml(content,filename)'은 대체된 콘텐츠를 HTML 문서에 기록하고, content는 대체된 문자열이고, filename은 생성된 파일 이름입니다.
희미한 fso,f
fso = Server.CreateObject(Scripting.FileSystemObject) 설정
Set f = fso.CreateTextFile(filename,true)'파일 이름이 반복되면 이전 파일을 덮어씁니다.
f.콘텐츠 작성
f.닫기
f = 없음으로 설정
fso=아무것도 설정하지 않음
서브 끝
%>