绝妙的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="
    "
    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 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&"
      "
      %>
      <%
      Response.Write ( "成功生成文件:" )
      Response.Write ( "
      " )
      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="
        "
        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 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&"
          "
          %>
          <%
          Response.Write ( "成功生成文件:" )
          Response.Write ( "
          " )
          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生成静态Html文件
下一篇: ASP生成HTML(ASP+模板转成静态HTML)
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2568
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 300 字 | UBB代码 开启 | [img]标签 关闭