ASP彻底实现伪静态化html
这段时间在网上待的时间较多!为了查关于实现ASP动态内容的静态化处理花了我的多少时间,到处看了下,大多数是转载而来,几乎雷同,主要有以下几种方法:
1 > 用程序写到硬盘.ASP FS对象的文件流处理.每个文章都有实际的路径.如果要发布大量内容,则需要大容量空间,而且不好维护,修改都不方便,好处在于减轻服务器的访问负担,容易被搜索引擎收录,大大减少并防止黑客攻击,稍有规模的网站都全部静态化了,如新浪,搜狐等.
2 > 组件如ISAPI_Rewrite重写.有自己服务器的站长还好办,虚拟主机的朋友就稍麻烦,除非请求服务商安装这个插件,再将程序参数提交服务器实现转化,看上去是静态化了,实际上是用静态路径访问数据库的内容.对于搜索引擎收入有一定作用.而且许多站长正是为此为苦苦寻.
以上两种方法俱体怎么做,大家上网搜索一下就会发现一大把....
3 >第三种比较假就是把show.asp?id=26 转成show.asp?/26.html这样做也许对搜索引擎来
说有点作用,不过防安全注入一点作用也没有.但只要做好防范工作,这种方法还是比较适合大多数虚拟主机的站长们.我这里就重点介绍使用第三种方法来实现静态化处理.
本实例实现效果:faninfo/news.asp?id=201转换成
faninfo/news/?/201.html
一 准备工作
在网站目录新建文件夹news,并新建一个主页文件index.asp,数据库data.mdb(字段id,Title,Content,)及ConnDB.asp
二 代码实现
数据连接文件ConnDB.asp
<%
dim conn
dbpath="data.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
conn.open connstr
If Err Then
err.Clear
Set conn = Nothing
Response.Write "数据库连接出错,请稍候访问。"
Response.End
End If
'新闻阅读模块
Dim News_title,News_content
Sub ReadNews()
set ateobject("dset")
sql1="select id,title,content from article where id="& ID
rs1.open sql1,conn,3,3
News_title=rs1("title")
News_content=rs1("content")
rs1.close
set rs1=Nothing
End Sub
%>
news-list.asp
<ol>
<%
Set rs=server.CreateObject("dset")
sql="select * from Article"
rs.open sql,conn,1,1
do while f
%>
<li><a href="news/?/<%=rs("id")%>.html"><%=left(trim(rs("title")),30)%></a></li> _fcksavedurl=""news/?/<%=rs("id")%>.html"><%=left(trim(rs("title")),30)%></a></li>"
<%
rs.movenext
loop
rs.close
set rs=Nothing
%>
</ol>
好了,现在编写新闻正文阅读页面news/index.asp
index.asp
<%
id=request.QueryString("id")
If id="" Then
Pater=Request.ServerVariables("query_string")
id=Int(replace(replace(Pater,"/",""),".html","")) 'replace替换函数,如将html和/替成空的
End If
Call ReadNews()
%>
<div>
<b><%= News_title%></b><br /> '主题
<%=News_content%> '正文
</div>
这样实现的效果如:www.faninfo/news/?/201.html 我们知道Windows文件夹命名规则
是不允许包含?的所以在这里只起视觉欺骗的作用.
同样我们能否将?通过replace函数转换成这种效果:www.faninfo/news/read/201.html 呢?
这是我目前总结出来的,准备用在我的主页上,演示地址:www.faninfo(未完),当然,我相信会有更好的解决方法,如果有兴趣的朋友请来本站交流.
文章来自:www.admin5/article/20080107/67882.shtml
简单宜用的网站静态化思路及代码分析
静态化是有很大好处的。最值得称道的应该是加快下载速度,更利于搜索引擎的抓取,这两点对一个企业网站来说应该比较重要吧。
一般的静态化是通过fso组件读取网站模板的内容,然后替换其中的特定字符,生成静态页面,这是个不错的想法,如果你要自己写一个网站,建议你用这种办法,因为比较稳定。而且如果想以后更换网站界面也相当容易,只需修改模板而无需更改程序。这个办法很多高手已经说得很明白了,推荐一个:
www.jingzhengli/Blog/zjh/265.html
然而很不幸,很多公司的网站已经做好,而且每一页都是html中夹杂大量asp代码的形式,没有模板,功能也没有模块化,如果想仍用以上方法进行静态化处理,其复杂程度相当于重做一个网站。
提出一个简单宜用的解决办法。不用模板、不用修改程序,非常便捷。利用XMLHTTP对象及其方法。他的原理是将已有的asp网页内容一次性读取出来,然后写到静态页中,实现网站的静态化重构。
现在以生成 的首页为例,介绍一下这种方法,代码如下:
Url="ky-glass/default.asp" ‘定义动态首页
wstr = GetPage(Url) ‘网页制作个人简历模板代码把动态首页的内容全部读取出来
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set CrFi=fs.CreateTextFile(server.MapPath("../")&"\index.htm") ‘创建静态首页index.htm
CrFi.Writeline(wstr) ‘将读取出的内容写入静态页面
set CrFi=nothing ‘关闭两个对象
set fs=nothing
以下两个函数涉及到xmlhttp对象和方法的使用,如果能看懂就看,看不懂直接调用就行。
Function GetPage(url) ‘此过程的功能是实现把asp网页的内容一次性读取出来。
dim Retrieval
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", url, False ', "", ""
.Send
GetPage = BytesToBstr(.ResponseBody)
End With
Set Retrieval = Nothing
End Function
Function BytesToBstr(body)‘字符转换
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = "utf-8" ‘如果是中文页面请用gb2312.,英文页面用utf-8
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
首页的静态化就完成了,生成为 index.htm 这个静态页,其他的页面也可以按照这个思路进行,利用不同的后缀id值,就可以批量生成所有网页。
两点注意:1、如果是批量生成页面要保证网速,否则程序的运行很容易超出服务器的允许
时间。
2、生成英文页面的时候,要保证原页面上没有汉字或其他语言,否则生成出错。
这种静态化相对比较容易,尤其是那些对那些写的很差劲的网站进行静态化处理。我一直用这种方法给企业静态化处理。
有机会我会把这种方法进一步写成类,方便各位网友调用。
下边说说两种骗人的静态化方案,引起各位注意。
1、 框架伪静态,这种是非常简单而且也是非常便于识别的,它的原理比较简单,就是做一个静态的主框架页面,然后把动态的内容链入副框架内,这个单从它的URL就可以看出眉目,如果整个网站的URL都是一样的,那么就一定是框架伪静态的。这种所谓的静态化不仅达不到优化的目的,而且还不如不优化。
2、 利用组件把asp的辍显示为htm,它主要是利用一个组件强制性的把asp文件的后辍显示为htm,比较有名的组件是MOD REWRITE,这种东西只是在形式上让你感觉已经静态化了,其实仍然是执行动态网页。识别这个也比较容易,那就是看看有没有生成静态页就是了。如果没有生成静态页,显然是骗人的,因为只有动态页才是虚拟的,从数据库中调用数据进行显示,而静态页面一定是独立的。当然,利用这种方案可以起到seo优化作用,但是对访问速度来说,是一点提高都没有的,而且还有可能降低访问速度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论