ASP生成静态网页的方法
随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库。
将现有的ASP页直接生成静态页,将会节省很多。
下面的例子是将、index。asp?id=1/index。asp?id=2/index。asp?id=3/这三个动态页面,分别生成ndex1。htm,index2。htm,index3。
htm存在根目录下面:
For i=1 To 3
Html_Temp = Html_Temp&""
Item_Classid = i
FileName = "Index"&Item_Classid&"。
htm"
FilePath = Server。MapPath("/")&""&FileName
Html_Temp = Html_Temp&FilePath&""
Do_Url = "http://"
Do_Url = Do_Url&Request。
ServerVariables("SERVER_NAME")&"/main/index。asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid
strUrl = Do_Url
dim objXmlHttp
set objXml。
CreateObject("Microsoft。XMLHTTP")
objXml
objXml()
Dim binFileData
binFileData = objXmlHttp。
responseBody
Dim objAdoStream
set objAdoStream = Server。CreateObject("ADODB。Stream")
objAdoStream。
Type = 1
objAdoStream。Open()
objAdoStream。Write(binFileData)
objAdoStream。SaveToFile FilePath,2
objAdoStream。
Close()
Next
Html_Temp = Html_Temp&""
%>
非摸板生成静态页
目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动原来的页面就可以轻松完成一个生成html的新闻系统了。
由于代码比较短,这里就不进行注释了
content = re。replace(content,"")
re。global = false
re。
pattern = ""
do
set ms = re。execute(content)
if ms。countaspEnd 1
execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd,aspStart-aspEnd-2),"""",""""""), vbcrlf, """&vbcrlf&""")&""""&vbcrlf
aspEnd=inStr(aspStart,content,"%>") 2
tmp_str = Mid(content,aspStart,aspEnd-aspStart-2)
do
set ms = re1。
execute(tmp_str)
if ms。count"
End Function
function asp2html(filename)
dim code
code = replace( replace( replace( get_exe_code(filename), "hughchiu_rtcode = hughchiu_rtcode&"""""&vbcrlf, "" ), "", "" )
'response。
Write(code)
execute(code)
'response。Write( hughchiu_rtcode )
asp2html = hughchiu_rtcode
end function
%>
使用范例:
set fso=CreateObject("Scripting。
FileSystemObject")
set f=fso。CreateTextFile( server。mappath( "youpage。htm" ), true )
f。WriteLine( asp2html("youpage。
asp") )
f。close
set f = nothing
set fso = nothing
可见,虽然是新方法还是需要fso的支持。