`

ASP专栏——ASP生成静态文件

阅读更多

        对于Web开发人员来说,生成静态文件这个概念并不陌生。

        对于Web开发来说,如何能避免客户端访问时不停的查询数据库?现在比较常用的有两种方法,一种是使用缓存技术,将查询出来的结果缓存至缓存框架中,以后当有用户访问时,直接通过缓存框架读取数据,这样就避免了大量用户同时访问数据库。另一种方法就是使用静态生成技术,静态生成技术常见的做法有两种,一种是通过模板文件(模板文件中保存好前期定义好的变量,后台通过数据加载对相应变量进行替换,然后再对替换完的数据进行生成静态文件);一种是直接访问Web地址,通过Http协议读取网页内容,然后再将内容生成相应的静态文件。

        对于像Java、.NET这些语言来说,外界都会给出相应的缓存框架,Java的缓存框架就更多了。但对Asp这样的低端语言来说呢,只能通过用静态生成技术来实现减少用户大量的数据访问,本文就结合自己准备要做的项目来谈谈Asp如何实现静态生成。

        Asp静态生成技术的原理上面我已经讲过了,两种做法最终都会通过读取HTML文件(或动态或模板文件)来生成相应的静态页面。

方法一:通过模板文件来实现静态化:

        如题所示,通过模板文件实现静态化,当然首先要创建相应的模板文件,我的模板文件如下template.htm:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><#PageTitle#></title>
</head>

<body>
 <#article:title#>
 <#article:content#>
</body>
</html>

        请注意:我使用<#article:title#>做为变量,这样的话,在进行文件替换的时候我就会查询包含此变量的内容进行替换。

        模板文件创建后,就是静态化处理的核心部分,代码如下:

<%
filename="Template.htm"
'tt.txt是模板文件
Dim objFSO,objCountFile,FiletempData
' 创建FSO文件对象
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FSOFileRead = objCountFile.ReadAll
'response.write FSOFileRead&"<br>"
FSOFileRead = replace(FSOFileRead,"<#PageTitle#>","杰之蓝")
FSOFileRead = replace(FSOFileRead,"<#article:title#>","杰之蓝Asp静态生成技术")
FSOFileRead = replace(FSOFileRead,"<#article:content#>","杰之蓝Asp静态生成技术详细内容。")
Response.write FSOFileRead
objCountFile.Close


Set fso = Server.CreateObject("Scripting.FileSystemObject")
'fso.CreateFolder(Server.MapPath(folder)) 创建文件夹
Set fout = fso.CreateTextFile(Server.MapPath("aaa.html"))
fout.WriteLine FSOFileRead
fout.close

%>

 请注意:<#PageTitle#>,<#article:title#>,<#article:content#>这三个变量为我在模板页面中使用,此处将这些变量变成真实的值;对文件替换完成后,就对进行文件的创建,此处要求您的服务器可以使用FSO对象,我将文件生成后放在于模板文件同级的目录下,当然如果你要创建在别的目录下的时候你就要将创建文件夹那个注释放开,然后添加上你自己的目录;文件创建完成后一定记得关闭FSO对象。

方法二:读取Url地址生成静态文件

        这种方法就像上面所说的是通过读取URL地址,然后提取URL地址中的内容,最后再生成相应的静态文件。

        下面来看具体代码:

<%
'///////////////////////////////////////////////////////////////////////////////
'//              ASP生成静态
'// 作    者:    杰之蓝
'// 版权所有:    www.52cfml.com
'// 技术支持:    www.52cfml.com
'// 开始时间:    2010-07-16
'// 最后修改:   
'// 备    注:   
'///////////////////////////////////////////////////////////////////////////////

response.write "<textarea cols=""79"" rows=""30"">"&GetHttpPage(("http://www.52cfml.com/"),"gb2312")&"</textarea>"

'函数名:GetHttpPage
'作 用:获取网页源码
'参 数:HttpUrl ------网页地址,Cset 编码
'===============================================
Function GetHttpPage(ByVal URL, ByVal Cset)
 Dim BlockStartTime
 On Error Resume Next
 Dim Http
 If IsNull(URL)=True Or Len(URL)<18 Or URL="$False$" Then
    GetHttpPage="$False$"
    Exit Function
 End If
 BlockStartTime = Timer()
 Set Http=server.createobject("MSXML2.XMLHTTP")
 Http.open "GET",URL,False
 Http.Send()
 '循环等待数据接收
 Dim temp,BlockTimeout
 BlockTimeout = 64
 While (http.ReadyState <> 4)
 ' 判断是否块超时
    temp = Timer() - BlockStartTime
    Response.Write(Timer())
    If (temp > BlockTimeout) Then
  http.abort
  Set Http=Nothing
  GetHttpPage="$False$"
  Exit function
  Response.End
    End If
    http.waitForResponse 10000'等待1000毫秒
 Wend
 
 If Http.Readystate<>4 then
    Set Http=Nothing
    GetHttpPage="$False$"
    Exit function
 End If
 GetHTTPPage=BytesToBstr(Http.responseBody,Cset)
 Set Http=Nothing

 If Err.number<>0 then
    If IsNull(URL)=True Or Len(URL)<18 Or URL="$False$" Then
  GetHttpPage="$False$"
  Exit Function
    End If
    Set Http=Nothing
    Err.Clear
 End If

End Function

Function BytesToBstr(body,Cset)
 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 = Cset
 BytesToBstr = objstream.ReadText
 objstream.Close
 set objstream = nothing
End Function
%>

        上述两种方法都可以生成静态文件,只不过每种方法的侧重点不同,有需要的朋友可以根据自己的需要选择相应的方法,当然真实环境下必须有数据库的支持,由于本文只是例子,就没有结合数据库实现,有需要的朋友可以根据自己的需要建立相应的数据库,对于方法一来说,模板变量的命名必须是前期定义好的。

        希望对朋友们有所帮助。

作者博客:www.52cfml.com

0
0
分享到:
评论

相关推荐

    ASP页面的客户端开发环境 文献中英对照

    总结来说,虽然ASP的主要作用是提供服务器端的动态内容生成,但通过将某些ASP页面转换为静态HTML,可以在性能、用户体验和离线访问等多个方面带来好处。这样的工具和策略是优化ASP应用的重要手段,特别是在平衡动态...

    asp复活小说吧源码

    后台:/admin/index.asp ...四、静态图书生成模块 五、广告管理模 六、后台管理模块 网站的核心内容,功能如下: 1、系统参数配置 2、网站数据备份 3、在线执行SQL 4、作品管理 5、作品采集

    缤纷夏日网址导航源码_个性双列布局 v20160522.rar

    缤纷夏日网址导航_带后台版 ---此为带后台ASP版本可生成静态或动态运行,方便站长登陆后台编辑管理网址与分类. 缤纷夏日网址导航_无后台版 ---此为无后台纯静态html版本,建议很少维护网站的站长使用此版(更...

    个性化导航之简约版(带后台) v20160523.rar

    A1-1.0之简约版_带后台版 ---此为带后台ASP版本可生成静态或动态运行,方便站长登陆后台编辑管理网址与分类. A1-1.0之简约版_无后台版 ---此为无后台纯静态html版本,建议很少维护网站的站长使用此版(更简约,...

    毕业设计,基于ASP+ACCESS开发的新闻发布系统,内含完整源代码,数据库,毕业论文

    毕业设计,基于ASP+ACCESS开发的新闻发布系统,内含完整源代码,数据库,毕业论文 现在通过网络阅读新闻已经成为人们日常生活中的一部分。网易、搜狐等著名网站都开设有新闻专栏,每天发布大量新闻信息。因为每天...

    阿赛企业网站系统 17.rar

    全站生成静态HTML网站的功能,同时支持多种生成静态HTML网站的模式选择,自动生成、仅生成一些指定的页面等;自带全站频道与分类的导航地图生成/?map.html;支持sitemap在线生成,及xml搜索引擎蜘蛛文件系统生成;...

    安信单商户网店系统 v20190610.rar

    批量生成静态页面功能:用于前台修改布局、模版文件等,重新更新静态页面。 (1)生成商品静态页; (2)生成新闻资讯页; (3)生成帮助中心说明页; 6.新闻资讯管理 (1)系统参数配置:配置网站名称、浏览量统计代码...

    [ASP]xiaoshuoguanli整站系统

    静态页面生成(可選) HTML生成包括 網站首頁(模版自行設計) 长篇作品列表页(模版自行設計) 长篇作品资料页(模版自行設計) 长篇作品目錄頁(模版自行設計) 长篇作品分卷閲讀頁(模版自行設計) 长篇作品...

    单用户微信商城管理系统(无限版)v20190629.rar

    批量生成静态页面功能:用于前台修改布局、模版文件等,重新更新静态页面。 (1)生成商品静态页; (2)生成新闻资讯页; (3)生成帮助中心说明页; 6.新闻资讯管理 (1)系统参数配置:配置网站名称、浏览量统计代码...

    3C手机电脑数码商城系统

    批量生成静态页面功能:用于前台修改布局、模版文件等,重新更新静态页面。 (1)生成商品静态页; (2)生成新闻资讯页; (3)生成帮助中心说明页; 6.新闻资讯管理 (1)系统参数配置:配置网站名称、浏览量统计代码、...

    3C手机电脑数码商城v1.0.0免费版

    批量生成静态页面功能:用于前台修改布局、模版文件等,重新更新静态页面。 (1)生成商品静态页; (2)生成新闻资讯页; (3)生成帮助中心说明页; 6.新闻资讯管理 (1)系统参数配置:配置网站名称、浏览量统计代码、...

    安信微信商城管理系统 微信商城网站源码 微信销售平台源码

    批量生成静态页面功能:用于前台修改布局、模版文件等,重新更新静态页面。 (1)生成商品静态页; (2)生成新闻资讯页; (3)生成帮助中心说明页; 6.新闻资讯管理 (1)系统参数配置:配置网站名称、浏览量统计代码、...

    精仿360网址导航源码2016三月版 v20160331.rar

    精仿360源码2015六月版_带后台版 ---此为带后台ASP版本可生成静态或动态运行,方便站长登陆后台编辑管理网址与分类. 精仿360源码2015六月版_无后台版 ---此为无后台纯静态html版本,建议很少维护网站的站长使用...

    精仿360网址导航源码

    精仿360源码2015.11月版_带后台版 ---此为带后台ASP版本可生成静态或动态运行,方便站长登陆后台编辑管理网址与分类. 精仿360源码2015.11月版_无后台版 ---此为无后台纯静态html版本,建议很少维护网站的站长使用...

    阿赛企业网站系统 v19.zip

    全站生成静态HTML网站的功能,同时支持多种生成静态HTML网站的模式选择,自动生成、仅生成一些指定的页面等; 自带全站频道与分类的导航地图生成/?map.html; 支持sitemap在线生成,及xml搜索引擎蜘蛛文件系统生成...

    安信微信商城管理系统(免费无限版) v2.9.1微信销售平台源码

    4.批量生成静态页面 5.新闻资讯管理 系统测试: 前台用户测试帐号:user001 密码:123456 超级管理员测试帐号:admin 密码:admin888 测试地址:http://域名/s_admin/login.asp 安信单用户微信商城管理系统v2.9.1...

    基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客?.doc

    此外,由于静态文章生成器的局限性,如不能直接支持评论互动和更新推送,作者决定采用后端渲染技术,提供更好的SEO效果。 在功能上,StarBlog将实现以下几点: 1. 支持本地Markdown文章批量上传导入,自动解析分类...

Global site tag (gtag.js) - Google Analytics