ASP生成静态页面的方法.docx

上传人:b****3 文档编号:5471896 上传时间:2023-05-08 格式:DOCX 页数:20 大小:25.23KB
下载 相关 举报
ASP生成静态页面的方法.docx_第1页
第1页 / 共20页
ASP生成静态页面的方法.docx_第2页
第2页 / 共20页
ASP生成静态页面的方法.docx_第3页
第3页 / 共20页
ASP生成静态页面的方法.docx_第4页
第4页 / 共20页
ASP生成静态页面的方法.docx_第5页
第5页 / 共20页
ASP生成静态页面的方法.docx_第6页
第6页 / 共20页
ASP生成静态页面的方法.docx_第7页
第7页 / 共20页
ASP生成静态页面的方法.docx_第8页
第8页 / 共20页
ASP生成静态页面的方法.docx_第9页
第9页 / 共20页
ASP生成静态页面的方法.docx_第10页
第10页 / 共20页
ASP生成静态页面的方法.docx_第11页
第11页 / 共20页
ASP生成静态页面的方法.docx_第12页
第12页 / 共20页
ASP生成静态页面的方法.docx_第13页
第13页 / 共20页
ASP生成静态页面的方法.docx_第14页
第14页 / 共20页
ASP生成静态页面的方法.docx_第15页
第15页 / 共20页
ASP生成静态页面的方法.docx_第16页
第16页 / 共20页
ASP生成静态页面的方法.docx_第17页
第17页 / 共20页
ASP生成静态页面的方法.docx_第18页
第18页 / 共20页
ASP生成静态页面的方法.docx_第19页
第19页 / 共20页
ASP生成静态页面的方法.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ASP生成静态页面的方法.docx

《ASP生成静态页面的方法.docx》由会员分享,可在线阅读,更多相关《ASP生成静态页面的方法.docx(20页珍藏版)》请在冰点文库上搜索。

ASP生成静态页面的方法.docx

ASP生成静态页面的方法

ASP生成静态页面

1.什么是动态网页和静态网页

动态网页:

一般指的是采用ASP,ASP.NET,JSP,PHP,ColdFusion,CGI等程序动态生成的页面,该网页中的大部分数据容来自与相连的数据库。

这个页面在网络空间中并不存在,动态网页往往容易给人留下深刻的印象。

此外,动态网页还具有容易维护、更新的优点。

  首先网页获得用户的指令,然后网页拿着指令到数据库中找和指令对应的数据,然后传递给服务器,通过服务器的编译把动态页面编译成标准的HTML代码,传递给用户浏览器,这样用户就看到了网页。

问题出来了,每次访问网页都要经过这么一个过程,这一过程至少需要几秒钟的时间,访问的人数一多,页面的加载速度就会变慢,对服务器来说也是一种负担;从用户角度来说,网页加载的慢,所以大型都是静态网页呈现。

绝大多数的搜索引擎都已支持动态页面的抓取,这就是我们现在这些搜索引擎进行搜索时,结果中出现动态的原因,但抓取的数量比静态页面要差的很多倍。

  静态网页:

静态网页就简单了,静态网页是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来。

由此可见,动态网页在访问速度上并不占优势。

但是静态网页也有自己的缺陷,由于占用空间比较大,需要大量的服务器,花费上要高于动态网页。

  伪静态:

论坛和留言系统程序由于评论的人较多,更新速度较快,用纯静态可以说是不起实际,但是用纯静态搜索引擎非常不友好,这时候就出现了一种新的技术,伪静态。

伪静态的缺点是页面访问速度较慢,cpu占用资源较大,如果是ISS数是1000的,当有300人同时在线的时候就会出现错误。

但是伪静态对收录同样能起到非常好的作用。

2.为什么要生成静态页面

在三年前,有百分之八十的要求做成动态的。

也就是从那个时候也就是ASP的发展高峰期。

一些静态网页也要求做成动态。

但是这二年来,要求做成静态的。

也就是网页要求静态化。

  为什么会有这样的变化?

到底意味着什么?

  目前网页HTML静态化是利用其它的动态技术生成HTML静态页面,还不是静态。

因为的确是这样的,生成HTML静态网页有一定的好处。

  一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;

  二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;

  三、减轻服务器负担,浏览网页无需调用系统数据库;

  四、更安全,HTML页面不会受Asp相关漏洞的影响;

  观看一下大一点的基本全是静态页面,而且可以减少攻击,防sql注入。

