一般用.net生成静态化网页方法有两种,一般是通过浏览器去触发动态的.aspx文件来达到解析网页,然后再生成网页,这种方法我们不用(因为这种方法需要浪费比较大的服务器性能,而且速度比较慢,一秒大概只能生成10个网页左右),所以我们今天要讲的是第二种方法,写一个网页模板,然后再用.net去解析标签,然后以完成这一个生成网页静态化功能(独占网络(http://www.sz886.com)-深圳网站建设-http://www.sz886.com技术人员测试过1秒可以生成100多个网页,性能非常好而且稳定,如果在开启多线程的情况,用户体验效果也非常好。)
先我们生成网页化网页需要用到的技术就有I/O流的文件读写,然后我们再会用到正则表达式去解析标签,多我们再用多线程去保证稳定还有速度。
先我们建立一个叫duzhan.html(主文件),还有一个top.html(头部文件)
我们在头部文件里面写信息如下:
这是网页的头部文件,头部文件来源了深圳市独占网络科技有限公司(http://www.sz886.com)
然后我们写入duzhan.html(主文件)的代码是
<!doctype html>
<html>
<head>
</head>
//这是要解析的头文件,刚才是上面的我们写的Top.html文件
<!--include file="Top.html" /-->
//这是一个循环的解析标签,我们下面会用到,我们这里先写在这里
<!--list table="1" typeid="1" num="10" where=" 1=1 " order="sortid asc,id asc" -->
//这是一个判断的标签,我们这里也是先写在这里,下面会讲到
<!--if testbase="@index@" testvalue="1" testmodel="=" -->
<li><a href="/zhishi/112109.html"><img rel="" src=""/></a></li>
<!--else-->
<li><a href="/zhishi/112109.html"><img rel="" src=""/></a></li>
<!--/if-->
<!--/list-->
</body>
</html>
现在我们已经把两个网页的模板写好了,接下面我们就是要解析好我们写的标签,然后去生成它。
先我们建一个CreateFile.cs文件来放置读写文件的方法。
//这是一个创建新静态页面信息,newsStrWebInfo是一个传入我们传入的参数(用于替换原有的信息)
public static string CreateSingleFile(string strModeFilePath)
{
//创建一个读文件信息的文件流
StreamReader strReader = null;
//查找出模块文件在服务器里面的路径,这里不用Server.MapPath,在多线程的时候会有问题
string FilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + strModeFilePath;
//怎样一个编号为Utf-8的信息
Encoding code = Encoding.GetEncoding("utf-8");
//创建一个strAllInfo字符串用于存放我们读取的信息
string strAllInfo = string.Empty;
try
{
//得到一个读取的文件流,文件路径为FilePath,编码为code
strReader = new StreamReader(FilePath, code);
//读取文件流里面的全部信息然后存放在strAllInfo里面去
strAllInfo = strReader.ReadToEnd();
}
catch (Exception ex)
{
throw ex;
} finally
{ //关闭读取文件流
strReader.Close();
}
return strAllInfo;
}
然后我们再写一个入的方法。
public bool CreateWriteFile(string strNewsFilePath, string strFileinfo)
{
bool flag = false;
//创建一个写文件信息的文件流
StreamWriter strWrite = null;
//怎样一个编号为Utf-8的信息
Encoding code = Encoding.GetEncoding("utf-8");
try
{ //创建一个写入文件流
strWrite = new StreamWriter(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + strNewsFilePath, false, code);
//将刚才记取到的信息写入到文件流里面去
strWrite.Write(strFileinfo);
//创建成功就true
flag = true;
}catch (Exception ex)
{
throw ex;
} finally
{ strWrite.Flush();
//关闭文件流
strWrite.Close();
}
return flag;
}
上面的定义了读取的模板还有生成模板的方法了,我们接下来就是建立一个解析标签的方法。
我们就建立一个 DuZhanTag.cs文件
我们建立一个生成网页的方法
public void createDefault(string htmlpath, string filename)
{
//将我们刚才写的duzhan.html文件路径写进去然后读取到信息
string html = CreateFile.CreateSingleFile(htmlpath);
//如果读取的信息没有读取到信息我们就返回回去。
if (string.IsNullOrEmpty(html))
{ return; }
//解析我们的标签,这个方法我们在下面定义。
html=CreateIncludeHtml(strAllInfo);
//生成文件
new CreateFile().CreateWriteFile(filename, html);
}
由于网页放不下,所以我们把下面的方法写在
.net快速生成静态网页的方法二