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
%>
上述两种方法都可以生成静态文件,只不过每种方法的侧重点不同,有需要的朋友可以根据自己的需要选择相应的方法,当然真实环境下必须有数据库的支持,由于本文只是例子,就没有结合数据库实现,有需要的朋友可以根据自己的需要建立相应的数据库,对于方法一来说,模板变量的命名必须是前期定义好的。
ASP专栏——ASP生成静态文件(用于大量文章)的更多相关文章
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
基于 Vue.js 之 iView UI 框架非工程化实践记要 像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...
- ASP.NET Core使用静态文件、目录游览与MIME类型管理
前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了. ASP.NET Core则不同,因 ...
- phpcms V9 修改生成静态文件路径/html
在论坛看到部分用户反馈这个问题,要修改的其实是html_root的值,默认是"/html"如果要生成在网站根目录的话,这个值则要为空.论坛上现在看到的办法是打开caches\con ...
- 用include()和ob_get_contents( )方法 生成静态文件
1. 生成静态文件可以在打开缓冲区的前提下,用include()方法去包含要执行的动态文件,这样该动态文件就会在缓冲区中执行,执行完毕后的静态HTML代码就保存在缓冲区中,然后用ob_get_cont ...
- [js高手之路]Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件
接着这篇文章[js高手之路]Node.js+jade抓取博客所有文章生成静态html文件继续,在这篇文章中实现了采集与静态文件的生成,在实际的采集项目中, 应该是先入库再选择性的生成静态文件.那么我选 ...
- ASP生成静态文件编码为UTF-8格式的HTML文件
一般在ASP环境下,运行动生静操作时都用到的是FSO,FSO是专门对文件进行操作的一个组件,FSO的编码属性只有三种,系统默认,Unicode,ASCII,并没有utf-8,所以一般中文系统上使用FS ...
- asp.net core 控制静态文件的授权
静态文件访问在网站中是一项重要的服务,用于向前端提供可以直接访问的文件,如js,css,文档等,方法是在Startup的Configure中添加UseStaticFiles()管道. 参考:ASP.N ...
- 这样入门asp.net core 之 静态文件
本文章主要说明asp.net core中静态资源处理方案: 一.静态文件服务 首先明确contentRoot和webroot这两个概念 contentRoot:web的项目文件夹,其中包含webroo ...
- ASP.NET MVC生成静态页面
1.先付上封装好生成静态页的原代码: public class Common { #region 获取模板页的Html代码 /// <summary> /// 获取页面的Html代码 // ...
随机推荐
- LineNumberReader类的使用
package com.lk.C; import java.io.IOException; import java.io.LineNumberReader; import java.io.PrintW ...
- Java Script基础(四) BOM模型
一.BOM模型 BOM模型(Browser Object Model),也称为文档对象模型,它包含浏览器相关的属性和方法,例如操作,前进后退按钮,控制地址栏,关闭浏览器窗口,打开新窗口等等.它包含的对 ...
- C++ 中的virtual关键词
C++ 中的virtual关键词 动态绑定 所谓动态绑定,我的理解就是一个函数在调用之前无法得知参数的具体类型(基类还是派生类).C++ Primer上描述了两种动态绑定的情况: 要触发动态绑定,必须 ...
- VMware系统运维(十)部署虚拟化桌面 Horizon View 5.2 Connection Server安装
部署桌面虚拟化,首先得安装连接服务器,下面我们开始安装Connection Server. 1.下载并安装以下软件,提示:只能在Win2008R2上安装,Win2012R2无法安装. 2.双击打开程序 ...
- cookie与session的区别与联系
cookie是什么? cookie是存在于客户端(浏览器). cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的.浏览器检查所有存储的cookie,如果某个cookie所声明的作用范 ...
- 剑指Offer27 数组中超过一半的数
/************************************************************************* > File Name: 27_MoreTh ...
- 分享一个关于jackson的Json工具类
直接贴代码: import org.codehaus.jackson.map.DeserializationConfig.Feature; import org.codehaus.jackson.ma ...
- codevs3732==洛谷 解方程P2312 解方程
P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录 题目描述 已知多项式方程: a ...
- C++之linux下文件结构实现
/********** huangsy13@gmail.com FileStruct.h **********/ #ifndef FILESTRUE #define FILESTRUE #incl ...
- Varnish缓存服务器的搭建配置手册
Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...