中成网站建设
    成都做网站,就选中成网站建设!专业四川网站建设,成都网站建设服务提供商
            企业宣传网站建设、电子商务网站建设、OA办公系统。联系电话:028-66165255
    资讯列表  
 用Adodb.Stream的SaveToFile方…
 绝妙的asp生成静态页面html函数…
 关于页面缓存清除的方法小结_a…
 asp无限级分类加js收缩伸展功能…
 flash读取xml中文本格式的小问…
 区分 JavaScript、Jscript、VB…
 asp给access表增加列
 Asp时间相加问题使用DateAdd函…
 asp操作xml文档,自动生成换行…
 几款Access 在线管理工具(ASP…
 关于Html页面中大量连续英文字…
 ASP中正则表达式删除HTML代码,…
 ASP在access库里创建表,及判断…
 用javascript判断radio单选框是…
 WEB应用的缓存兼容性设计
    资讯详情  
绝妙的asp生成静态页面html函数
发布时间:2010-04-08                  来源:成都网站建设--中成网建         【加入收藏】

随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用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

 

 
上一篇:什么是动态网页和静态网页?为什么要生成静态页面? ASP生成静态页面的方法
下一篇:用Adodb.Stream的SaveToFile方法怎么指定文件的编码为utf-8
【打印】    【关闭】    【字体变小】    【字体变大】

友情链接

首页  |  建站学院  |  网站建设  |  成功案例  |  业务体系  |  软件定制  |  解决方案  |  联系我们  |  免责声明
中成网建公司地址:四川省成都市双楠双安东巷1号18-3-5 电话:028-6616 5255 版权所有 @ 中成网建
成都网站建设网址:www.csccd.net www.csccd.cn 邮箱:web#csccd.net
信息产业部备案号:蜀ICP备08106559号