首  页
站长信箱
868搜索
网站登录
免费计数器
免费留言本
IP来源查询
网站技术教程
网站流量统计
文章探索:   分类:    关键字:  
    什么?你还在找兼职?上兼客吧,现在兼客吧平台太火了,知名度和诚信度也很高,注册就送0.5元现金,满3元就能提现,马上到账了!最低3元就能提现,大家可以注册下试试!注册地址:http://www.jiankeba.com/computeryc1688
  + 栏目导航
  + 相关文章
ASP导出Excel数据的四种方法
ASP漏洞及安全建议来源
XMLHTTP.readyState的五种状态
xmlhttp status 各类值说明
Asp中ByVal传值与ByRef传值的问..
ASP技巧:判断远程图片是否存在
asp中有关字符编码转换的几个函..
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范..
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方..
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、..
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的..
几行Asp代码实现防止表单重复提..
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Ta..
用ASP调用SQL Server的视图和存..
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较

技术教程 -> ASP教程 ->  
绝妙的asp生成静态页面html函数
来源:转载   人气:5070   录入时间:2007/8/1


    随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库。将现有的ASP页直接生成静态页,将会节省很多。
   
     下面的例子是将、index.asp?id=1/index.asp?id=2/index.asp?id=3/这三个动态页面,分别生成ndex1.htm,index2.htm,index3.htm存在根目录下面
   
   
   <%
   dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
   Html_Temp="<UL>"
   For i=1 To 3
   Html_Temp = Html_Temp&"<LI>"
   Item_Classid = i
   FileName = "Index"&Item_Classid&".htm"
   FilePath = Server.MapPath("/")&"\"&FileName
   Html_Temp = Html_Temp&FilePath&"</LI>"
   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 objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
   objXmlHttp.open "GET",strUrl,false
   objXmlHttp.send()
   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&"<UL>"
   %>
   <%
   Response.Write ( "成功生成文件:" )
   Response.Write ( "<BR>" )
   Response.Write Html_Temp
   %>
   --------------
   
   另一种方法
   
   ---------
   
   ASP生成静态页
   
   
   
   
   
   经过我在网上的搜索,似乎要避免fso生成静态页的可能性不大,但是,我顺便搜索了些生成静态页的教程
   希望大家用的着
   
   
   
   ASP生成静态网页的方法
   
     随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库。将现有的ASP页直接生成静态页,将会节省很多。
   
     下面的例子是将、index.asp?id=1/index.asp?id=2/index.asp?id=3/这三个动态页面,分别生成ndex1.htm,index2.htm,index3.htm存在根目录下面:
   
   <%
   dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
   Html_Temp="<UL>"
   For i=1 To 3
   Html_Temp = Html_Temp&"<LI>"
   Item_Classid = i
   FileName = "Index"&Item_Classid&".htm"
   FilePath = Server.MapPath("/")&"\"&FileName
   Html_Temp = Html_Temp&FilePath&"</LI>"
   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 objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
   objXmlHttp.open "GET",strUrl,false
   objXmlHttp.send()
   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&"<UL>"
   %>
   <%
   Response.Write ( "成功生成文件:" )
   Response.Write ( "<BR>" )
   Response.Write Html_Temp
   %>
   
   
   非摸板生成静态页
   
   目前已经有很多生成html的新闻系统,但是都是用的模板,本函数实现把asp页面产生的html代码保存成为一个html文件,这样就没有必要改动原来的页面就可以轻松完成一个生成html的新闻系统了。^_^
   由于代码比较短,这里就不进行注释了
   <%
   '当目标页面的包含文件即#i nclude的页面里边存在response.End()的时候本程序有问题
   '注意:本文件一定要放在filename指向的文件的同一目录下
   dim hughchiu_rtcode
   Function get_exe_code(filename)
   dim execode
   dim tmp_str
   Dim re,re1,content,fso,f,aspStart,aspEnd
   dim ms,m
   execode = ""
   set fso=CreateObject("Scripting.FileSystemObject")
   set f=fso.OpenTextFile(server.mappath(filename))
   content=f.ReadAll
   f.close
   set f=nothing
   set fso=nothing
   
   set re = new regexp
   re.ignorecase = true
   re.global = true
   re.pattern = "\<\%\@[^\%]+\%\>"
   content = re.replace(content,"")
   
   re.global = false
   re.pattern = "\<\!\-\-\s*\#i nclude\s*file\s*=\s*\""([^\""]+)\""\s*\-\-\>"
   do
   set ms = re.execute(content)
   if ms.count<>0 then
   set m = ms(0)
   tmp_str = get_exe_code(m.submatches(0))
   content = re.replace(content, tmp_str)
   else
   exit do
   end if
   loop
   set m = nothing
   set ms = nothing
   
   re.pattern="^\s*="
   aspEnd=1
   aspStart=inStr(aspEnd,content,"<%")+2
   
   set re1=new RegExp
   re1.ignorecase = true
   re1.global = false
   re1.pattern = "response\.Write(.+)"
   
   do while aspStart>aspEnd+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<>0 then
   set m = ms(0)
   tmp_str = re1.replace(tmp_str, " hughchiu_rtcode = hughchiu_rtcode&"&m.submatches(0))
   else
   exit do
   end if
   loop
   
    set m = nothing
    set ms = nothing
   
    execode = execode& re.replace(tmp_str,"hughchiu_rtcode = hughchiu_rtcode&")
   
    aspStart=inStr(aspEnd,content,"<%")+2
   loop
   
   set re1 = nothing
   set re=nothing
   
   execode = execode&vbcrlf&" hughchiu_rtcode = hughchiu_rtcode&"""&replace( replace(Mid(content,aspEnd), """", """"""), vbcrlf, """&vbcrlf&""" )&""""&vbcrlf
   get_exe_code = "<%"&execode&"%\>"
   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
   
   



| 网站转让 | 站长信箱 | 网站登录 | 技术教程 | 免费计数器 | 免费留言本 | 868流量统计 | 好帮手网站营销 |
地址:广东省阳江市  联系电话:13725641179 杨先生
Copyright 2004-2020 868资源网- 版权所有    粤ICP备05007330号