数据库出错时,不影响正常访问。

  生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。

  说法一:

  1、省掉了服务器处理时间和调用数据库的时间,访问速度比一般动态快10-20倍;

  2、不用调用数据库,服务器端的CPU调用大大减少,增加服务器的性能;

  3、生成静态路径利用搜索引擎的抓取和收录;

  4、在排名中静态页面的排名权重要高于动态路径的页面。

  说法二:

  1、安全,静态页面从理论上讲是没有攻击漏洞的;

  2、没有数据库访问或减少服务器对数据响应的负荷,速度快;

  3、化化引擎,易于搜索引擎收录,搜索引擎比较喜欢收录静态页面;

  4、降低服务器的承受能力,因为其不需要解析就可以返回客户端,因此减少了服务器的工作量,同时也减少了数据库的成本;

  5、有意义的文件名,提高了可用性(对中文似乎就没这个优势了吧)。

  说法三:

  提问:

ASP生成静态HTML后更有利于搜索引擎收录吗?

为什么?

  答:

是的,静态HTML更有利于搜索引擎收录。

  因为静态网页和动态网页的区别在于动态网页可以给于浏览者权限,而搜索引擎抓取的时候是以游客身份进入的,所以不容易被抓取和收录,而静态网页由于不存在页面权限问题,所以更容易被收录,相对来说如果你的动态页面没有加任何权限的话也同样容易被收录!

例如不生成静态页面的博客ASPPHP.netCGI的论坛,只要没有访问权限限制都会被收录!

从以上的观点可以看出,生成静态页面的好处。

现在知名、主流的大站基本上都静下来了。

3.ASP生成静态页面的方法

随着访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。

互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库。

将现有的ASP页直接生成静态页,将会节省很多。

  下面的例子是将、index.asp?

id=1/index.asp?

id=2/index.asp?

