ASP產生靜態Html檔案技術雜談

來源:互聯網
上載者:User
靜態 網頁產生靜態Html檔案有許多好處,比如產生html網頁有利於被收錄,不僅被收錄的快還收錄的全.前台脫離了資料訪問,減輕對訪問的壓力,加快網頁開啟速度.
像www.aspid.cn的主站就採用了TSYS產生html檔案!
所以吟清最近對產生html比較感興趣,看了不少文章,也有一點點收穫.

1,下面這個例子直接利用FSO把html代碼寫入到檔案中然後產生.html格式的檔案<%
filename="test.htm"
ifrequest("body")<>""then
setfso=Server.CreateObject("Scripting.FileSystemObject")
sethtmlwrite=fso.CreateTextFile(server.mappath(""&filename&""))
htmlwrite.write"<html><head><title>"&request.form("title")&"</title></head>"
htmlwrite.write"<body>輸出Title內容:"&request.form("title")&"<br/>輸出Body內容:"&request.form("body")&"</body></html>"
htmlwrite.close
setfout=nothing
setfso=nothing
endif
%>
<formname="form"method="post"action="">
<inputname="title"value="Title"size=26>
<br>
<textareaname="body">Body</textarea>
<br>
<br>
<inputtype="submit"name="Submit"value="產生html">
</form>
2,但是按照上面的方法產生html檔案非常不方便,第二種方法就是利用模板技術,將模板中特殊代碼的值替換為從表單或是欄位中接受過來的值,完成模板功能;將最終替換過的所有模板代碼產生HTML檔案.這種技術採用得比較多,大部分的CMS都是使用這類方法.
template.htm'//模板檔案<html>
<head>
<title>$title$byaspid.cn</title>
</head>
<body>
$body$
</body>
</html>?

TestTemplate.asp'//產生Html<%
Dimfso,htmlwrite
DimstrTitle,strContent,strOut
'//建立檔案系統對象
Setfso=Server.CreateObject("Scripting.FileSystemObject")
'//開啟檔案,讀模數板內容
Sethtmlwrite=fso.OpenTextFile(Server.MapPath("Template.htm"))
strOut=f.ReadAll
htmlwrite.close

strTitle="產生的網頁標題"
strContent="產生的網頁內容"

'//用真實內容替換模板中的標記
strOut=Replace(strOut,"$title$",strTitle)
strOut=Replace(strOut,"$body$",strContent)

'//建立要產生的靜態頁
Sethtmlwrite=fso.CreateTextFile(Server.MapPath("test.htm"),true)

'//寫入網頁內容
htmlwrite.WriteLinestrOut
htmlwrite.close

Response.Write"產生靜態頁成功!"

'//釋放檔案系統對象
sethtmlwrite=Nothing
setfso=Nothing
%>

3,第三種方法就是用XMLHTTP擷取動態網頁產生的HTML內容,再用ADODB.Stream或者Scripting.FileSystemObject儲存成html檔案。這句話是在藍色理想上看到的,對XMLHTTP吟清還不熟悉正在找資料瞭解.找到一段XMLHTTP產生Html的代碼參考一下.
<%

'常用函數
'1、輸入url目標網頁地址,傳回值getHTTPPage是目標網頁的html代碼
functiongetHTTPPage(url)
dimHttp
setHttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate<>4then
exitfunction
endif
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
sethttp=nothing
iferr.number<>0thenerr.Clear
endfunction

'2、轉換亂瑪,直接用xmlhttp調用有中文字元的網頁得到的將是亂瑪,可以通過adodb.stream組件進行轉換
FunctionBytesToBstr(body,Cset)
dimobjstream
setobjstream=Server.CreateObject("adodb.stream")
objstream.Type=1
objstream.Mode=3
objstream.Open
objstream.Writebody
objstream.Position=0
objstream.Type=2
objstream.Charset=Cset
BytesToBstr=objstream.ReadText
objstream.Close
setobjstream=nothing
EndFunction


txtURL=server.MapPath("../index.asp")

sText=getHTTPPage(txtURL)

SetFileObject=Server.CreateObject("Scripting.FileSystemObject")
filename="../index.htm"
SetopenFile=FileObject.OpenTextfile(server.mapPath(filename),2,true)'true為不存在自行建立
openFile.writeline(sText)
SetOpenFile=nothing

%>
<script>
alert("靜態網頁產生完畢");
history.back();
</script>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.