admin 管理员组文章数量: 1086019
2024年5月8日发(作者:资源管理器三个快捷键)
维普资讯
第25卷第1期
2008年1月
计算机应用与软件
Computer Applications and Software
VoI_25 No.1
Jan.2oo8
ASP.NET下利用动态网页技术生成静态HTML页面的方法
白金牛 李慧萍 王培吉
(包头医学院网络与信息中心
(内蒙古科技大学理学院
内蒙古包头014010)
内蒙古包头014010)
摘 要 介绍了一种在ASP.NET环境下利用动态网页技术生成静态HTML页面的方法。利用这种技术,网站内容管理人员在添
加网页时直接利用后台管理发布程序就把页面存放成HTML静态文件,它有生成页面简单、快速的优点。这种技术对于访问量大的
网站尤其适用,可以减轻服务器端运行程序和读取数据库的压力,提高了网站的数据存取效率,生成的静态页面也更利于搜索引擎
收录。
关键词 ASP.NET动态页面静态页面C撑
THE METHoD oF GENERATING STATIC HTML PAGES
WITH DYNAMIC WEB PAGE TECHNIQUE IN ASP.NET
Bai Jinniu Li Huiping Wang Peiji
(The Network Information Center,Baotou Medwal College,Baotou 014010,Neimenggu,China)
。(1 ̄ttiute ofScience,Inner Mongolia University ofSciece and Technolnogy,Baotou 014010,Neimenggu,China)
Abstract A method of generating static HTML pages with dynamic web page technique in ASP.NET is introduced.With this method,the
web site administrators can build static HTML web page files when he adds the contents.The methed can create web pages simply and quick—
ly.It is especiMly suitable for web site which is accessed by many visitors.The burden upon the server which has to RiB the programs and read
the data of database is lessened,and the data access performance of the web site is enhanced.These generated static web pages can be easily
included by search engine.
Keywords ASP.NET Dynamic HTML page Static HTML page C撑
方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的
0 引 言
动态网页开发技术中,为了降低网站维护的工作量,常常用
到动态页面技术。目前因特网上流行的做法是将网站中需要经
常更新的数据存放到数据库中,当客户端浏览器向服务器发出
响应时间,所以,就有了把动态网页“静态页面化”的做法,当前
很多网站都采用这种技术(新浪、网易、搜狐等大型网站),这些
静态页面显然不是一页一页手工做成的,那么,能否有更好的解
决办法呢?
HTFP请求时,服务器通过执行、解释某个程序,将运行结果以
HTML格式传送至客户端浏览器,客户端浏览器接收、解释并显
1解决思路
要解决这样的问题,一般都在网站的管理后台有一个网页
示。但服务器在执行这些程序时一般都要从数据库中查询并读
取记录 ,这些操作都是以效率作为代价的。因为服务器端在
执行程序时,查询、读取数据库中的数据,再生成这种HTML格
式代码的过程显然需要消耗服务器资源,随着数据库中记录的
不断增加,对访问量较大的网站来说会出现服务器的负担过重
的情况。
信息发布程序,在网站内容管理员添加网页时直接利用管理后
台的网页信息发布程序把页面存成HTML静态文件,同时将类
似于文章标题,关键字等放到了数据库,而文章内容存储在页面
里生成静态文件,搜索时做文件型全文搜索,这种页面从最终的
结果来看是静态的,但它是通过动态技术生成的。
对于静态页面来说,由于其页面本身存储的就是HTML静
态文件,浏览器在访问这样的页面时,直接从服务器端把这些静
2实现方法
利用如Dreamweaver这样的工具生成html格式的静态页面
态文件中的HTML代码传递到客户端浏览器即可。因此,在访
问速度上,静态页面要比动态页面快很多。但是由于静态页面
的灵活性较差,如果不借助数据库或其他的设备保存相关信息
的话,整体的管理上比较繁琐,比修改编辑、阅读权限限制等,但
是,对于一些我们经常频繁使用的文件,例如我们开发的新闻发
布系统,我们不希望很多用户都读取数据库才显示结果,这样一
模板,在需要动态更新内容的地方加入特殊标记(如下例的¥
收稿13期:2007—06—25。国家计委西部大学校园计算机网络建设
工程项目(20012437)。白金牛,副教授,主研领域:计算机网络及应用。
维普资讯
80 计算机应用与软件 2008生
htmlkey[0]、¥htmlkey[1]、¥htmlkey[2]等标记),在后台管理
程序中利用代码读取此模板,然后获得前台表单输入的内容,利
用输入的这些内容替换模板中特殊标记位置的标记,将最终替
换过的所有模板代码生成HTML文件,生成新文件名后写入磁
盘,写入后再向数据库中写入相关数据。
.
下面以一个具体的实例给出在ASP.NET环境下利用c#语
言编程的实现方法步骤。
Step 1在ASP.NET环境下新建一个ASP.NET Web应用
程序项目dyn—news,在该项目下建立fabu.aspx文件;再建立一
个newHTML文件夹,在该文件夹下创建一个网页模板,模板文
件名为template.html,其HTML代码如下:
<html>
<head>
<title>¥htmlkey[0]</title>
<meta http—equiv=”Content—Type
charset=gb2312”>
</head>
<body>
<table Shtmlkey[1]height=”100%”border=”0”width=”100%”cell—
padding ”10”cellspacing=“0”bgcolor:”#eeeeee”ID=”Tablel”>
<tr><td height:”42”align=”left“valing=”middle”>
<div aling ”center”>
<span style=”color:red;font—size:20”>¥htmlkey[2]</span>
(/div>(/td>(/tr>
<tr><td aling=”left”valing=”middle”><span style:”color:
htmlkey[3];font—size:¥htmlkey[4]’’>¥htmlkey[5]</span></td>
</tr>
</body>
</html>
在上面的模板中将网页中的固定信息填入,对动态更新的
信息用一些固定的标记标记出来,以准备用一段程序进行替换。
上面模板中的¥htmlkey[0]~¥htmlkey[5]等标记就是要被替
换的信息。
Step 2打开fabu.aspx文件,从工具箱中拖入两个TextBox
控件分别命名为txtTitle,txtContent,一个Button按钮控件命名为
btnCreate,将其Text属性设置为“创建HTML文件”,再拖入Hy-
perLink控件命名为hyCreateFile,在属性中将Text设为“查看
HTML文件”,fabu.aspx页面的设计界面如图1所示。
容
剑建 工 垃l; 圭 盘
图1 fabu.aspx设计界面
Step 3双击btnCreate按钮进入到fabu.aspx.as后台代码
中,添加如下程序代码:
using System;
//一些导人命名空间的语句,这里从略;
using System.IO;
//导人对文件操作命名空间
using System.Text;
//导入对字符块操作命名空间
namespace dyn
news
—
public class fabu:System.Web.UI.Page
protected System.Web.UI.WebContmls.TextBox txtTitle;
protected System.Web.UI.WebContmls.TextBox txtContent;
protected System.Web.UI.WebContmls.HyperLink hyCreateFile;
protected System.Web.UI.WebContmls.Label Labell;
protected System.Web.UI.WebContmls.Label Label2;
protected System.Web.UI.WebContmls.Button btnCreate;
private void btnCreate
_
Click(object sender,System.EventArgs e)
{
stirng[]newContent=new stirng[6];
//定义和html标记数目一致的数组
StirngBuilder strhtml=new StringBuilder();//为连接大量的字符
串,建立一个StringBuilder类的实例,因为StirngBuilder.Append连接字
符串的方法是非常快的。
try;
//创建SteramReader对象,以读取模板文件template.html
using (SteramReader sr: new StreamReader(Server.MapPath(”
newHTML”)+”\\\template.html”))
{Stirng oneline;
//读取指定的HTML文件模板
while((oneline:sr.ReadLine())!=nul1)
{ strhtm1.Append(oneline);
//将读出的模板HTML文件中的一行连接strhtml到strhtml后面
I
sr.Close();
catch(Exception err){
//错误捕获
Response.Write(err.ToString());
//输出异常信息
//以下为标记数组赋值
newContent[0]=txtTitle.Text; //标题
newContent[1]:”hgColor:#FFFFFF”; //背景色
newContent『2]=txtTitle.Text; //文章标题
newContent[3]:”#000000”; //字体颜色
newContent[4]=”12px”; //字体大小
newContent[5]=txtContent.Text; //发布的信息内容
//以下根据上面新的内容生成静态html文件
tyr{
//指定要生成的静态HTML文件名,这里用生成文件时年月日时分
秒命名
string fname:Server.MapPath(”newHTML”)+”\\’_+DateTime.
Now.ToStirng(”yyyymmddhhmmss”)+”.html”;
//替换html模版文件里的标记为新的内容
f0r(int i:0;i<6;i++)
{strhtm1.Replace(”¥htmlkey[”+i+”]_’,newContent[i]);//用数
组newContent中相应元素//newContent[i]的内容替换模板文件中特殊
标记Shtmlkey[i]处的内容
FileInfo ifnfo:new Filelnfo(fname); // ̄,j建文件信息对象
//以打开或者写入的形式创建文件流
using(FileSteram fs=finfo.OrenWrite())
{//以下根据上面创建的文件流创建写数据流
StreamWriter sw=new
维普资讯
第1期 白金牛等:ASP.NET 7- ̄,J用动态网页技术生成静态HTML页面的方法 8l
StreamWriter(fs,System,Text.Encoding,GetEncoding(”GB2312”));
JB的值分别是0.2、0.3、1.1、0.8。程序中自适应缓存消息长度
//把新的内容写到创建的HTML页面中
大于20则认为系统繁忙,而最优缓存、固定缓存的队列长度则
SW.WriteLine(strhtm1);
为无穷大。
SW.Flush(); //发送缓冲区中的输出
SW.Close();
//设置超级链接的属性,使链接指向刚生成的静态HTML文件
hyCreateFile.Text=DateTime.Now.ToString(”yyyymmddhhmmss”)
+”
,
html”:
hyCreateFile.NavigateUrl:’’newHTML/”+DateTime.Now,ToString
图3横轴为A ,A =250 图4 A。=1.0,横轴为A
catch(Exception err){
图3、图4是模拟程序的两个运行结果,图中竖轴为响应时
Response.Write(err.ToString()); //显示出错信息
间,单位为秒。从图中可以看出,虽然自适应缓存会发生抖动,
但在大多数情况下其性能要好于固定缓存。对其它负载情况进
行模拟,包括A。固定、逐渐上升、逐渐下降、随机及A 固定、逐
渐上升、逐渐下降、随机等l5种负载模式(其中两者都固定不作
讨论),这些负载情况下的模拟结果都支持上述结论。限于篇
Step 4将上面的fabu.aspx设为项目起始页,进行编译并
幅,不在此给出其它的模拟结果。
调试运行,在fabu.aspx页面上输入主题和内容文本框对应的信
息,点击“创建HTML文件”按钮,便可将要发布的信息生成静
态HTML页面,再点击“查看刚发布的HTML文件”,便可打开
5相关工作及未来工作
刚生成的静态HTML页面。
文献[1,2]对本文使用的缓存结构进行了比较详细的描
述,但是他们没有讨论自适应的问题。文献[3,4]讨论了缓存
3结束语
数据无效规则及无效规则的优化。
通过对缓存系统的性能模型进行分析,缓存的数据不一定
用上面的方法可以方便地生成静态HTML文件。程序使用
是越大越好。当缓存的数据越多时,缓存系统节省的查询时间
了循环替换,因此对需替换大量元素的模板速度非常快。
可能小于更改带来的广播时间,从而导致系统性能下降。因此,
实际应用中,这种方法特别适合用在后台数据库功能不强
缓存应当随着系统的不同情况进行自适应。确定缓存调整时机
的Web站点,即大部分文本不是存放在数据库的记录中,而是
和如何进行调整的算法都相对比较简单,因而较容易实现。
放在html文件或者xml文件中 ,仅仅把索引放到数据库中,
为了尽量不增加缓存系统的额外负担,这里给出的调整算
如文章标题、类别、查询关键字等。这样适合于后台没有诸如
法和确定调整时机的算法都是比较简单的,它们是一种次优的
MS SQL Server这样的较大型数据库支持的Web站点。
算法。是否还存在更简单易行的算法,或者计算量大致相同而
以上程序在Microsoft Visual Studio.Net 2OO3环境下调试通过。
更优化的算法,可以作更进一步的研究。
参考文献
文中调整算法对确定了一类数据后,在缓存中对整类数据
进行增加或清除,这一方法非常简单,但被处理的缓存数据块的
[1]聂常红.ASP.NET开发Web应用程序的方法解析[D].中山大学,
粒度较大,可能使缓存的性能急剧降低到与无缓存时相若。在
2004.
确定一类数据要进行增加或清除后,不将这类数据全部增加或
[2]麻昌德,易高翔.使用ASP.NET/Web服务实现新闻发布系统
[J].计算机应用与软件,2004(10):42—43.
清除,而是根据某种算法确定其缓存块的大小,这一算法也值得
深入研究。
(上接第52页)
参考文献
在式(9)中,n(1一∽A。就是服务器消息等待队列中查询消
[1]Stamatelopoulos F,Maglaris B.Performance and Efifciency in Distribu—
息的个数。服务器只需选取1或多个队列长度的消息进行统计,
ted Enterprise Management.Journal of Network and Systems Manage—
就可以确定n(1一∽A 和A 。参数8 为经验值常数。
ment,Special Issue on Enterprise Network and Systems Management,
1999,7(1).
4模拟检验
[2]Rafael Alonso,Daniel Barbara,Hector Garcia molina.Data Caching Is.
sues in an Information Retireval System.ACM Transactions on Database
为了验证以上算法,我们编制了模拟程序进行了验证。验
Systems,1990:15(3):359—384.
证程序对四种缓存的响应时间进行比较:无缓存(h:0)、最优
[3]Daniel Pfeifer,Hannes Jakschitsch.Method—based Caching in Multi.
Tiered Server Applications.Technical Report#2003—1 1.http://
缓存(使响应时间最小的缓存比例)、自适应缓存(缓存在0—
wwW.ipd.uka.de/~pfeifer/publications/techreport 2003
—
1 1.pdf.
0.19之间)、固定缓存(h=0.15)。自适应缓存选取的最大比例
[4]Candan K Selcuk,WenSyan Li,et a1.Enabling Dynamic Content Cac—
为0.19,是考虑现实中 很难达到1。 .
hing for Database—Driven Web Sites.ACM SIGMOD 2001 May:2 1—
模拟程序中,缓存系统参数仍然采用表1中的参数,8 、
24,Santa Bal-bal31,California,USA.
版权声明:本文标题:ASP.NET下利用动态网页技术生成静态HTML页面的方法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1715178568a686175.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论