id=3/这三个动态页面,分别生成index1.htm,index2.htm,index3.htm存在根目录下面:

  代码如下

  <%

  dimstrUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp

  Html_Temp="

    "

      Fori=1To3

      Html_Temp=Html_Temp&"

  • "

      Item_Classid=i

      FileName="Index"&Item_Classid&".htm"

      FilePath=Server.MapPath("/")&"\"&FileName

      Html_Temp=Html_Temp&FilePath&"

  • "

      Do_Url=你的地址

      Do_Url=Do_Url&Request.ServerVariables("SERVER_NAME")&"/main/index.asp"

      Do_Url=Do_Url&"?

    Item_Classid="&Item_Classid

      strUrl=Do_Url

      dimobjXmlHttp

      setobjXmlHttp=Server.CreateObject("Microsoft.XMLHTTP")

      objXmlHttp.open"GET",strUrl,false

      objXmlHttp.send()

      DimbinFileData

      binFileData=objXmlHttp.responseBody

      DimobjAdoStream

      setobjAdoStream=Server.CreateObject("ADODB.Stream")

      objAdoStream.Type=1

      objAdoStream.Open()

      objAdoStream.Write(binFileData)

      objAdoStream.SaveToFileFilePath,2

      objAdoStream.Close()

      Next

      Html_Temp=Html_Temp&"

      "

        %>

        <%

        Response.Write("成功生成文件:

      ")

        Response.Write("
      ")

        Response.WriteHtml_Temp

        %>

       

      ASP生成静态页面的方法

      ASP2HTMLWITHTEMPLET

      我希望大家看到该标题就能让想象到它的功能:

      1,WITHTEMPLET意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对ASP采用模板应熟悉下。

      (当然,不看也没有问题,本教程同样会提及精华部分的:

      )具体参考:

      .cnbruce./blog/showlog.asp?

      cat_id=26&log_id=474

      2,ASP2HTML。

      不要我再说ASP转变成HTML的好处了吧,呵呵,其中最值得知道的就是:

      静态HTML页和动态页对服务器的要求承受能力小得多,同样,静态HTML搜索几率远比动态页面的多得多。

      那么,我现在需要处理的技术问题就是:

      1,如何实现模板技术?

      (先参看下上篇文章吧)

      2,如何实现2HTML技术?

      3,如何让模板技术与2HTML技术结合?

      一、先进行技术原理分析

      1,模板技术参看.cnbruce./blog/showlog.asp?

      cat_id=26&log_id=474

      2,2HTML技术又该如何实现呢?

      如何使得ASP页面转变为HTML?

      一般都会想到FSO组件,因为该组件能新建任何文件格式。

      那么其整个运行过程是怎么样的呢?

      a,提供信息输入页面进行信息收集;

      b,接受信息值先保存数据库,再FSO生成文件;

      c,技术性完成任务,显示刚被创建的HTML文件的路径地址。

      该技术的实现过程中有如下几个难点:

      i,FSO生成的文件是直接放在一个大文件夹下,还是单独放在某个每日更新的子文件夹中?

      可能表述不准确,这样理解吧:

      相信通过FSO生成的文件随着时间的推移,文件会越来越多,管理也会越来越乱……通常你可能看到一些地址诸如.xxx./a/2004-5-20/1.html可以分析得出应该是建立了当前日期的文件夹。

      这样,一天就是一个文件夹的页面容,查看管理也就显得比较合理。

      ii,我在试图通过以上方法建立文件夹的时候,又发现了第二个问题。

      第一次通过FSO建立以当前日期命名的文件夹,没有问题。

      当我有新的文件需要生成时,因为是同一个程序,所以,其又将会执行建立同样的文件夹。

      此时,FSO组件会发现该路径已存在……卡壳-_-!

      继续处理,在首行添加代码:

      引用:

      OnErrorResumeNext

      嘿嘿,达到自欺欺人、掩耳盗铃的效果。

      当然规矩的用法是判断文件夹的有无

      引用:

      <%

      Setfso=Server.CreateObject("Scripting.FileSystemObject")

      if(fso.FolderExists(Server.MapPath(folder)))then

      '判断如果存在就不做处理

      else

      '判断如果不存在则建立新文件夹

      fso.CreateFolder(Server.MapPath(folder))

      endif

      %>

      iii,文件夹是建立了,文件该如何建立呢?

      主要也就是文件名的生成。

      当然这个就需要自己来写个函数,功能就是如何生成文件名:

      引用:

      <%

      functionmakefilename(fname)

      fname=fname'前fname为变量,后fname为函数参数引用

      fname=replace(fname,"-","")

      fname=replace(fname,"","")

      fname=replace(fname,":

      ","")

      fname=replace(fname,"PM","")

      fname=replace(fname,"AM","")

      fname=replace(fname,"上午","")

      fname=replace(fname,"下午","")

      makefilename=fname&".html"

      endfunction

      %>

      引用函数则:

      <%fname=makefilename(now())%>

      其实嘛,就是以年月日时分秒命名的文件。

      iv,最后,生成的文件该如何查看到?

      当然需要把生成文件的路径保存的数据库中,并且添加到相对应的记录集中了。

      当然,这在下面的数据库设计时会提及到。

      3,模板技术和2HTML技术的结合:

      将模板中特殊代码的值替换为从表单接受过来的值,完成模板功能;将最终替换过的所有模板代码生成HTML文件。

      需要注意的是:

      替换应能将输入数据的格式或者支持UBB的代码彻底改变。

      二,再进行数据库设计

      目前数据库的设计需要两个表:

      一个是存放模板数据的;一个是存放信息容的。

      1,建立新数据库asp2html.mdb

      2,设计新数据库表c_moban

      字段m_id(自动编号,主关键字);字段m_html(备注类型)。

      并将下列完整的代码拷贝至m_html字段

      引用:

      Cnbruce.Com|ASP2HTMLTEST

      $cntop{LogContent}lt;/td>

      $cnleft{LogContent}lt;/td>

      $cnright{LogContent}lt;/td>

      3,设计新数据库表c_news

      字段c_id:

      自动编号,主关键字

      字段c_title:

      文本类型,保存文章标题

      字段c_content:

      备注类型,保存文章容

      字段c_filepath:

      文本类型,保持生成文件的路径地址

      字段c_time:

      日期/时间类型,默认值:

      Now()

      三,页面需求设计

      1,首先建立一个存放HTML页的文件夹

      在文件同一目录下,建立文件夹newsfile,夹子部主要存放生成的HTML页面,当然部还会采用程序方式建立以日期命名的子文件夹,以方便浏览以及管理。

      2,功能函数页面lib.asp

      引用:

      <%

      '生成文件名的函数

      functionmakefilename(fname)

      fname=fname

      fname=replace(fname,"-","")

      fname=replace(fname,"","")

      fname=replace(fname,":

      ","")

      fname=replace(fname,"PM","")

      fname=replace(fname,"AM","")

      fname=replace(fname,"上午","")

      fname=replace(fname,"下午","")

      makefilename=fname&".shtml"

      endfunction

      '保持数据格式不变的函数

      functionHTMLEncode(fString)

      fString=replace(fString,">",">")

      fString=replace(fString,"<","<")

      fString=Replace(fString,CHR(32)," ")

      fString=Replace(fString,CHR(13),"")

      fString=Replace(fString,CHR(10)&CHR(10),"
      ")

      fString=Replace(fString,CHR(10),"
      ")

      HTMLEncode=fString

      endfunction

      %>

      3,数据库连接页面conn.asp

      完成数据库的字符串连接方法

      <%

      setconn=Server.CreateObject("ADODB.Connection")

      connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("asp2html.mdb")

      conn.Openconnstr

      %>

      4,信息输入页面add.html

      其实很简单:

      )就是表单嘛。

      注意action是跳转到addit.asp

      引用:

      Title:


      Content:



      5,处理数据功能显示页面addit.asp

      首先是处理接受过来的数据,并将值写入数据库;接着将模板代码进行引用,并将其中特殊代码转换为接受值,最终通过FSO生成HTML页面。

      其中需要注意的还有,生成文件的路径地址保存至数据库表。

      引用:

      <%'容错处理

      OnErrorResumeNext

      %>

      --#includefile="conn.asp"-->

      --#includefile="lib.asp"-->

      <%'接受传递值

      c_title=request.form("c_title")

      c_content=request.form("c_content")

      %>

      <%'生成HTML文件名,建立文件夹,指定文件路径

      fname=makefilename(now())'makefilename为自定义函数

      folder="newsfile/"&date()&"/"

      filepath=folder&fname

      %>

      <%'将接受值及路径保持至数据库表

      sql="Select*fromc_news"

      Setrs=Server.CreateObject("ADODB.Recordset")

      rs.Opensql,conn,3,2

      rs.addnew

      rs("c_title")=c_title

      rs("c_content")=c_content

      rs("c_filepath")=filepath

      rs.update

      rs.close

      Setrs=Nothing

      %>

      <%'打开模板代码,并将其中特殊代码转变为接受值

      sql1="selectm_id,m_htmlfromc_mobanwherem_id=1"

      setrs1=Server.CreateObject("adodb.recordset")

      rs1.opensql1,conn,1,1

      mb_code=rs1("m_html")

      rs1.close

      setrs1=nothing

      conn.close

      setconn=nothing

      c_title=htmlencode(c_title)

      c_content=htmlencode(c_content)

      mb_code=replace(mb_code,"$cntop{LogContent}quot;,now())

      mb_code=replace(mb_code,"$cnleft{LogContent}quot;,c_title)

      mb_code=replace(mb_code,"$cnright{LogContent}quot;,c_content)

      %>

      <%'生成HTML页面

      Setfso=Server.CreateObject("Scripting.FileSystemObject")

      fso.CreateFolder(Server.MapPath(folder))

      Setfout=fso.CreateTextFile(Server.MapPath(filepath))

      fout.WriteLinemb_code

      fout.close

      %>

      文章添加成功,浏览

      6,显示数据库表记录,并做指向HTML页的:

      showit.asp

      引用:

      --#includefile="conn.asp"-->

      --#includefile="lib.asp"-->

      <%

      Setrs=Server.CreateObject("ADODB.Recordset")

      sql="Select*fromc_newsorderbyc_iddesc"

      rs.Opensql,conn,1,1

      %>

      <%

      ifrs.EOFandrs.BOFthen

      response.write("暂时还没有文章,添加")

      else

      DoUntilrs.EOF

      %>

      <%=rs("c_time")%>

      target="a_blank"><%=rs("c_title")%>

      [

      c_id=<%=rs("c_id")%>>Dell][

      c_id=<%=rs("c_id")%>>Edit][Add]

      <%=htmlencode(rs("c_content"))%>


      <%

      rs.MoveNext

      Loop

      endif

      %>

      <%

      rs.close

      Setrs=Nothing

      conn.close

      setconn=Nothing

      %>

      7,修改数据容页change.asp

      修改数据容,同时也需要修改更新对应的HTML页面。

      修改其实就是重新生成文件,且文件名和之前一样,类似文件的覆盖。

      引用:

      --#includefile="conn.asp"-->

      --#includefile="lib.asp"-->

      <%id=request.qu

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2