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