ASP页面静态化批量生成代码分享(多种方法)
2023-06-13 09:14:28 时间
1、ASP两种简单的生成静态首页的方法
为什么要生成静态首页?
1、如果你首页读取的数据库次数比较多,速度很慢,而且占用很多服务器资源。使用静态页面访问速度当然快多了
2、搜索引擎容易搜索到
3、如果程序出问题,也能保证首页能访问。
4、其他的太多,自己想:)
应用方式:
如果你的首页是index.asp,你可以生成index.htm(默认访问顺序必须是index.htm,index.asp)。这样访问者第一次访问到你的网站的时候打开的是index.htm。你可以把网站首页的链接做成index.asp,这样从网站任何一个页面点击首页的链接出现的就是index.asp,这样保证的信息更新的及时性(毕竟index.htm需要每次手动更新)。
方法一:
直接将首页文件包含在表单文本框中,将首页代码最为数据提交,然后生成静态页面。
代码如下:
复制代码代码如下:
为什么要生成静态首页?
1、如果你首页读取的数据库次数比较多,速度很慢,而且占用很多服务器资源。使用静态页面访问速度当然快多了
2、搜索引擎容易搜索到
3、如果程序出问题,也能保证首页能访问。
4、其他的太多,自己想:)
应用方式:
如果你的首页是index.asp,你可以生成index.htm(默认访问顺序必须是index.htm,index.asp)。这样访问者第一次访问到你的网站的时候打开的是index.htm。你可以把网站首页的链接做成index.asp,这样从网站任何一个页面点击首页的链接出现的就是index.asp,这样保证的信息更新的及时性(毕竟index.htm需要每次手动更新)。
方法一:
直接将首页文件包含在表单文本框中,将首页代码最为数据提交,然后生成静态页面。
代码如下:
<%
"------------------------------------------------------------
"使用表单提交生成静态首页的代码
"确保你的空间支持FSO,且首页代码内容较少
"------------------------------------------------------------
dimcontent
content=Trim(Request.Form("content"))
ifcontent<>""then
callmakeindex()
endif
submakeindex()
SetFso=Server.CreateObject("Scripting.FileSystemObject")
Filen=Server.MapPath("index.htm")
SetSite_Config=FSO.CreateTextFile(Filen,true,False)
Site_Config.Writecontent
Site_Config.Close
SetFso=Nothing
Response.Write("<script>alert("已经成功生成首页!")</script>")
endsub
%>
<formname="form1"method="post"action="">
<textareaname="content">
<!--#includefile="index.asp"-->
</textarea>
<br>
<inputtype="submit"name="Submit"value="提交">
</form>
缺点:
1、如果首页中包括<@..>标记,会提示出错。
2、如果首页代码较长,用表单无法提交过去(表单数据长度有一定的限制)。
解决方案:
1、去掉index.asp中的<@>标记
2、使用eWebEditor,提交支持大数据(能自动分割)
优点:
可以在生成时对内容实时修改。
方法二:
直接使用XMLHTTP获取index.asp的代码
<%
"----------------------------------------------------------
"使用XMLHTTP生成静态首页的代码
"Curl为你的首页地址,确保你的空间支持FSO
"-----------------------------------------------------------
dimread,Curl,content
Curl="http://www.xx0123.com/index.asp"
read=getHTTPPage(Curl)
ifread<>""then
content=read
callmakeindex()
endif
submakeindex()
SetFso=Server.CreateObject("Scripting.FileSystemObject")
Filen=Server.MapPath("index.htm")
SetSite_Config=FSO.CreateTextFile(Filen,true,False)
Site_Config.Writecontent
Site_Config.Close
SetFso=Nothing
Response.Write("<script>alert("已经成功生成首页!")</script>")
endsub
FunctiongetHTTPPage(url)
dimhttp
sethttp=Server.createobject("Microsoft.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate<>4then
exitfunction
endif
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
sethttp=nothing
iferr.number<>0thenerr.Clear
Endfunction
FunctionBytesToBstr(body,Cset)
dimobjstream
setobjstream=Server.CreateObject("adodb.stream")
objstream.Type=1
objstream.Mode=3
objstream.Open
objstream.Writebody
objstream.Position=0
objstream.Type=2
objstream.Charset=Cset
BytesToBstr=objstream.ReadText
objstream.Close
setobjstream=nothing
EndFunction
%>
2、模板分离批量生成
模板文件中要替换的内容均以{...}括起来
为力求简洁,去掉了错误处理代码(replace中要来替换的字符串参数不能为null值,当然fso也应该做错误检查)。
<%
"---------------------------------------------------------------------------------------------------------------------
"出自:kevinfunghttp://www.yaotong.cn
"作者:kevinfung落伍者ID:kevin2008,转载时请保持原样
"时间:2006/07/05落伍者论坛首发
"----------------------------------------------------------------------------------------------------------------------
Dimstart"该变量为指针将要指向的记录集位置,通过参数动态获得
DimTemplate"模板文件将以字符串读入该变量
Dimcontent"替换后的字符串变量
DimobjConn"连接对象
DimConnStr"连接字符串
Dimsql"查询语句
Dimcnt:cnt=1"本轮循环计数器初始化
start=request("start")"获取本轮指针的开始位置
IfIsNumeric(start)Thenstart=CLng(start)Elsestart=1
Ifstart=0Thenstart=1"如果start
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("DataBase.mdb")
sql="select*fromtable_name"
SetobjConn=Server.CreateObject("ADODB.Connection")
objConn.OpenConnStr
setrs=Server.CreateObject("ADODB.Recordset")
rs.opensql,objConn,1,1"打开数据集
rs.AbsolutePosition=start"最关键的一步,将指针指向start,start通过参数动态获得
Template=getTemplate(Server.MapPath("template.html"))"template.html为模板文件,通过函数getTemplate读入到字符串,模板文件中要替换的内容均以{...}括起来
WhileNotrs.eofAndcnt<=500"500是设定一次请求生成页面的循环次数,根据实际情况修改,如果太高了,记录集很多的时候会出现超时错误
content=Replace(Template,"{filed_name_1}",rs("filed_name_1"))"用字段值替换模板内容
content=Replace(content,"{filed_name_2}",rs("filed_name_2"))
......
content=Replace(content,"{filed_name_n}",rs("filed_name_n"))
genHtmlcontent,Server.MapPath("htmfiles/"&rs("id")&".html")"将替换之后的Template字符串生成HTML文档,htmfiles为存储静态文件的目录,请手动建立
cnt=cnt+1"计数器加1
start=start+1"指针变量递增
rs.movenext
wend
IfNotrs.eofThen"通过刷新的方式进行下一轮请求,并将指针变量start传递到下一轮
response.write"<metahttp-equiv="refresh"content="0;URL=?start="&start&"">"
Else
response.write"生成HTML文件完毕!"
Endif
rs.Close()
Setrs=Nothing
objConn.Close()
SetobjConn=Nothing
FunctiongetTemplate(template)"读取模板的函数,返回字符串,template为文件名
Dimfso,f
setfso=CreateObject("Scripting.FileSystemObject")
setf=fso.OpenTextFile(template)
getTemplate=f.ReadAll
f.close
setf=nothing
setfso=Nothing
EndFunction
SubgenHtml(content,filename)"将替换后的内容写入HTML文档,content为替换后的字符串,filename为生成的文件名
Dimfso,f
Setfso=Server.CreateObject("Scripting.FileSystemObject")
Setf=fso.CreateTextFile(filename,true)"如果文件名重复将覆盖旧文件
f.Writecontent
f.Close
Setf=Nothing
setfso=Nothing
EndSub
%>
相关文章
- asp.net dropdownlist的值怎么设置_redis skiplist
- 深入探索ASP与MySQL的连接之旅(asp测试连接mysql)
- 灵活操作:ASP连接MySQL(asp连接mysql)
- ASP网页MySQL注入及防御研究(asp页面mysql注入)
- 使用ASP链接MySQL实现快速查表(asp链接mysql查表)
- 教程使用ASP连接MySQL,视频教程掌握一步搞定(asp连接mysql视频)
- 教你如何用ASP连接MySQL(asp连接mysql教程)
- ASP连接MySQL失败排查与解决方案(asp连接mysql失败)
- 库ASP实现MySQL数据库的轻松访问(asp读取mysql数据)
- ASP驱动MySQL简单快捷高效(asp调用mysql)
- ASP如何使用代码登录MySQL数据库(asp登陆mysql代码)
- 基于ASP技术连接MySQL数据库(asp支持mysql)
- 实现有效管理ASP与MySQL搭配 实现高效管理(asp搭配mysql如何)
- ASP结合MySQL,发挥出卓越的性能(asp使用mysql性能)
- ASP驱动的Oracle数据库连接源码解析(asp连oracle源码)
- ASP调用Oracle数据庫,实现完美编程体验(asp访问oracle)
- ASP程序使用Oracle数据库实现智能化管理(asp 操作oracle)
- 用ASP设计购物推车
- ASP指南
- 保证asp叶面一定不会出现乱码UTF8
- ASP编程入门进阶(十一):Chat聊天程序
- ASP网页模板的应用:让程序和界面分离,让ASP脚本更清晰,更换界面更容易
- 一段ASP伪静态代码
- 比较详细的Asp伪静态化方法及Asp静态化探讨
- asp.net下linkbutton的前后台使用方法
- asp.net实现静态页面累加访问量的三种方式
- asp定时生成静态HTML的代码
- 使用ASP.NET模板生成HTML静态页面的五种方案
- asp经典入门教程在ASP中使用SQL语句
- ASP.NET设计网络硬盘之上传文件实现代码
- 在asp.net网页中显示数学符号的代码
- ASP.NE网站发布注意事项简析
- asp.net图片超过指定大小后等比例压缩图片的方法
- asp.netupdatepanel导致JS不能加载,而无法使用的解决方法